「エラーが出て、何をすればいいかわからない…」
「エラーメッセージが英語で意味がわからない…」
プログラミング初心者が最も挫折しやすいのが、エラーに直面したときです。
しかし、実はエラーは「敵」ではなく「味方」。正しい対処法を知っていれば、エラーはあなたの成長を助けてくれる存在になります。
この記事では、エラーが出たときの具体的な対処法と、エンジニアに必要なデバッグ思考を解説します。
まず知っておきたい:エラーは悪いことじゃない
エラーは「プログラムからのメッセージ」
エラーが出ると「失敗した」「自分にはセンスがない」と落ち込む人がいます。
しかし、エラーは「ここに問題があるよ」とプログラムが教えてくれているのです。
エラーメッセージがなかったら、どこが間違っているのかまったくわからず、もっと大変なことになります。エラーは実は親切な存在なのです。
プロのエンジニアも毎日エラーと戦っている
「エラーが出るのは初心者だから」と思うかもしれませんが、プロのエンジニアも毎日エラーに遭遇しています。
違いは「エラーが出ないこと」ではなく、「エラーへの対処法を知っていること」です。
エラー対処の基本ステップ
エラーが出たときは、以下のステップで対処しましょう。
ステップ1:エラーメッセージを読む
当たり前のようですが、まずはエラーメッセージをしっかり読むことが大切です。
初心者がやりがちなのは、エラーが出た瞬間にパニックになり、エラーメッセージを読まずに「どうしよう」と悩むこと。
エラーメッセージには、以下の情報が含まれています:
- 何が問題か(エラーの種類)
- どこで起きたか(ファイル名、行番号)
- なぜ起きたか(原因のヒント)
ステップ2:エラーの場所を特定する
エラーメッセージに表示されているファイル名と行番号を確認し、該当箇所のコードを見てみましょう。
File "main.py", line 5, in <module>
print(hello)
NameError: name 'hello' is not defined
この場合、「main.pyの5行目」でエラーが発生していることがわかります。
ステップ3:エラーの種類を理解する
エラーにはいくつかの種類があります。種類を理解すると、原因を特定しやすくなります。
ステップ4:原因を推測し、修正する
エラーの場所と種類がわかったら、原因を推測して修正します。
ステップ5:再度実行して確認する
修正したら、再度プログラムを実行してエラーが解消されたか確認します。
よくあるエラーの種類と対処法
① SyntaxError(構文エラー)
原因:プログラムの書き方がルールに従っていない
# エラーになるコード
if x == 1
print("hello")
# SyntaxError: invalid syntax
対処法:コロン : や括弧 ()、引用符 " の閉じ忘れがないか確認
# 修正後
if x == 1:
print("hello")
② NameError(名前エラー)
原因:定義されていない変数や関数を使おうとした
# エラーになるコード
print(message)
# NameError: name 'message' is not defined
対処法:変数名のスペルミス、定義し忘れがないか確認
# 修正後
message = "hello"
print(message)
③ TypeError(型エラー)
原因:データの型が合っていない
# エラーになるコード
age = "25"
print(age + 1)
# TypeError: can only concatenate str (not "int") to str
対処法:データの型を確認し、必要に応じて変換する
# 修正後
age = "25"
print(int(age) + 1) # 文字列を数値に変換
④ IndexError(インデックスエラー)
原因:リストの範囲外にアクセスしようとした
# エラーになるコード
fruits = ["apple", "banana", "orange"]
print(fruits[3])
# IndexError: list index out of range
対処法:リストの要素数を確認(インデックスは0から始まることに注意)
# 修正後
fruits = ["apple", "banana", "orange"]
print(fruits[2]) # 0, 1, 2 で3つ目はインデックス2
⑤ KeyError(キーエラー)
原因:辞書に存在しないキーにアクセスしようとした
# エラーになるコード
user = {"name": "山田", "age": 25}
print(user["email"])
# KeyError: 'email'
対処法:キーが存在するか確認する、または get() メソッドを使う
# 修正後
user = {"name": "山田", "age": 25}
print(user.get("email", "未設定")) # キーがなければ"未設定"を返す
エラーが解決しないときの対処法
上記のステップで解決しない場合は、以下を試しましょう。
① エラーメッセージをそのままGoogle検索
エラーメッセージをそのままコピーしてGoogle検索するのは、最も効果的な方法の1つです。
同じエラーに遭遇した人が、Stack OverflowやQiitaなどで解決策を共有していることが多いです。
検索のコツ:
- ファイル名や変数名など、自分のコード固有の部分は削除する
- 言語名を追加する(例:「TypeError Python」)
- 英語で検索すると情報量が多い
② コードを少しずつ確認する
エラーの原因がわからない場合は、コードを少しずつ実行してどこで問題が起きているか特定しましょう。
# 途中経過を確認する
print("ここまでOK - 1")
# 処理A
print("ここまでOK - 2")
# 処理B
print("ここまでOK - 3")
# 処理C
どの print まで表示されるかで、問題のある箇所を絞り込めます。
③ 変数の中身を確認する
「思った通りの値が入っているか」を print() で確認しましょう。
data = get_data()
print(f"dataの中身: {data}") # ← 確認用
print(f"dataの型: {type(data)}") # ← 型も確認
④ 一度休憩する
意外かもしれませんが、一度離れて休憩するのも有効な対処法です。
長時間悩んでいると視野が狭くなり、単純なミスに気づけなくなることがあります。5分〜10分休憩して、リフレッシュしてから見直すと、あっさり原因が見つかることも。
⑤ 人に質問する
どうしても解決しない場合は、人に質問しましょう。
質問できる場所:
- teratail(日本語のQ&Aサイト)
- Stack Overflow(英語、情報量が多い)
- Twitter/X(#駆け出しエンジニア など)
良い質問の仕方:
- 何をしようとしたか
- どんなエラーが出たか(エラーメッセージ全文)
- 該当するコード
- 自分で試したこと
デバッグ思考を身につけよう
エラー対処を効率的に行うための「考え方」を身につけましょう。
① 「なぜ?」を繰り返す
エラーが出たら、「なぜこのエラーが出たのか?」を考えます。
エラー:NameError: name 'msg' is not defined
なぜ? → 'msg'という変数が定義されていないから
なぜ? → 変数名を'message'にしたのに、'msg'と書いてしまったから
対策 → 変数名を'message'に修正
② 仮説を立てて検証する
「たぶんここが原因だろう」と仮説を立て、それを検証します。
仮説1:変数名のスペルミス? → 確認 → 違った
仮説2:データの型が違う? → print(type(x))で確認 → 正解!
③ 変更は1つずつ
一度に複数の箇所を変更すると、どの変更で直ったかわからなくなります。修正は1箇所ずつ行い、その都度動作確認しましょう。
④ 動いていたときの状態に戻す
「さっきまで動いていたのに、急に動かなくなった」という場合は、最後に変更した箇所が原因の可能性が高いです。
Gitを使っていれば、変更履歴を確認して動いていた状態に戻すことができます。
エラーを減らすための予防策
① こまめに動作確認する
100行書いてから実行するのではなく、10行ごとに実行して動作確認しましょう。問題の箇所を特定しやすくなります。
② エディタの機能を活用する
VS Codeなどのエディタには、以下のような便利な機能があります:
- シンタックスハイライト:コードに色がついて見やすくなる
- リンター:実行前にエラーを検出してくれる
- 自動補完:変数名や関数名を補完してくれる(スペルミス防止)
③ コードを整理する
インデント(字下げ)を揃え、適切に改行することで、コードが見やすくなり、ミスに気づきやすくなります。
まとめ
| ステップ | やること |
|---|---|
| 1 | エラーメッセージを読む |
| 2 | エラーの場所(ファイル名、行番号)を確認 |
| 3 | エラーの種類を理解する |
| 4 | 原因を推測して修正 |
| 5 | 再実行して確認 |
解決しないときは:
- エラーメッセージでGoogle検索
- コードを少しずつ確認
- 変数の中身をprint()で確認
- 一度休憩する
- 人に質問する
エラーは、プログラミングを続ける限り一生付き合っていくものです。
大切なのは「エラーを恐れないこと」「エラーから学ぶこと」。エラーを1つ解決するたびに、あなたのスキルは確実に上がっています。
SKサービスでエンジニアとしてのキャリアをスタート
SKサービスでは、未経験からエンジニアを目指す方を積極的に採用しています。
「エラーが怖い」「一人で解決できるか不安」という方も大丈夫。現場で先輩エンジニアに相談しながら、着実にスキルを身につけられます。
正社員雇用で安定した環境。最短3ヶ月で現場変更できるから、さまざまな経験を積みながら成長できます。
この記事が参考になったら、ぜひSNSでシェアしてください!