1. はじめに|Pythonではなぜインデントが重要なの?
Pythonを勉強し始めて、こんなエラーに戸惑ったことはありませんか?
if True:
print("こんにちは")
一見すると正しそうに見えるこのコード。
でも実行すると、次のようなエラーが表示されます。
IndentationError: expected an indented block
「え?スペルも合ってるし、構文も間違ってないはずなのに…」
そう感じた方、実はとても多いです。
このエラーの原因は、**Python特有のルールである「インデント(字下げ)」**にあります。
Pythonでは、インデントのズレ=プログラムの意味のズレ。
たった数文字の空白が、エラーの原因になることも珍しくありません。
実際、Python初心者が最初につまずくポイントの上位が
**「インデントエラー」「タブとスペースの違い」**です。
この記事では、
- インデントとは何か?なぜPythonでは重要なのか
- スペースとタブの違い(どっちを使うべき?)
- IndentationErrorを確実に防ぐ書き方のルール
を、エラー例つきでやさしく解説していきます。
「インデントが怖くてPythonが進まない…」
そんな状態を今日で終わらせましょう。
2. インデントの基本ルール
Pythonでは、インデント(字下げ)がないとプログラムが動かないことがあります。ここでは、その基本ルールをわかりやすく紹介していきます!
◾ コロン(:)の後は必ずインデント!
Pythonで「条件分岐」や「繰り返し」などを使うときには、最後にコロン : をつけるのがルールです。
そして、その次の行では必ずインデントする必要があります。
たとえば if 文を書くときはこんな感じ:
if True:
print("これは正しい書き方です")
ポイントはここ👇
✅ : をつけたら、次の行でインデントを入れる!
◾ インデントで「かたまり(ブロック)」を作る
Pythonでは、インデントがそのまま「処理のまとまり(ブロック)」を表します。
これはすごく大事です!
たとえば、こんなコードを見てください。
if True:
print("A")
print("B")
print("C")
この場合、
- 「A」と「B」は if の中の処理(インデントがある)
- 「C」は if の外の処理(インデントがない)
になります。
つまり、True だったら A と B は表示されるけど、C はそのあとに必ず実行されます。
◾ インデントしないとエラーになる!
インデントがないと、Pythonはどの処理がどこに属しているのか分からなくなってしまいます。
たとえばこんなコード:
if True:
print("こんにちは") # インデントなし!
これは実行するとこうなります:
IndentationError: expected an indented block
Python先生に「ブロックが見つかりませんよ〜」って怒られちゃうんですね。
◾ インデントは何個分?スペース?タブ?
基本的には「スペース4つ」でインデントするのが、Pythonの公式ルール(PEP8)です。
タブも使えますが、スペースの方がおすすめです(この理由は次の章でくわしく紹介します!)。
✅ まとめ:インデントの3つの鉄則
:のあとには必ずインデント!- インデントでブロック(かたまり)を作る!
- インデントを間違えるとすぐエラー!
3. スペースとタブの違いとは?
Pythonでは、インデントを「スペース」でも「タブ」でも作ることができます。
でも、ここにはちょっとした落とし穴があるんです!
◾ スペースとタブってなに?
まず、基本から確認しましょう。
- スペース:キーボードの「スペースキー(空白)」を1回押したときに入る空白。
- タブ:キーボードの「Tabキー」を押すと入る、ちょっと広い空白。
見た目は似ていますが、**Pythonにとっては「別物」**です!
◾ PEP8では「スペース4つ」がルール!
Pythonには「PEP8(ペップエイト)」というコードの書き方ガイドがあります。
この中で、インデントについては次のように決められています。
✅ インデントは「スペース4つ」を使いましょう
つまり、Tabキーは使わず、スペースを4回押すのが正しいやり方です。
◾ タブを使っても動くの?→一応動くけど非推奨!
たしかに、Pythonはタブでもインデントを認識します。
if True:
print("タブでも動くことは動く")
でも…ここで問題が!
◾ タブとスペースを混ぜるとエラーになる!
インデントにタブとスペースが混ざってしまうと、エラーになることがあります。
if True:
print("スペースの行")
print("タブの行") # ← ここで混在!
このようなコードを実行すると、こんなエラーが出ます:
TabError: inconsistent use of tabs and spaces in indentation
Pythonは「同じ種類のインデントで統一してね!」と教えてくれてるんですね。
◾ エディタの設定で「スペース」に統一しよう!
インデントのミスを防ぐためには、使っているエディタ(VS Code や PyCharmなど)で、
「Tabキーを押したら、スペース4つにする」設定
をしておくのがおすすめです!
✅ まとめ:スペース vs タブ、どっちがいい?
| 比較項目 | スペース | タブ |
|---|---|---|
| PEP8の推奨 | ◎(推奨) | ×(非推奨) |
| エラーのリスク | 少ない | 混在でエラーに |
| エディタ対応 | 多くが対応済み | 一部で扱いが面倒 |
→ 結論:スペース4つでインデントしよう!
4. 実例で学ぶインデントミス
Python初心者がよくやってしまうインデントのミス。
ここでは、実際によくあるエラー例を紹介しながら、「どこが間違いなのか?どう直せばいいのか?」をわかりやすく解説していきます!
◾ if文でのインデントミス
age = 18
if age >= 18:
print("大人です")
このコード、見た目はシンプルですが…エラーになります!
IndentationError: expected an indented block
なぜかというと、if のあとにインデントがないからです。
✅ 正しい書き方:
age = 18
if age >= 18:
print("大人です")
「if文の条件がTrueだったときに実行したい処理」は、インデントでひとつ下げるのがルールでしたね!
◾ forループでのインデントミス
for i in range(3):
print(i)
これもNG!
IndentationError: expected an indented block after 'for' statement
for の後の処理が、インデントされていないのが原因です。
✅ 正しい書き方:
for i in range(3):
print(i)
ループ処理の中身はインデントして書く。これがPythonのルールです。
◾ 関数定義の中でのミス
def hello():
print("こんにちは!")
こちらもエラーです。
IndentationError: expected an indented block
Pythonは、関数の中身もインデントで書く必要があります。
✅ 正しい書き方:
def hello():
print("こんにちは!")
◾ インデントをうっかりズラした例(まぎらわしい!)
for i in range(3):
print("スペース2個")
print("スペース4個")
このコード、見た目ではちょっとわかりにくいですが、インデントがバラバラになっています。
IndentationError: unexpected indent
Pythonはとても厳密にスペースの数を見ているので、「全部スペースでも、数が違えばエラー」です!
✅ こうやって直そう!インデントエラーの対策
- すべてのインデントを「スペース4つ」に統一しよう
- エディタの設定で「Tabキー=スペース4つ」にする
- インデントの「見た目」ではなく、「実際の文字」で判断しよう(不可視文字を表示する設定も便利!)
5. エディタ設定でインデントミスを防ぐ方法
ここまで読んで「インデント、けっこう大事なんだなぁ」と感じていただけたと思います。
でも、手作業で毎回スペース4つを入れるのって、ちょっと面倒ですよね?
そんなときは、Pythonにやさしいエディタ(VS Code など)を使えば、ほぼ自動で解決できます!
◾ おすすめエディタ:VS Code(Visual Studio Code)
無料で使えて、Pythonにもバッチリ対応しているのが「VS Code」。
Python初心者からプロまで、たくさんの人が使っています。
◾ VS Codeで「Tabキーをスペース4つに変える」設定方法
- VS Codeのメニューから「設定(Settings)」を開く
- 検索窓に
tabと入力 - 「Insert Spaces(タブをスペースに変換)」を ON にする
- 「Tab Size」を 4 に設定する
これだけで、Tabキーを押したら自動でスペース4つが入力されるようになります!
◾ 自動整形ツールでキレイなインデントを保つ!
Pythonのコードを一発でキレイにしてくれる「コード整形ツール」も便利です。
✅ よく使われる整形ツール
| ツール名 | 特徴 |
|---|---|
| autopep8 | PEP8にそって自動でコードを整形 |
| black | より厳密なルールで統一感のある整形が可能 |
| flake8 | 整形はせず、コードチェックだけ行う |
◾ VS Codeにautopep8を入れる手順(かんたん!)
- Python拡張機能を入れておく(インストール済みでOK)
- ターミナルで以下を実行:
pip install autopep8
- VS Codeで「Shift + 右クリック → フォーマット」を選ぶと、インデントが整います!
◾ こんな設定もおすすめ!
- 保存時に自動フォーマット:設定で
Format On SaveをONにすると、保存するたびにコードが整えられます。 - 不可視文字の表示:スペースやタブの違いを目で確認できるようになります。
✅ まとめ:ツールでインデントを味方につけよう!
- 手動でスペース4つは大変→エディタで自動化!
- VS Codeの設定を整えれば、インデントミスとサヨナラできる
- 自動整形ツールを使えば、コードの見た目もプロっぽくなる!
6. まとめ|インデントに強くなればPythonが楽しくなる!
Pythonでは、インデント(字下げ)がプログラムの命とも言える大事なルールです。
他の言語のように「{ }」でブロックを囲う代わりに、スペースやタブのインデントだけで処理のまとまりを表現するという、ちょっと変わった特徴があります。
でも、そのおかげで見た目がスッキリしたコードが書けるのもPythonの魅力なんです!
✅ この記事で学んだこと
- Pythonでは インデントが文法の一部
- インデントがないと
IndentationErrorに - スペース4つが公式推奨(PEP8)
- タブとスペースを混ぜるとエラーになる
- VS Codeなどのエディタで インデントミスは防げる
✅ これからPythonを書くときは…
🔸 if文やfor文のあとには「スペース4つ」でインデント
🔸 コード整形ツールでキレイに保つ
🔸 インデントが変だな?と思ったら、エディタの「不可視文字を表示」でチェック!

「インデント」でつまずいたあなたも、これで一歩前進です!
Pythonの世界をもっと楽しんでくださいね✨
あわせて読みたい|インデントの理解をもっと深めたい人へ
以下の記事も、Python初心者がつまずきやすいポイントをやさしく解説しています。あわせて読んでおくと、よりスムーズにステップアップできますよ!
- 🔹 【初心者向け】SyntaxErrorとは?よくある書き間違いと直し方を徹底解説
- 🔹 Python初心者がよく出会う「NameError」と「IndentationError」の原因と解決法まとめ
- 🔹 【Python入門2】Pythonの基本構文をやさしく解説|改行・インデント・エラー対応まで初心者向けに丁寧に紹介
- 🔹 Pythonのprintデバッグ活用術|初心者でもできるエラー解決の第一歩
よくある質問(Q&A)
- Qスペース4つって、手で毎回入力しないといけないの?
- A
いいえ!エディタ(VS Codeなど)の設定で「Tabキーを押すとスペース4つ」にできます。設定しておけば、もう意識しなくて大丈夫です。
- Qすでに書いたコードのインデントを直すには?
- A
autopep8やblackなどのコード整形ツールを使うと、ボタンひとつでインデントをきれいに直してくれます。
- Qタブでも動くのに、なぜスペースの方がいいの?
- A
タブとスペースが混ざるとエラーが起きやすくなるためです。PEP8という公式スタイルガイドでも「スペース4つ」が推奨されています。







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。