プログラミングをしていて、ほぼ必ず出会うのがエラーです。エラーなしで一発合格できるコードが書けることなど、ほとんどありません。
バグはあって当然です。そのつもりでコーディングを進めましょう。そして、このバグをどう解消するかの手順を確立しておく必要があります。
先輩に質問するのは、最低限これらの手順を踏んでからです。
何でもすぐに質問して、人の時間を奪わないために。
何でもすぐに質問して、自分の評価を下げないために。
では、バグが出てから人の助けを得るまでに、何をすればよいのでしょうか。
これらをしないことが、どういうマズい展開につながるのか、カードの不正利用をされたときを例にしながら解説していきます。
エラー文を読む
「え?そこから?」
と思うかもしれませんが、エラーが出たことだけを確認して教えてくださいと言ってくる若手は後を絶ちません。
あなた:「すみません、少しいいですか?今作っている処理がエラーになってしまって。。」
先輩:「何のエラーが出ましたか?」
あなた:「分かりません。ただ赤い文字がズラ―っと出てきて。。」
このような会話をした瞬間、あなたは今後仕事を任されることはないでしょう。
「私はSEとして、全く信頼できない手法で開発しています。何か起きたらよろしく!」と言っているようなものです。
あなたのカードが不正利用されたとして、カード会社に連絡した際、
「なんか知らない明細があるんですけど。いつのどの金額かもわからないですが。」
と言っているのと同じです。絶対に対処してもらえません。
エラー文とは、問題を解消する方法を知らせてくれる大きな手掛かりです。
それを無視するということは、プログラムを直す気がないと言っているのと同じです。
まずはエラー文を読むこと。そして英語だとしても意味を理解すること。
続けていれば、同じエラー文に何度も出会います。エラー文と解消方法をセットで理解していれば、次からエラーを解消するスピードも上がります。
すべての調査はエラー文から始まると言っても過言ではありません。
エラーの文言でググる
先輩:「何のエラーが出ましたか?」
あなた:「Index out of rangeと出ているんですが、これって何ですか?」
ログの読み上げ、お疲れ様です。先輩が聞きたいのは、そのレベルの話ではないんですよ。
「カードの支出明細に身に覚えのない100万円ってあるんだけど、いつの何?よく分からないな。あはは。」
と言っているのと同じです。笑って済ませられるほどお金持ちであれば別ですが。
せっかくエラー文を読んだのであれば、なぜそれが起きたのか気になりますよね。
そもそもですが、先輩よりもGoogle先生の方が知識量はあります。
先輩より先にGoogle先生に聞いた方が、より自分に合った答えが見つかる可能性が高いです。
調べ方は、”言語 エラー文言”
これだけです。たとえば、先ほどの例がpythonで出たのであれば、
python index out of range
と検索窓に打ち込むだけで、それに関する記事が山ほど出てきます。
エラーが起きたら、その文言をコピーしてググる。
ここまでは反射的に行うぐらい癖づけましょう。
ググった結果、上から5つの記事を検討する
先輩:「何のエラーが出ましたか?」
あなた:「Index out of rangeと出て、1番上の記事を見たんですがよく分からなくて。。」
1番上の記事は大体広告です。広告を見て違う記事が引っかかった。よく分からない。となっている人はこのパターンです。
「このカードの明細、自分が使ったのかな?あの日は確か朝コンビニでカードを切ったよな。その後は何してたっけ?知らなーい。」
と言っているのと同じです。問い合わせてもまだ相手にしてもらえません。
Google先生は知識量は豊富です。しかし、自分にとって適切な内容が返ってくるかは運の要素も強いです。
かといって、すべての検索結果をしらみつぶしに読む時間もありません。
広告を除いて、上位5つを目安に読みましょう。
ざっと目を通すのではなく、しっかりと読み切ってから、記事に従って対応してみることです。
これで解決できる!と思ったら、環境面(OS,バージョン)でそもそもの前提が違う記事もあります。
よく読んだら自分と違うところで悩んでいたという記事もあります。
SEは日々大量に文章を読みます。
分からないことはすぐに調べ、理解するまで読み続けます。
腰を据えて文字を読む訓練をしておきましょう。
用語をもとにさらにググる
あなた:「Index out of rangeと出て、リストに存在していない行にアクセスしたっぽいことは分かりました。」
先輩:「リストへの行アクセスってどうやっているの?」
あなた:「え?知らないです。」
この辺りまで来ると、エラー文そのままでの検索では足りないパターンです。
なかなか面倒なエラーに引っかかってしまったという印象です。
「このカードの明細、自分が使ったのかな?あの日は確か朝コンビニでカードを切ったよな。その後は昼はランチして、家族の海外旅行のチケットを買ったっけ。」
と言っているのと同じです。自分の行動を書き出しただけで終わってしまっています。100万円になるかもしれない行動が入っているのに・・・
原因が分かったのに、その解決方法を調べられない。
さらに深いところにある原因になかなかたどり着けない。
こういうケースは多々ありますが、やり方はあります。
先ほどのステップで調べた5つの記事。これらに多く登場する用語や関数をもとに、やりたいことを調べることです。
python リスト 行アクセス
などと検索窓に打ち込めば、解決策につながる記事に出会えるかもしれません。
表面的な知識で解消できないエラーは、一歩深い知識が必要になります。
そこまで理解しながら調査を進められれば、先輩からも安心して仕事を任していただけます。
原因を最低限切り分ける
あなた:「Index out of rangeと出て、調べたのですが解決できなくて。」
先輩:「それってコードの問題?それとも別のところに問題がある?」
あなた:「分からないです。」
せっかく調べたのであれば、答えたい質問ですね。
夫婦で共有しているカードの明細なのに、自分が使っていないからと不正利用を決めつけるようなケースと同じです。
ここまでのステップを踏んだにもかかわらず解決できないエラーというのは、本当に厄介なものの可能性があります。人に聞くタイミングです。
しかし、その前に調べたことを踏まえて整理しておかなければならないことがあります。
それは、原因の切り分けです。
- あなたが書いたロジックに原因があるのか
- 言語や環境など、技術的な面に原因があるのか
この2点は最低限、切り分けておいてください。
先ほどのIndex out of rangeであれば、ロジックに原因がある可能性が高いです。
URLは正しいのに通信がつながらないのであれば、環境面に原因がある可能性が高いです。
ここを切り分けているだけで、何を質問するかが明確に変わります。
ロジック面に課題があるのであれば、コードを見ていただけますか?と聞くことでしょう。
環境面に課題があるのであれば、プロキシの設定はどうしていますか?のような質問になるでしょう。
まとめ
あなた:「Index out of rangeと出ていて、コードに問題があるのは分かっているんですが、自分で見た感じではどこが問題なのかが分からなくて。」
先輩:「どれどれ。あ、ここじゃないかな。」
あなた:「ん?ほんとだ!ありがとうございます!」
この5つを踏まえたうえでの質問であれば、このような会話の流れになるでしょう。
お互い共通の理解の上で会話ができるため、非常にスムーズです。
回答する側としては、質問者が同じことを聞かなくて良くなるように答えたいものです。
しかし、特に最初の2ステップを踏まずに飛んできた質問は、回答する側としても素直に答えるわけにはいかなくなります。
質問者が何をどこまで理解しているのかが全く汲み取れないからです。何から話し始めればよいのかが分からなければ、正確な答えも出せません。
エラーの調査方法として、この5ステップをぜひ取り入れてみてください。