LEFログ:学習記録ノート

leflog: 学習の記録をどんどんアップしていきます

【チェックリスト】エラーが出たときのチェック項目をまとめてみました!

Errorはつらいよ

地球の皆さん、おはこんばんちは! LEF(レフ)です。🌏🌞🐘

エラーが発生したときにやるべきことを、自分なりに箇条書きにしてまとめてみました!

初めフローチャートにして書こうと思ったのですが、順番を決めるとそれはそれで選択肢が狭まってしまうような気がしたので、箇条書き(チェックリスト)にしてまとめてみました。

とりあえず暫定的なものなので、他にもあったら随時更新してみたいと思います!

エラーが出たときのチェックリスト

  • エラーメッセージを読む
  • エラーメッセージを読む
  • エラーメッセージを読む(重要なので3回)
  • エラーメッセージを読んでその指示に従う
  • エラーメッセージの英語を翻訳して意味を取り違えていないか確認する
  • エラーメッセージをコピペしてググる
  • エラーメッセージの前後のメッセージをコピペしてググる
  • 発生している問題をパラフレーズ(言い換え)してググる
  • 発生している問題に関係してそうな事象をググる
  • 発生している問題を英語などの他の言語でググる
  • 何度かアップデートをしてみる
  • アップデート後にもう一度インストールや実行してみる
  • アンインストールしてから、もう一度インストールしてみる
  • 関連するキャッシュを削除してみる
  • コマンドでググる
  • 直前直後のコマンドでググる
  • ログを見る
  • 公式ドキュメントを色々調べてみる
  • 文字の打ち間違えがないか確認する
  • 自分の環境(OSの環境など)にインストール方法が適合しているかを確認する
  • 管理者権限(sudo)を使うかどうかを確認する
  • 色んな設定を確認する
  • 色んな設定を隅から隅までくまなく操作してみる
  • 基本的な知識が抜け落ちていないか順を追って確認する
  • 再起動する
  • 過去の設定が実は一時的な設定になっていて消えてしまった可能性を考える
  • バックアップしてから諸設定をリセットする
  • 問題を文章化する
  • 問題を図式化する
  • Twitterで検索してみる
  • YouTubeで検索してみる
  • Slackのコミュニティで質問してみる
  • Discordのコミュニティで質問してみる
  • 誰かに質問する
  • 誰かに画面を見てもらう
  • 障害が発生していないか調べる
  • バグの可能性を疑う
  • 自分ではなく設計者側や作成者側が間違っていないか検討する
  • 拡張機能をいったん無効にする
  • 画面表示がちゃんと更新できているか確認する
  • 電源が入っているか確認する
  • 関連するソフトがちゃんと起動しているか/ちゃんと終了しているか確認する
  • キー設定を見直してみる
  • コードが故障していないか調べる
  • Escキーを押して見る
  • コンピューターウイルスに感染していないか調べる
  • パソコンの不調を疑う
  • そもそも実はエラーじゃなかった(エラーだと思いこんでいた)可能性
  • とりあえず睡眠を取る

更新日:2022-04-19

  • 色んな検索エンジンで検索してみる。Googleだけでなく、BingやDuckDuckGoなども使ってみる。
  • 連携しているソフトウェア(アプリ)の設定にミスはないか確認
  • ハッキングされていないか確認
  • パス(PATH)を確認
  • コメントアウトされていないか確認
  • 誰かが同じデータを操作していないか(同時接続していないか)
  • エイリアスをいたずらされていないか
  • 誰かの悪意によるものなのか検討(コードハラスメントの可能性)
  • 互換性を調べる
  • フォルダやファイルの名前が変更されていないか確認する
  • 別のソフトを使ってみる
  • エラーを解決するのを諦める(補足:解決しないほうがコストに見合う場合もある。無理にエラーを解決しようとして余計にゴチャゴチャになってしまったり、あるいは解決するコストに見合わない改善の場合もある。分かるまで放置しておくのも一つの手)
  • パソコン内部の部品の故障
  • ルーターの故障
  • 思い込みがないかじっくり考えてみる
  • 公式ドキュメントのコード例を眺めてみる
  • 公式ドキュメントで足りないと思ったら、検索してその他のコード例も眺めてみる
  • 実際に動いているコードの正解例を眺めてみる
  • 一文字単位で違いがないか検証してみる(例:自分はコードの書き方をab:だと思っているが、実はa:b:だったり)
  • 単数形と複数形を打ち間違えていないか?(スペルミス)
  • 代入(=)と等号(==)を打ち間違えていないか?
  • ドット(.)を打ち忘れていないか?
  • 存在しない配列やクラスを呼び出していないか?(nilなど)

更新日:2022-05-01

以降は気の向いたときに追加していきます↓

  • 静電気の影響がないか?
  • 変換器などの中間機器に以上はないか?
  • 温度(排熱)は問題ないか?
  • BIOSに異常はないか?
  • キーボード設定に異常はないか?
  • KarabinerやPowerToysなどのKeyMap変更アプリに問題は生じていないか?
  • 別のブラウザで試してみる
  • 別のパソコンで試してみる
  • 別の回線で試してみる
  • Cookieやキャッシュを削除してみる
  • スマホで試してみる(スマホの回線で試してみる)
  • 過去に重要なコードを削除している可能性はないか?
  • AIに訊いてみる
    • AIをうまく活用するためには、何が問題であるかを発見する必要があり、なおかつ自分の思考を言語化してAIへと伝える必要がある。そのため「問題発見能力」と「言語化能力」が重要になってくると推察される。
    • ちなみに、AIも間違えることはあるので、公式ドキュメントを確認することは重要である。
    • また、「天動説が信じられている世界においては、AIは地動説を唱えない」という問題がある。つまり、AIの出す常識的な考えが、発想の妨げになる場合もあるので、柔軟な思考力を育むことも重要になってくる気がします。
  • パラメータに渡す引数の順番を間違えていないか
    • メソッドの内部ばかりに注意を取られると、外部でのデータの受け渡しや、その順序のほうに視点が向かなくなるので注意が必要。
  • エラーがどのあたりで発生しているかを二分探索的に絞り込んでいく
    • 徐々に範囲を狭めていく。確実なところをはっきりさせる。
  • オブジェクトの種類が間違っていないか?
    • 特にRubyなどでは、引数に渡すオブジェクトの型が違っていると、エラーが発生することがある。ActiveRecordのオブジェクトが必要なところで、Arrayオブジェクトを渡してしまっていたり。
  • 何が分からないかを言語化する
    • 適切な質問を考えたら問題の8割は解決済み
  • コードの実行場所を確認する
    • ターミナルを開いている場所が間違えていないか
  • 必要なパッケージをインストールしているか?
  • 必要なパッケージをアップデートしているか?
  • インフラでエラーが発生していないか?
  • 公式リポジトリにバグのIssue報告が挙がっていないか?
  • (思いついたら適宜追記します)