エラーは「敵」ではなく「案内役」
プログラミング初心者の多くが、赤字で表示されるエラーメッセージを見た瞬間に手が止まってしまいます。しかし、エラーメッセージは「あなたのコードのどこに、どんな問題があるか」を教えてくれる、いわば案内役です。読み方さえわかれば、怖いものではなくなります。
エラーメッセージの基本構成
多くのエラーメッセージには、以下の情報が含まれています。
- エラーの種類(例:SyntaxError、TypeErrorなど)
- エラーが起きた場所(何行目のどのあたりか)
- エラーの内容(何が問題なのかの説明文)
まず注目すべきは「エラーの種類」と「起きた場所」です。焦って全文を訳そうとせず、この2つをまず確認する癖をつけましょう。
よくあるエラーの種類の例
- SyntaxError(構文エラー):文法そのものが間違っている状態。カッコの閉じ忘れや、記号の打ち間違いが多い原因です
- TypeError(型エラー):数値として扱うべきところに文字列が入っているなど、データの種類が合っていない状態です
- ReferenceError(参照エラー):定義していない名前を呼び出そうとしている状態です。変数名のスペルミスがよくある原因です
検索するときのコツ
エラーメッセージを検索する際は、以下のようなコツがあります。
- エラーメッセージの中でも、固有名詞や具体的な数値の部分は削除して検索する(ファイル名や行番号は人によって違うため)
- 使用している言語名やツール名(例:「Python」「Excel」)を一緒に検索キーワードに含める
- 日本語で検索して情報が少ない場合は、エラーメッセージ部分だけ英語のまま検索してみる(海外の情報のほうが件数が多いことがよくあります)
英語のエラーは、3つに分けて読む
英語のエラーを、最初から最後まで、正確に訳そうとすると、疲れてしまいます。次の3つに分けて、拾い読みします。
| 見る場所 | 意味 | 例 |
|---|---|---|
| ① 種類 | どんな種類のエラーか | NameError、TypeError、SyntaxError |
| ② 内容 | 何が問題なのか | name 'x' is not defined(「xという名前は、定義されていません」) |
| ③ 場所 | どのファイルの、何行目か | File "app.py", line 12 |
たとえば、Pythonで、次のようなエラーが出たとします。
NameError: name 'price' is not defined
**種類はNameError(名前に関するエラー)、内容は「priceが定義されていない」**ことです。多くの場合、変数名のつづりの間違い、または、定義する前に使っていることが原因です。
別の例です。
TypeError: can only concatenate str (not "int") to str
これは、「文字列に、数字を、そのままつなげられない」という意味です。数字を、文字列に変換してから、つなげる必要があります。
JavaScriptでは、次のような表示を、よく見かけます。
TypeError: Cannot read properties of undefined (reading 'name')
「定義されていないもの(undefined)の、nameは、読めません」という意味で、まだ存在しないものを、使おうとしていることが、原因です。
場所の情報を、見つける
エラーには、どこで起きたかが、書かれています。複数の行が表示される場合(スタックトレース)は、自分が書いたファイルの名前と行番号が、どこにあるかを探します。ライブラリの内部の行ではなく、自分のコードの行が、調べる出発点です。表示の順番は、言語によって異なります(Pythonは、通常、最後の行が、直接の原因です)。
検索・相談する時の、整理のしかた
エラーが出た時に、最初に確認するのは、次の3点です。
- いつから起きているか
- 何をした直後か(コードを変えた、ソフトを更新した、など)
- 今どんな状態か(エラーの全文)
エラーメッセージは、全文をコピーして使ってください。「エラーが出ました」だけでは、原因を絞り込めません。AIに相談する時も、同じです。パスワードやAPIキー、個人情報は、必ず伏せてください(AIに貼る前チェック、API連携が「両方正常なのに繋がらない」時の確認5項目)。
学習の進め方は、プログラミング独学は「真似る→飛ばす→2周目」で続くで紹介しています。
エラーは読み解けば、次にやることが見えてくる
エラーメッセージを読む習慣がつくと、プログラミング学習のスピードは大きく変わります。「怖いもの」から「ヒントをくれるもの」へと捉え方を変えてみましょう。
エラーメッセージを翻訳ツールにそのままかけるのも一つの手ですが、専門用語が多い場合は意味が伝わりにくいことがあります。英語のまま検索エンジンにかけた方が、同じエラーで困った人の情報にたどり着きやすいこともあります。