どもーグーです!
プログラミングを始めたばかりの方にとって、エラーメッセージにぶつかることは避けられないことですよね。
そこで、あなたはこの訳のわからないエラー文を引き下げ、周りの経験者たちに「エラーが出た!どうするのこれ!」と言って「答え」を聞こうとしますよね。
しかし、周りに経験者買いない方やエラーを理解できる方がいなかったらどうしましょう。
一人前のエンジニア(プログラマー)になるためには、自分でエラーメッセージを解読し、エラーを解消できるようになる必要があります。
エラーメッセージの原因の分類や、対処法。
これについては、やはり自分がどれだけエラーメッセージと向き合って、経験を重ねてきたかが鍵。
「答え」を聞いて、動いたからイイやで終わっているのでは、折角のエラーメッセージが台無しです。
エラーメッセージは、開発において重要な相棒です。間違いを指摘してくれ、正常なコードへ導いてくれます。
こんな心強い味方はいないので、メッセージを見た瞬間に目を瞑ったり、逸らしたりせず。ちゃんと向き合いましょう ^^
今回は、エラーメッセージとの向き合い方をお話しします。
エラーメッセージを「読む」
まずは読まないと何も始まりません。
「英語は苦手です」と言う声も聞こえそうですが、プログラミング言語も英語です。
一人前のエンジニアを目指すには、英語は避けて通れません。
Google翻訳等のサービスを駆使して、なんとなくでも内容を把握するように意識しましょう。
読むことを意識することで、メッセージのパターンや内容も段々とわかるようになり、
今後出会うであろう初見のエラーメッセージにも臨機応変に対応していけるようになっていきます。
ここでは、「読む」にあたっての簡単なコツを教えます!
エラーメッセージが出たら、まずは動詞がある短文を探せ!
undefined method ‘~~~’
No route matches [GET] “/~~~”
…etc
そこまで難しい英単語が出てくるわけでもないので、なんとなく読める方も多いと思います。
しかし読めない方は、読めないまま放置せずGoogle翻訳等を使いましょう!
Google翻訳後
未定義のメソッド ‘~~~’
一致するルートはありません[GET] “/ ~~~”
こうなるともう原因っぽい箇所が思い浮かんだり、思い当たったりするかもしれませんね。
もしかすると、問題のエラーに直結しない場合もあるかもしれません。
ただ少なくとも、問題が関連しているエラーの内容はある程度把握することができますね。
長文エラーメッセージの場合は、一番上をまず見る!
コンソール画面やブラウザ上にいっぱいのエラーメッセージが出てくると、萎えますよね。
正直私も、新卒で入った会社で入社直後のテスターをやっていたころは、エラー画面が出るとテンションガタ落ちでした。
しかし調査することで、問題を明るみにしサービスリリース前までに問題なく動くアプリケーションを作るということが出来た経験はある種、エンジニアとしての地盤になっているなと感じることが多々あります。
そんな大量のエラーメッセージが出てきてしまった場合は、一番上からまず見ていきましょう!
エラーメッセージは、発生順に出力されることがほとんどです。
なので、一番最初のエラーメッセージが、エラーの始まりとも言えます。
枝先のエラーを解消しても全体のエラーを解消できる可能性は低いです。
まずは大元から潰していきましょう。そうすると枝先のエラーは同時に解消される可能性もあります。
一つ一つ遡るよりも、遥かに効率的にエラー解消ができますよね!なので「上から見る!」というのが重要!
メッセージ内で、ファイル名を探す
メッセージ内にファイル名がある場合。
そのファイルにエラーが含まれていることを指している可能性が高いです。
そしてファイル名がある場合、ほとんど行数と共にエラーメッセージが出ています。
これが見つかればピンポイントでエラーチェックに向かえますね!
また、エラーの位置を表す英単語にも注目してみてください、in,at,beforeなどの単語はエラー位置を指している場合が多いです。
エラーを「解決」していく
エラーメッセージを「読む」ことをした後は、「解決」をしましょう。
しかし、読めたけど、何をしたらいいのかわからない、どう直せばいいのかわからない
でもこれを乗り越えていくことが、一人前のエンジニアになる近道です!
では、解決策を探すコツを紹介していきます!
※コードを色々と弄っていくので、かならず現状保存はしておきましょう。戻せなくなると原因究明どころではなくなってしまいます。
どうしたらエラーメッセージが消えるのか
まずは、どうしたら消えるのかを考えていきましょう。
単純な方法は、エラー箇所をコメントアウトもしくは消してみる。
それでエラーメッセージが消えるのであれば、消したコードを細かくチェックしていく必要が出てきますね。
また、エラーメッセージが消えないもしくはエラーメッセージが変わった場合、元凶は別にある可能性がありそちらを優先的に調査しましょう。
同じエラーを自分で起こしてみる
自らでエラーを起こすコードを書くことで、そのエラーメッセージに対する理解を深める。
エラーが起きた状況を細かく再現する必要はなく、簡単なコードで良いと思います。
どう書いたら該当のエラーが起きるのか、どう直せばエラーが解消できるのかを明確にできます。
プログラムが大きくなればなるほど、エラーの出どころや調査範囲が拡大し原因を追求しにくくなります。
その複雑さを排除して、小さくコードを書いてエラー内容を確かめる行為は無駄のようにも思えますが、部分部分の動きを詳細に理解することができるので複雑な状況でのエラー調査でも、この知識や経験が活きてきます。
エラーは1つずつ確実に潰す
上でも書いたように、プログラムが大きくなるほど原因が複雑化していきます。
エラーメッセージも延々と伸び、読むことすら大変になることも多々あることでしょう。
それを一気にやっつけようと思えば思うほど、問題は混線していき今どの地点にいてどれを解決しようとしているのかを見失います。
エラーの解消は、1つずつ
これは、エラー対応の中での鉄則です。
慣れてきたら、コードを追ってみる
段々とエラーメッセージを調べることに慣れてきたら、コードを追ってプログラムの流れをチェックしましょう。
プログラムの実際の動きを把握できれば、エラー箇所や原因の特定をしやすくなります!
一番簡単な方法としては、コンソールへのログを各処理の最初や最後に記述することです。
そうすることで、実行順でログを出力させることが出来るので、処理順や流れを把握することができます。
原因となりそうな変数の値を出力させたりするのも良いですね!
また、各言語やIDEなどで、デバッグ機能が備わっていることが多いので、それらを使い「処理を途中で止めたり」して状態を確かめたりもできます。
さらに慣れてきたら、「予測」をしてみましょう
エラーを追うことに慣れてきたら、エラーの原因の予測をしてみましょう。
以下を予想が当たるまで繰り返します。
エラーとなる場合と正常に動く場合を予想
その予想が正しいか確かめる
これを繰り返すことで、自分の中でエラーの原因に対する感覚値的な部分が鍛えられます。
エラー原因のパターン化などにも役立つようになると思うので是非繰り返し行っていくことをおすすめします!
「解決」していくためのツール
続いては、上で書いた解決のために使うツールについて紹介していきます!
エンジニアにとって必須スキル「Google検索力」
言わずと知れた「Google」様です。
エンジニアにとってなくてはならない存在でしょう。
ただ、闇雲に検索してもなかなか良い情報が得られません。
また、出てきた情報を鵜呑みにするのもよろしくないので、注意が必要です。
単純な使い方としては、
または、エラーコードで検索
ただし、メッセージをコピペする際、固有名詞(例えばファイル名や独自のクラス名など)は省いて検索しましょう。
その文字列にひきずられて、関係のない情報までヒットしてしまう可能性があるからです。
もう少し使い方を高度にしていくと、「状況を表す単語を追加していく」ことで詳細に調べていくことができます。
どう操作したときにエラーが出たのか
最終的には、英語で検索
これが最強の方法とは思います。情報発信の量と速さが日本語よりも段違いだからです。
新しいサービスや機能の情報をたくさん引っ張りたい時などはかなり有効ですね。
エラーの情報を検索し、解決策らしきコードを見つけたとしても、そのコードをそのまま何も考えずにマルッと利用することは避けましょう。
それをすると、何も理解しないままコードが動いてしまう可能性がありなんの力にもならない上に、下手をするとプログラムのセキュリティ上の問題も起こりかねません。
見つけた情報も自ら修正して、どう動くのか、どうして動くのか確認しながら導入しましょう。
プログラミング用のサービスで質問をする
Qiita(キータ)やStackOverFlow(スタックオーバーフロー)などが有名どころですね。
下手に、プログラミング専門でない質問版では質問をしない方が良いでしょう。
真剣に回答してくれる方もいらっしゃるとは思いますが、荒れたり正しい回答が返ってこなかったりすることが多いです。
質問をする際は、やはり最低限調査をした上で、どこまで理解できていて質問をしているのか回答者に伝わるように質問をしていきましょう。
質問をする者は、教えを乞う立場であり、謙虚であるべきだと思います。
特にお礼や状況の報告は忘れないようにしましょう。
さいごに
さて、ここまで、エラーメッセージとの向き合い方について書いてきました。
初心者のうちはエラーメッセージが出て、辛いと思う方が大半だと思います。
なんとなく赤字で出たりするし、自分のコードを否定されているような感覚に陥ることもありますよね。
でも、違うんです。否定されているのではなくエラーメッセージという相棒が、間違っている箇所を教えてくれているんですね。
エラーメッセージには様々な種類がありますが、どれも難しい言葉は使われていません。
またGoogle翻訳等に貼り付ければ、なんとなく内容は理解できますのでハードルが高いと思わず少しでも調査をしてみてください。
エンジニアとして情報を拾う行動はかなり重要です。
日本語や英語などの言語は、プログラミング言語よりも重要だったりします。
検索するにしても、質問するにしても、説明するにしてもやはり言葉は大事です。
そして、エラーメッセージで躓いたことを、誰かに伝えてあげましょう。
同じ悩みを抱えている人は世界に大勢いる可能性があります。
解決していなくても情報を公開・交換でも他の人と協力して解決できる場合もあります。なので情報発信も大事ですね。
以上、全てのことは、「自らやってみる!失敗してみる!」という一言につきます。
すんなり成功できないのが、エンジニアの世界でもあるので、一歩一歩着実に失敗を乗り越えながら挑戦し続けていきましょう!
では、また。
コメント