.png)
初心者は絶対に知っておくべき!プログラミングのエラー解決の仕方
エラー解決の方法
エラーを見る習慣をつける
初心者あるあるですが、「そもそもエラーを見ていない」という人がよくいます。
プログラマーはどんなに強い人でもバグの原因を探るときに必ずエラーを見ます。これは「エラーの中には、バグの原因がなにか」が細かに書いているからです。
これを見ないとそもそも何も始まりません。
冷たい言い方ですが「とりあえずエラーみよう!」これだけは最低限徹底しましょう。
※ たまに全くエラーログを見ずに原因を探り当てるチート級の人がいますが、これは真似してはいけません。
訳してみる
さて、では実際にエラーログを見てみましょう。
例えば、以下は、Rubyという言語で意図的にエラーを出してみたものです。
[3] pry(main)> "aaa".huga
NoMethodError: undefined method `huga' for "aaa":String
from (pry):3:in `__pry__'
意味がわからないと思った方、グッと堪えて3行目をそのまま訳してみましょうNoMethodError
=> メソッドがないエラーundefined method
=> 定義されていないメソッド`huga' for "aaa":String
=> 文字列aaaのためのhuga
どうでしょうか?なんとなく「aaaという文字列に対して、hugaというメソッドは定義されてなくて使えないんだ」というのはわかったと思います。
このように、ほとんどのプログラミング言語ではエラーは英語で出てくるので、読めば意味がわかるものも多いです(英語が読めない と言う方はGoogle翻訳に突っ込んでみましょう)
エラーは大体決まっている
読んでもよくわからないと言うエラーももちろんあります。
そう言う時はとりあえずググってみましょう。
世の中にはあなたより先にエラーに引っかかり、解決方法を見つけ、後に続く人のための記事を書いてくれている人がたくさんいます。
この時のポイントは「固有名詞を抜いて検索する」ことです。
先ほどのエラーを固有名詞を抜いて検索してみたものがこちらです。
たくさん引っかかりますね。記事を書いてくれた人に感謝です。
「printデバッグ」と言う方法
実務でエンジニアがよくやる方法にprint デバッグと呼ばれる方法があります。
これは、複数行あるプログラムに対してどの行がエラーを出しているかわからない時に「とりあえず全ての行にprint文をしこむ」方法です。
例を見てみましょう。
a = "aa"
print("aa\n")
b = "bb"
print("bb\n")
c = "cc"
print("cc\n")
a.hoge
print("dd\n")
このように、とにかく全ての行の間にprint文を仕込んでいきます。
[実行結果]
aa
bb
cc
test.rb:7:in `<main>': undefined method `hoge' for "aa":String (NoMethodError)
a.hoge
ここで、"dd"のみが出力されておらず、エラー原因はddの前の行だと言うことがわかります。
意外と使うテクニックなので是非覚えておきましょう。
質問サイト
質問サイトを使う方法もあります。以下に主な質問サイトを挙げます。
Teratail
レバレジーズが運営する、エンジニア用質問サイトとしてはかなり有名なサイトです。
https://teratail.com/
Qiita
記事投稿サイトとして有名なQiitaですが、質問機能もついています。
是非活用してみましょう!
https://qiita.com/question-trend
質問をする際には、以下を必ず書くようにしましょう!
(1) 起こったエラーの内容や状況
(2) エラーに対して自分が調べたことや、対処したこと
つまり、ここまでの流れを全て行った上で、最後に質問サイトを使うと良いでしょう。
新たな選択肢「ChatGPT」
2023年に入って、エラーの解決方法に ChatGPTと言う新たな選択肢が生まれました。
では先ほどのエラーを打ち込んでみましょう。
なんと、エラーの解釈だけでなく、解決方法も示してくれます🔥
「エラーはとりあえずChatGPTに聞け」という時代が来るのかもしれませんね。
※ ChatGPTに業務のコードを打ち込むのは「絶対に」やめましょう
会社の資産であるコードが流出することにつながる可能性があるからです。
まとめ
いかがでしたでしょうか?
エンジニアにとって、「エラーを自力で解決できるか」はかなり重要な問題です。
ぜひエラー文を読めるようになって、自己解決能力をあげましょう🔥