エラー解決までの7つのステップ – いい感じに質問する方法
概要
経験したことのないプログラムのエラーが起こった場合、どのように対応すれば良いか迷うことがあります。
「エラーの原因がよくわからない。でもすぐに質問するのは良くなさそう。かといって一人で悩んで時間をかけすぎてしまうのも良くなさそう。質問するタイミングが分からない...」といったようなことです。
この記事では、このような迷いを解消するために、以下のことを行っています。
- 原因調査から解決までのステップを明確にする
- 各ステップでやることを明確にする
- どこまで自力で進めて、どのタイミングで質問すれば良いかを明確にする
原因調査から解決までの7つのステップ
原因調査から解決までの流れを、以下の7つのステップにしました。
ステップ1:何が起こっているのかを把握する
ステップ2:エラーの原因は何かを予想する
ステップ3:エラーの原因を特定する方法を考え出す
ステップ4:エラーの原因を特定する
ステップ5:解決方法を考え出す
ステップ6:解決方法を選択する
ステップ7:エラーを解消する
以下、各ステップの詳細について、記載しています。
ステップ1:何が起こっているのかを把握する
まずは、何が起こっているのかを把握します。
把握するためには、以下のような方法があります。
- コンソールやブラウザ画面に出力されている情報を確認する
- ログファイルに出力されている情報を確認する
- デバッグツールに出力されている情報を確認する
これらの方法で集めた情報は、以下の観点で整理してまとめておきます。
- どういったことをしたら(ボタンを押すなど)
- どこに(ログファイルなど)
- どういう情報が出力されたのか(エラーコードなど)
注意すべき点として、情報と自分の考えを混同しないようにします。
情報を集めていると、「こういうことが起こっているんじゃないか」という考えが出てくるかもしれません。そうすると、情報と自分の考えを混同してしまう場合があります。
混同してしまうと、誤った思い込みで突っ走ってしまったり、質問した際に相手を混乱させてしまったりします。
まずは、自分の考えを入れないように注意して、情報を集めることに注力します。
また、この段階では、検索エンジンを使いません。検索エンジンで出てくる情報も、他人の考えであるためです。
情報が集まったら、ステップ2に進みます。
ステップ2:エラーの原因は何かを予想する
ステップ1で把握した事実をもとにして、原因は何かを予想します。
この時点では、予想した原因が正しいかどうかは気にしません。
正しいかどうかの判断は、ステップ3とステップ4で行い、うまく行かなかったら、ステップ2まで戻ってきます。
15分くらいの制限時間内で、以下のようなことを行います。
- 検索エンジンを使用して、関連する原因を探す(エラーコードで検索するなど)
- 自分の知識や経験をもとに、原因を予想する(過去に、似たエラーに遭遇していないか)
時間制限内で、原因を洗い出せることができたら、ステップ3に進みます。
原因を洗い出せることができなかったら、質問するタイミングとなります。
質問する際は、以下の情報を伝えます。
- 起こっているエラーの概要
- ステップ1で把握した情報
- 困っていること(問題の原因が思いつかない)
ステップ3:エラーの原因を特定する方法を考え出す
ステップ2で予想して洗い出した原因に対して、その予想が正しいかどうかを確認する必要があります。
15分くらいの時間制限を設けて、原因を特定する方法を考え出します。
例えば、以下のような方法があります。
- 挙動が怪しい箇所で変数の値を出力してみる
- 挙動が怪しい箇所のソースコードを削除してみる
- 変数が多い場合は、一時的に決め打ちの定数に置き換えてみる
- テストを追加してバグが再現できるか確認する
時間制限内で、考え出すことができたら、ステップ4に進みます。
考え出すことができなかったら、質問するタイミングとなります。
質問する際は、以下の情報を伝えます。
- 起こっているエラーの概要
- ステップ1で把握した事実について
- 現在洗い出している原因について
- 困っていること(原因の特定方法が思いつかない)
ステップ4:エラーの原因を特定する
ステップ3で考え出した方法をすべて実行していきます。
その結果、原因が特定できたら、ステップ5に進みます。
原因が特定できなかったら、予想した原因の中に正しいものがないということなので、ステップ2に戻って、他の原因を考え出します。
ステップ5:解決方法を考え出す
原因が特定できたら、解決方法を考え出します。
一つも解決方法が思い浮かばなかったら、質問するタイミングです。
質問する際は、以下の情報を伝えます。
- 起こっているエラーの概要
- ステップ4で特定した原因について
- 困っていること(解決方法が思いつかない)
解決方法が考え出せたら、それぞれの解決方法について、以下の点で検討しておきます。
- ざっくり工数(大・中・小)
- Pros/Cons
- 難易度
- 暫定対応/恒久対応
検討したら、ステップ6に進みます。
ステップ6:解決方法を選択する
ステップ5で考え出した解決方法の中で、何をやるのかを選択します。
工数が少なく恒久対応であるような解決方法があれば、それを選択して、ステップ7に進みます。
どの解決方法を取るべきかを判断に迷う場合は、質問するタイミングです。
質問する際は、以下の情報を伝えます。
- 起こっているエラーの概要
- 特定した原因について
- ステップ5で洗い出した解決方法について
- 困っていること(実行すべき解決方法が分からない)
ステップ7:エラーを解消する
ステップ6で決めた解決方法で、エラーを解消します。
まとめ
以上で、エラーが起こった場合の原因調査から解決までのステップを明確にし、また質問するタイミングも明確にしました。
このステップに沿えば、ある程度自力で進めつつ、適切なタイミングで質問をすることができるようになるのではないかと思っています。
お役に立てれば幸いです。