# 【初心者脱出】Pythonで誰もが絶対つまずく「インデントエラー」を5分で完全攻略する3ステップ
「本やネットに書いてあるコードを、そっくりそのまま書いた(あるいはコピー&ペーストした)はずなのに、なぜかエラーが出て動かない……」
「エラーメッセージを翻訳してみたら『予期しないインデント』って出てきたけれど、一体私のコードの何がダメなの?」
そんなふうに、パソコンの画面を前にして、ため息をついていませんか?
**でも、安心してください。あなたは何も悪くありません!**
実は、この「インデントエラー(`IndentationError`)」は、**Python学習者のほぼ100%が最初にぶつかる「登竜門」のようなエラー**です。プロのエンジニアだって、今でもたまにやってしまうことがあります。
この記事では、Pythonのインデントエラーの原因を世界一わかりやすく解説し、**わずか5分で自力で解決、さらには「二度とこのエラーで悩まなくなる予防法」までを3つのステップ**でご紹介します。
この記事を読み終える頃には、エラーへの苦手意識が消え、「なーんだ、そういうことだったのか!」とスッキリした気持ちでプログラミングを再開できるようになりますよ。それでは、一緒に解決していきましょう!
—
## 【前提】そもそも、なぜエラーが起きるの?Pythonの「お作法」を知ろう
エラーを解決する前に、少しだけPythonというプログラミング言語の特徴についてお話ししますね。
多くのプログラミング言語(JavaScriptやC言語など)では、プログラムのまとまり(ブロック)を「 `{ }` (波かっこ)」で囲んで表します。
しかし、Pythonにはこの波かっこがありません。その代わりに、**「インデント(行の先頭に入れる空白・字下げ)」を使って、コードのまとまりを表現する**という独自のルールがあるのです。
“`text
【Pythonのルール】
同じグループのコードは、行のスタート位置(インデント)をピッタリ揃えなければならない!
“`
つまり、Pythonにとってインデントは単なる「見た目をきれいに整えるもの」ではなく、**プログラムを正しく動かすための超重要な「ルール」**なのです。
このルールが少しでも守られていないと、Pythonは「あれ? ここはどのグループの処理なの?」と混乱してしまい、`IndentationError: unexpected indent(予期しないインデントがあります)` というエラーを出して止まってしまいます。
それでは、このエラーを解決する具体的な3つのステップを見ていきましょう!
—
## ステップ1:エラーメッセージの「場所」を特定する
まずは、Pythonが教えてくれているエラーの「発生場所」を正しく読み解きましょう。
エラーが発生したとき、画面(ターミナルや出力欄)に英語がずらりと並んでびっくりするかもしれませんが、見るべきポイントは**最後の2〜3行だけ**です。
### 実際のコード例で見てみよう
例えば、以下のようなコードを実行したとします。
“`python
# エラーが出る悪い例
def hello():
print(“こんにちは”)
print(“Pythonの世界へ!”) # ← ここがズレている!
“`
一見すると問題なさそうですが、これを実行すると、以下のようなメッセージが表示されます。
“`text
File “main.py”, line 4
print(“Pythonの世界へ!”)
^
IndentationError: unexpected indent
“`
### エラーメッセージの読み解き方
* **`File “main.py”, line 4`**:これは「`main.py` というファイルの **4行目** に問題がありますよ」と教えてくれています。
* **`print(“Pythonの世界へ!”)` と その下の `^`**:矢印(`^`)が指している部分(この場合は行の先頭)がおかしいよ、とピンポイントで指摘しています。
* **`IndentationError: unexpected indent`**:エラーの名前です。「予期しないインデント(字下げ)があります」という意味です。
この例では、3行目の `print` は先頭に「スペース4つ」入っているのに対し、4行目の `print` は「スペース2つ」しか入っておらず、**縦のラインがズレてしまっている**のが原因です。
まずはこのように、**「何行目の、どの場所がズレているか」**を特定しましょう!
—
## ステップ2:原因を突き止める(スペースとタブの「ごちゃ混ぜ」問題)
「言われた行のズレを直したのに、まだエラーが消えない!」という場合、初心者が最も陥りやすい**「見えない罠」**にかかっている可能性があります。
それが、**「半角スペース」と「タブ(Tabキー)」のごちゃ混ぜ問題**です。
実は、コードを書くエディタ(編集画面)の上では、どちらも同じ「空白」に見えますが、パソコンの中身(Python)にとっては、以下のように全く異なるキャラクターとして認識されています。
* **半角スペース4つ**:` ・ ・ ・ ・ `(小さな点の集まり)
* **タブ(Tab)1キー分**:` ───→ `(ひとつの塊としての矢印)
“`text
【見た目は同じに見えても……】
(スペース4つ) hello
(タブ1つ) hello ← パソコンにとっては全くの別物!
“`
特に、**インターネット上の解説サイトからコードをコピー&ペーストしたとき**にこの現象がよく起こります。コピー元のコードが「タブ」で書かれており、自分で手入力した部分が「スペース」になっていると、見た目は完璧に揃っていても、Pythonは「揃っていない!」と判断して怒ってしまうのです。
この場合は、エラーが出ている行の空白を一度バックスペースキー(またはDeleteキー)で完全に消去し、**「半角スペース4つ」に統一して打ち直す**ことで解決します。
—
## ステップ3:エディタ(VS Code)の設定を使って一発で解決&予防する
「いちいち空白を消して打ち直すなんて面倒くさい!」
「空白とタブを目で見分けられるようにしたい!」
そう思いますよね。そこで、多くのプログラミング初心者が使っている無料の超優秀エディタ**「Visual Studio Code(VS Code)」**の便利な設定を使いましょう。
これを行うだけで、**空白がすべて「見える化」**され、一発でエラーの原因を見つけられるようになります!
### VS Codeで空白を「見える化」する手順
1. **設定画面を開く**
* Windows:キーボードの `Ctrl` + `,`(カンマ)を押します。
* Mac:キーボードの `Command` + `,`(カンマ)を押します。
2. **設定項目を検索する**
* 上部の検索バーに **「render whitespace」** と入力します。
3. **設定を変更する**
* `Editor: Render Whitespace` という項目が表示されます。
* 初期設定では `selection` などになっていますが、これを **`all`** に変更します。
—
### 設定するとどうなる?
設定を `all` にすると、コードの編集画面が以下のように変化します!
* **半角スペース**の部分に、薄いグレーの **「 ・ 」(点)** が表示されるようになります。
* **タブ(Tab)**の部分に、薄いグレーの **「 → 」(矢印)** が表示されるようになります。
これにより、「あ!ここはスペースなのに、次の行はタブになってる!」というズレが一瞬で見分けられるようになります。
この「見える化」設定をしておくだけで、これからのPython学習でインデントエラーに悩まされる時間は**ほぼゼロ**になります。今すぐ設定しておきましょう!
—
## まとめ:インデントエラーは「ルールを覚えた証拠」!
お疲れ様でした!最後に、今回のポイントを振り返ってみましょう。
1. **Pythonは「見た目の美しさ(インデント)」に厳しい言語**。同じグループのコードは縦のラインをピッタリ揃える。
2. エラーが出たら、エラーメッセージの最後の数行を見て**「何行目がズレているか」**を確認する。
3. 見た目が揃っていてもエラーが出るなら、**スペースとタブのごちゃ混ぜ**を疑う。
4. VS Codeの **`Render Whitespace` を `all`** に設定して、空白を「見える化」して予防する。
インデントエラーに出会ったということは、あなたが**「Pythonのブロック(構造)を作るコードを書き始めた」という素晴らしい一歩を踏み出した証拠**です。決して「自分には才能がないのかな……」なんて落ち込む必要はありません。
### さあ、次のステップへ進みましょう!
エラーが解決してコードが思い通りに動いたときの「動いた!」という感動は、何にも代えがたいプログラミングの醍醐味です。このワクワクした気持ちのまま、次のステップに進んでみませんか?
インデントの仕組みが理解できたら、Pythonで条件分岐を作る**「if文」**や、繰り返し処理を行う**「for文」**のコードも驚くほどスムーズに理解できるようになりますよ!
▶ [【次のステップ】Pythonの「if文」の使い方を優しく解説!インデントを活かして条件分岐を作ってみよう(関連記事リンク)]
あなたのPython学習が、より楽しくスムーズに進むことを心から応援しています!
コメントを残す