読む

エラーが出た時の考え方

赤い文字が出た瞬間に、自分が否定された気がすることがあります。エラーは怒っているのではありません。何行目の何が読めなかったかを、機械がメモしただけです。

エラーは敵ではなく道案内

エラーメッセージは、コンピュータが「ここに問題があるよ」と教えてくれる手紙です。何も言わずに止まる方が、はるかに困ります。「どの行で・どんな種類の問題が起きたか」が書かれているので、落ち着いて読むだけで原因の候補をかなり絞れます。

たとえば NameError: name 'pirnt' is not defined という英文は、「pirntという名前は定義されてないよ」という意味です。これは print をタイプミスしただけ、と気づけます。

エラーの3つの種類

3種類のエラー:実際のメッセージと対処法 エラー名・行番号・原因の言葉が必ず含まれる ① 構文エラー 実行する前に出る File "main.py", line 3 if x = 5: ^ SyntaxError: invalid syntax 原因の例 ・「=」と「==」の混同 ・括弧 ) や " の閉じ忘れ ・コロン :の付け忘れ ・インデントのずれ 対処 行番号の前後を確認 「^」の位置を見る → 一番直しやすい種類 ② 実行時エラー 動かして途中で止まる Traceback (most recent call last): File "main.py", line 7 result = 10 / x ZeroDivisionError: division by zero 原因の例 ・0で割り算 ・存在しないファイル参照 ・存在しないキー参照 ・型の不一致 ("3"+4) 対処 入力データを表示で確認 if文で条件チェック → データを疑う ③ 論理エラー エラー無し・答えが違う # 平均を出すコード total = 50 + 80 + 90 avg = total / 2 print(avg) # → 110.0 と出る (本当は3で割るべき) 原因の例 ・< と ≤ の取り違え ・1から始める/0から ・条件式の組み合わせミス ・端の値の処理忘れ 対処 途中の値を print で確認 小さなテストデータで再現 → 一番見つけにくい
図1:3種類のエラー。①と②は赤い文字が出るので場所が分かる。③は数字や結果を疑う必要がある

①構文エラーは「文法ミス」。実行する前に出るので、行番号を見ると直しやすい種類です。②実行時エラーは「動かしたら止まる」種類。0で割り算をしたなど、途中のデータが想定と違うときに起きます。③論理エラーは見つけにくく、「動くけど答えが違う」状態。エラーメッセージは出ません。

最初に見るべき場所

エラー画面が長く見えると、全部読まなければいけない気がします。でも最初に見る場所は決まっています。Pythonなら最後の1〜3行、JavaScriptならコンソールの赤い行、HTML/CSSならブラウザの開発者ツールです。そこに、エラー名、行番号、問題の説明がまとまっています。

次に、自分が最後に変更した場所を思い出します。プログラムは、急に気まぐれで壊れるわけではありません。たいていは「直前に変えた1行」「コピーした部分」「スペルを変えた変数名」の近くに原因があります。ノートに「何を変えたら、どんなエラーが出たか」を短く残すと、同じミスを減らせます。

エラーを読む4ステップ

実際のエラーメッセージを読み解く(NameErrorの例) 下から順に「最後の1行」「行番号」「該当コード」「変更場所」を見ると素早く解決できる $ python my_program.py Traceback (most recent call last): File "my_program.py", line 5, in <module> pirnt(message) ^^^^^ NameError: name 'pirnt' is not defined. Did you mean: 'print'? 読む順序① — 最後の1〜2行(エラー名と説明) 「NameError = 名前のエラー」「pirnt が定義されてない」と分かる。「Did you mean: print?」は最大のヒント 読む順序② — 行番号と該当コード 「line 5」 = 5行目に問題がある。「pirnt(message)」のコードが直接の原因。「^^^」マークでエラー位置が分かる 読む順序③ — 1か所だけ直して再実行 5行目の「pirnt」→「print」に直して、もう一度実行する。直してから他のエラーが出たら、それは別問題として対応 ▶ 解決しなかったら:エラー名「NameError」をそのままGoogleやChatGPTに貼って質問する
図2:エラーメッセージの読み解き例。①最後の1行→②行番号→③1か所だけ直す、の順で確実に解決できる

1〜4を順番にやると、多くのエラーは自力で原因に近づけます。あちこち同時に直すと、何が直ったかが分からなくなって余計に混乱するので、「1か所直して→動かす」を守りましょう。うまくいかなければ、直した部分を戻してから次の候補を試します。

人に聞くときのコツ

先生や友達、AIに聞くときは、「動きません」だけでは相手も困ります。質問には、やりたいこと、実際に出たエラー、試したこと、該当するコードの短い部分を入れます。たとえば「リストの合計を出したいです。line 5でTypeErrorが出ます。数字を文字列として読んでいるのかと思い、int()を試しました」のように書くと、助ける側も原因を見つけやすくなります。

この聞き方は、将来チーム開発をするときにも役立ちます。バグ報告や質問が上手な人は、技術力以上にチームを前に進められます。エラー対応は、コードを書く力だけでなく、状況を整理して伝える練習でもあります。

論理エラー(バグ)の見つけ方

動くのに答えがおかしいときは、エラーメッセージが出ません。代わりに使うのが「print文」と「最小ケース」の2つです。怪しい場所のすぐ前に print(x) を入れて、変数の中身が想定通りかを確認します。データが大きすぎる場合は、「3個だけ」「1日分だけ」のように小さくして再現させると、原因を絞り込みやすくなります。

気をつけたい落とし穴

エラー時にやってはいけない3つ
  • 赤い文字を見ずにそのままGoogleや先生に聞く。エラーメッセージが大きなヒント
  • 「とりあえずあちこち直す」。何が直ったかわからなくなる。変更は1か所ずつ
  • 諦めて再起動する。エラーは消えるが、原因はそのまま残っている

将来どう役立つ?

「困ったときに自分で調べて解決する」スキルは、プログラミングに限らず仕事の中心的な能力です。エラーから逃げずに読み解く経験を今のうちに積むと、社会人になっても「状況を整理して前に進める人」として信頼されやすくなります。

今日からできること

今日の課題:エラーを1回、最後まで読む
  1. 短いコードをわざと1か所だけ壊す
  2. 出たメッセージを声に出して読む
  3. 直したら、何が原因だったかを1行で残す

まとめ

エラーは敵ではなく、コンピュータからの道案内です。種類は3つ、対処は「行番号→英文→検索→1か所だけ修正」の4ステップ。論理エラーはprintで途中の値を確認する。エラーから逃げずに読み解く習慣は、プログラミング以外の仕事でも一生使えるスキルになります。

確認 エラーが出たら最初にすることは?