プログラミングをしていると

エラーが辛くて何も進まない・・・
という経験をしたことはないでしょうか。
プログラミング初心者は誤ったエラーへの対処パターンに陥りがちです。
これまで100人以上のプログラミング学習のメンターをしてきた経験を元に、プログラミング初心者が間違えがちなエラーの解決方法を紹介します。
それぞれへの対処法も紹介しますので、「これ、自分にも当てはまるな・・・」と思ったら考え方を修正するチャンスです!!
ここで紹介する間違った方法の逆をやればエラーが解決できるようになりますし、プログラミング能力も飛躍的に向上します。
間違ったエラー解決方法
エラーメッセージを読まない
一番多い間違いは「エラーメッセージを読まない」ことです。
慣れない人にはエラーメッセージは「謎の呪文」にしか見えません。
無意識に敬遠してしまうようです。
しかしエラーメッセージを読まないことにはなにが問題となっているのかアタリをつけることもできません。
エラーメッセージを読むことはエラー解決の大前提です。
「エラーメッセージを読んでいないな」と思った人は、分からないなりにもまずエラーメッセージを読むところから始めましょう!
対処方法
対処方法はエラーが出たらエラーメッセージを良く読むことです。
とはいっても、「そんなに簡単に読めるなら読んでるよ・・・」
という声が聞こえて来そうですね・・・
確かに、エラーメッセージはすぐに読めるようにはなりません。
しかし、「エラーメッセージを読もう」と意識しないといつまでたってもできるようにならないことも確かなのです。
最初は難しく感じるかもしれませんが、エラーが起きるたびにエラーメッセージを読み取ることを意識しているとだんだん読めるようになっていきます。
というのも実はエラーメッセージは定型文が多く、よく発生するエラーはだいたい決まっているため、何度も読んでいるといつも同じようなメッセージであることに気づくからです。
少しずつでもエラーメッセージを読み取り、解決できるようになっていくと、同じ種類のエラーにはすべて対処できるようになります。
ちなみに、エラーメッセージはほぼ英語であるため、英語が読めなくて敬遠している方もいます。
そういう場合は、表示されたエラーメッセージを Google 翻訳 にコピペしてみましょう。
例えばこんな感じです。

最近の翻訳技術はとても優秀なため、読みやすい日本語になります。
それだけでエラーメッセージへの抵抗がなくなりエラーへの対処が捗ります。
いきなりコードに手を付ける
初心者のころはエラーメッセージを見てもよく分からず、コードを修正したくなるようです。
というのも
- よく分からないものを見て考えるのは辛い・・・
- コードを修正して動かして確認するとなんだかやった気になる
ということがあるからです。
しかし、よく分からずコードを修正するのはとても危険です。
エラー解決というゴールに向かうのに、どの方向かも分からないのに歩き出すようなものです。
それでは
- 最短距離がわからないので非効率
- 間違った修正をしてしまいエラーを重ねてしまう
と、状況が悪化してさらに辛いものとなってしまいます。
対処方法
コードに手を付ける前に、まずはエラーメッセージを理解することが大切です。
逆にエラーメッセージを理解するまではコードを少しでも修正してはいけない、と考えるくらいが丁度いいです。
エラーメッセージはエラー解決というゴールに向かうための方向性を与えてくれます。
- プログラミング初心者はまずコードに手をつけます
- ベテランエンジニアはまずエラーメッセージの解読に時間をかけます
扱うプログラムが小さいうちは
「手当たり次第コードを修正して試す」
ということを繰り返してもなんとかなるかもしれません。
しかし、コード量が多くなってくるとパターンが多すぎて破綻します。
ベテランエンジニアは経験からそれ知っているので、以下の手順でエラーを修正します。
- エラーメッセージをしっかり理解する
- 何が問題になっているかを把握する
- 修正の方針を考える
- 修正する
慣れて来るとこのステップは瞬時に実行できるようになります。
エラーが出たらこのステップを意識してみましょう!
エラーメッセージを読み間違える
エラーメッセージの内容を読み間違えるとエラー解決への方向性も間違えてしまいます。
エラーメッセージは英語で、かつ論理的な文章となっているため慣れないと「なんとなく」で読んでしまうようです。
よくあるエラーメッセージに以下のようなものがあります。
undefined method `foo' for XXX
このエラーメッセージのよくある読み間違いは
foo というメソッドが定義されていない
です。
完全に間違いということではないのですが点数をつけるなら20点くらいです。
正しくは
foo というメソッドが「XXXに」定義されていない
です。
このように 「for XXX」という箇所がよくわからないから読み飛ばしてしまっているのですね。
これは東京に行きたい人がどの電車に乗ればいいかを駅員さんに聞くときに
- 私は行きたいです
と言っているようなものです。
どこに行きたいかを聞かないとどの電車に乗ればいいかなんてわかりませんよね・・・
よくわからない部分を読み飛ばすことはこれくらいおかしなことなのです。
対処方法
すべての単語を読み飛ばさずに理解することが大切です。
分からない部分や単語が残っている段階ではコードをいじってはいけない、と心に刻みましょう。
といっても最初は難しいかもしれません。
読み飛ばさずに理解するコツとしては
- 主語
- 述語(動詞)
- 目的語
- 修飾語
を意識するといいです。
英語なので最初は抵抗があるかもしれませんが、エラーメッセージで表示される英語は比較的簡単なものが多く、慣れさえすれば読めるようになります。
わたしも英語はとても苦手なのですが、普段からエラーメッセージを読んでいるためエラーメッセージだけは苦もなく読めます。
慣れの問題です。
プログラミング言語の用語を理解できていない
エラーメッセージの文章ではプログラミング用語が使われる事が多いです。
例えば
undefined method `foo'
というメッセージが出たときに、日常の言葉で直訳すると
定義されてない方法 `foo'
となります。
しかし method はプログラミング用語でそのまま「メソッド」です。
翻訳するなら
定義されていないメソッド `foo'
となります。
プログラミング用語が理解できていないと

定義されていない方法ってなんだろう・・・
と悩み続けることになります。
メソッドという言葉がわかっていれば
- foo というメソッドが定義されていないんだ
- じゃあ foo というメソッドを定義すればいいな
のように進めることができます。
対処方法
プログラミング言語の用語に気づかないということは理解が不足している可能性が高いです。
その場合、基礎に戻って復習する必要があります。
この基礎に戻って復習する、というのを時間の無駄に感じてやらない人が多いです。
しかし、毎回多くの時間を使って悩む時間のほうが無駄です。
基礎に戻って復習し直すことは、遠回りに見えてとても近道になることが多いということを肝に銘じておきましょう。
また、翻訳などしてみて文章の意味が通らなかった場合もプログラミング用語の理解が不足している兆候です。
積極的に基礎に戻り、用語や概念の復習に取り組んでみましょう。
そうすれば、そのエラーに関してだけではなく、プログラミングの実力自体を向上させるチャンスとなります!
エラーメッセージをプログラマーからの気持ちで読んでいる
エラーメッセージの意味が分かっても今度は「で、なんなの?」と思ってしまうことがあります。
例えばこのようなメッセージです。
syntax error, unexpected end-of-input
翻訳するとこのようになります。
構文エラー、予期しない入力の終わり
エラーメッセージというのはプログラムが実行中にプログラムからの視点で発言しているからです。
初心者のころはそれをプログラマの視点から読んでいるのが訳が分からなくなるわけです。
プログラムはコードを最初から読んでいきます。
上記のエラーは、プログラムが最後まで読んでいって、正しいコードであればあるべき何かが最後まで出てこなかったのでエラーにしました、ということになります。
対処方法
プログラム側の気持ちになってエラーメッセージを読むことが大切です。
これもある程度の練習が必要となります。
コツとしては、以下を心にとめておくだけでもかなり違います。
- エラーメッセージはプログラムが実行中に遭遇した事実だけを伝えている(原因は何も伝えてくれない)
- その事実が起きるのはどのような時か(条件か)を考える必要がある
ひたすらコードだけを読んでいる
エラーメッセージは読めた、何を言っているかもなんとなく分かった、という状態になるとかなり上級者になっています。
しかし、そこで手が止まってしまってエラーが解決できないという人も多いです。
コードだけを目で追っていて、何が起きているのかが分からない、という状況です。
そのような場合はプログラムが実行時にどのような状態になっているのかが把握できていない、ということになります。
対処方法
コードを読むだけでは分からない場合は「デバッグ」を行いましょう。
一言でデバッグと言っても様々な方法がありますが、特に大事なのは
- どの変数にどのような値が入っているか
を確認することがエラー解決にとって重要となることが多いです。
変数の値を確認する方法としては
- プリントデバッグ
- 出力結果を確認する
- デバッガを活用する
のような方法があります。
これらの方法を駆使して想定外の変数が見つかれば、なぜその変数にその値が入っているのかをコードをさかのぼっていけば問題が見つかります。
エラー解決で実力は向上する

エラー解決というのはプログラミング能力を向上させるための非常に良い題材です。
エラー解決の過程で、ざっと挙げるだけでも以下のような良いことがあります
- 理解できていなところはないかが確認できる
- 新たな知識が手に入る
- 問題解決能力が手に入る
- 論理的に考えることができるようになる
デメリットは時間を使うことだけで良いことだらけです。
積極的にエラー解決に取り組みましょう!
まとめ
初心者にありがちな間違ったエラーの解決方法を紹介しました。
プログラミングはエラー解決の連続です。
エラー解決能力はプログラマーの必須能力といってもいいでしょう。
また発生するエラーを解決できればプログラミング能力が飛躍的に向上します。
エラー解決は最初は難しいですが何度も取り組んでいくうちに必ずできるようになります。
逆に取り組まなければできるようになりません。
頑張りましょう!