スポンサーリンク

Python初心者がよく出会う「NameError」と「IndentationError」の原因と解決法まとめ

Python入門

1. はじめに|NameErrorとIndentationErrorってなに?

Pythonを勉強し始めて、最初に「つまずいた…!」と感じるのがエラーではないでしょうか?
コードを書いて「よし!実行してみよう!」と思ったら、

NameError: name 'message' is not defined

とか

IndentationError: expected an indented block

…こんなエラーが出て、びっくりしたことありませんか?
「なにこれ?どう直せばいいの?意味がわからない…」と、手が止まってしまった人も多いはず。


でも安心してください。
NameErrorIndentationErrorは、Pythonを始めたばかりの人が**必ず一度はぶつかる「あるあるエラー」**なんです。

この2つのエラーは、ちゃんと読み解けばとてもシンプル。
「変数が見つからない」とか「インデント(字下げ)がおかしいよ」という、Pythonくんからのちょっとしたアドバイスなんです。

この記事では、そんなNameErrorとIndentationErrorの意味や原因、そしてどう直せばいいのかを、初心者向けにやさしく解説していきます!

「エラーって怖い…」と思っていた気持ちが、「なるほど、こういうことだったのか!」に変わるはずですよ。




2. NameErrorとは?|変数が「見つからない」エラー

NameError(ネームエラー)は、Pythonを始めたばかりの人が最もよく出会うエラーのひとつです。

簡単に言えば、「その名前(変数)が見つからないよ!」というエラーです。
たとえば、次のようなコードを見てみましょう。

print(message)

このコードを実行すると、こんなエラーになります:

NameError: name 'message' is not defined

これは、「messageっていう名前の変数がまだ定義されてないよ!」というPythonからのメッセージなんです。


✅ よくある原因はこの3つ!

1. 変数を定義していない(または忘れてる)

print(message)  # ← そもそも message を作ってない

これは一番ありがちなミス。「message = “こんにちは”」のような変数定義を忘れていませんか?


2. 変数のスペルミス

messege = "こんにちは"
print(message) # ← スペルが違う!messageとmessege

Pythonはスペルにとっても厳しいので、一文字違いでも別物として扱います。


3. 定義より前に変数を使ってしまっている

print(message)
message = "こんにちは"

この場合、messageはあとで定義しているので、先に使おうとしても「まだ知らないよ!」となってしまいます。


✅ 解決法まとめ!

  • 変数を使う前に、ちゃんと定義しているか確認しよう
  • スペルミスがないかチェックしよう(コピー&ペーストもアリ)
  • 関数の中と外で変数を使うときは、**スコープ(範囲)**に注意しよう

📝ちょっと補足:スコープって?

スコープとは「その変数が使える範囲」のことです。
たとえば、関数の中で作った変数は、外からは見えません。

def greet():
message = "こんにちは"
print(message)

print(message) # ← ここでは message は使えない!NameErrorになる

関数の外でも使いたいときは、関数の外で定義するようにしましょう。




3. IndentationErrorとは?|インデント(字下げ)がズレているエラー

**IndentationError(インデンテーションエラー)**は、Pythonならではのエラーです。
このエラーが出ると「なんでそんな細かいこと言うの!?」とツッコミたくなるかもしれませんが…
実は、Pythonではインデント(字下げ)がとっても大事なんです。


✅ どんなときに出るの?

たとえば、次のコードを見てください。

if True:
print("こんにちは") # ← ここでIndentationErrorが発生

このコードを実行すると、こうなります:

IndentationError: expected an indented block

Pythonは「if文の中は、ちゃんとインデントして書いてね」とルールが決まっています。
それを守らなかったので、怒られてしまったんですね。


✅ よくある原因はこの3つ!

1. インデントを忘れてる

for i in range(3):
print(i) # ← インデントが必要!

forif のようなブロック構文の中では、必ずインデントが必要です。


2. スペースとタブが混ざっている

if True:
print("スペースでインデント") # スペース4つ
print("タブでインデント") # タブ文字 ←混ざるとエラーになることも

見た目は同じでも、Pythonはスペースとタブを別物として扱います。混ざっていると怒られます。


3. インデントの幅がバラバラ

if True:
print("これはOK")
print("これはNG") # ← スペースの数が違う!

インデントは同じブロック内で、そろっていることが大前提。ずれているとエラーになります。


✅ 解決法まとめ!

  • インデントはスペース4つが基本(PEP8スタイル)
  • タブではなくスペースを使おう(エディターで自動変換できる!)
  • 同じブロック内のインデントをきれいにそろえることが大事

💡おすすめエディター設定

インデントミスを防ぐには、エディターの設定が役立ちます。

エディター設定内容
VS Code「Tabをスペースに変換」「インデント幅=4」
PyCharm「コードスタイル → スペース4つに統一」
Jupyter Notebook自動でスペースが使われるので初心者にも安心!



4. 初心者におすすめのデバッグの考え方

Pythonでプログラムを書いていると、エラーに出会うのはむしろ普通のことです。
でも、エラーを見るたびに「ムリ…わかんない…」と投げ出してしまうのはもったいない!

ちょっとしたコツを知っておくだけで、エラーが「敵」ではなく「味方」に変わりますよ。


✅ 1. エラーメッセージは“ヒントの宝庫”

エラーメッセージって、なんだか英語で難しそう…と思ってしまいますよね。

でも、Pythonのエラーメッセージは、実はかなり親切設計

たとえばこんなエラー:

NameError: name 'message' is not defined

これは、「messageっていう名前の変数が見つからないよ」って教えてくれています。
**「name」「not defined」**など、キーワードだけ拾えば意味がわかるようになります!


✅ 2. 行番号をチェックして、該当行をじっくり見る

File "main.py", line 3
print(message)
^

このメッセージからわかること:

  • エラーが起きたのは「3行目」
  • その中の print(message) に原因がある

ということです。**行番号(line ○)**を目印に、該当部分をじっくり見てみましょう。


✅ 3. 一度に全部直そうとしない!

たくさんエラーが出てくると「どこから直せばいいの!?」となりがちですが…

まずは、一番上に表示されたエラーだけに注目してください。
それを直すだけで、他のエラーも一気に消えることがあります。


✅ 4. print()を使ってデバッグしよう

初心者に一番おすすめなのが「printデバッグ」です。

message = "こんにちは"
print("ここまで来たよ") # ← 途中で表示して確認
print(message)

「ちゃんと変数ができてるかな?」「この処理は通ってるかな?」
そんなときに、print()を入れておくと、プログラムの流れが見える化できます!


✅ 5. エラー文をコピーして検索するのもアリ!

どうしても意味がわからないときは、そのままGoogle検索しちゃいましょう!

NameError: name 'message' is not defined

これをコピペして調べれば、同じエラーに困った人の質問と答えがたくさん出てきます。
プログラミングは、「調べる力」も大切なスキルなんです。




5. まとめ|エラーは学びのチャンス!

Pythonを学び始めると、最初の壁になるのがエラーとの出会いです。
中でも「NameError」と「IndentationError」は、ほとんどの初心者が最初につまずくエラーと言っても過言ではありません。

でも大丈夫。

どちらのエラーも、ちゃんと内容を読めば原因はとってもシンプルなんです。


🎯 今回のポイントをおさらい!

NameErrorは、「その変数や関数の名前が見つからないよ!」というエラー
→ スペルミスや、定義の順番を見直そう!

IndentationErrorは、「インデント(字下げ)が正しくないよ!」というエラー
→ スペース4つで統一して、行ごとの位置をそろえよう!


エラーが出たときに大事なのは、「怖がらないこと」。
エラーは、Pythonくんが**「ここおかしいよ!こうすれば動くよ!」と教えてくれているサイン**なんです。

エラーの意味がわかるようになると、どんどんコードを書くのが楽しくなってきますよ!

あなたもぜひ、「エラーと友達になる」気持ちで、一歩ずつPythonを楽しんでいきましょう😊


🔰 Python初心者におすすめの記事


よくある質問(Q&A)

Q
NameError が出たけど、ちゃんと変数を定義しているはずです…
A

変数の定義より前の行で使っていないかをチェックしてみましょう!
Pythonでは、上から順番にコードを実行していくので、たとえ正しく定義していても、その前で呼び出してしまうと NameError になります。

print(message)      # ← ここでエラー
message = "Hello" # ここで初めて定義してる

正しくは、定義してから使うようにしましょう!

Q
IndentationError はなぜ起きるの?見た目は揃ってるのに…
A

見た目がそろっていても、スペースとタブが混在している可能性があります。
Pythonは、スペースとタブを別物として扱うため、ちょっとしたズレでもエラーになってしまうんです。

→ エディターの設定で「タブ → スペースに自動変換」にしておくと安心です。

Q
エラーメッセージの意味がわからないときはどうすればいい?
A

エラー文をそのままGoogle検索してOK!
たとえば「NameError: name ‘message’ is not defined」を検索すると、同じエラーに困っている人の質問や解説がたくさん見つかります。

それでも不安なときは、ChatGPTに貼り付けて質問してみるのもおすすめですよ!

※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。

※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。

スポンサーリンク