Pythonは「インデント」で動く言語
「え、たった1文字のズレで動かないの?」
Pythonを学び始めたばかりの人が最初にぶつかる壁。それがインデント(字下げ)です。
他の言語なら中括弧 {}
で囲めばOKなところを、Pythonでは「行の先頭のスペース」が命。
たった数文字のスペースの違いで、プログラムがまったく動かなくなってしまうのです。
これは、はじめてコードを書いた人にとってはかなりのショックかもしれません。
- Pythonにおけるインデントの重要性と役割
- プログラムが動かない典型的なインデントミスとその原因
- インデントエラーが発生した際の具体的な対処方法
- インデントエラーを未然に防ぐための環境設定と便利ツールの活用法
- インデント習得がPython上達につながるというマインドセット
Pythonのコードが「なぜか動かない」と感じたら
Pythonのコードが実行されない原因の多くは、構文ミスやタイポではなく、「インデントのズレ」にあります。
以下のような経験がある人は、まさにインデントの罠にはまっている可能性があります。
- if文の中に書いたつもりの処理がスルーされる
- なぜかエラーが出るけど内容がよく分からない
- コピペしたコードがうまく動かない
こうしたトラブルのほとんどは、「インデントのルール」を知らなかっただけです。
Pythonは「インデントでブロックを作る」言語
Pythonでは、次のような処理ブロック(まとまり)を インデントで表現します。
if score >= 60:
print("合格です!")
print("おめでとうございます!")
このように、if
の下にある2行が 同じだけ字下げ されていることが重要です。
ここに余計なスペースがあったり、逆に足りなかったりすると、エラーや思わぬ動作の原因になります。
インデントエラーは誰でも経験する
安心してください。インデントでミスをするのは、あなただけではありません。
むしろ、Pythonを使うすべての人が一度は経験する「通過儀礼」です。
この記事では、そんな「インデントでプログラムが動かない」トラブルを解決するために、
- よくあるインデントミスのパターン
- エラーの見つけ方
- 効果的な対処法と予防策
をわかりやすく解説していきます。
読み終える頃には、インデントで悩まされることがグッと減るはずです。
次章から、さっそく「インデントで動かない原因ベスト5」を見ていきましょう。
なぜPythonではインデントが重要なのか?
「どうしてこんなに厳しいの?」
Pythonを学び始めた多くの人が、インデント(字下げ)ルールの厳格さに驚きます。
しかし、これは単なる“こだわり”ではありません。Pythonのインデントには、明確な理由と利点があるのです。
インデントが「文法の一部」だから
ほとんどのプログラミング言語では、処理のまとまりを {}
で囲んで表現します。しかしPythonでは、インデントそのものが文法の一部になっています。
📌 他言語の例(CやJavaScriptなど)
if (score >= 60) {
console.log("合格です!");
}
📌 Pythonの書き方
if score >= 60:
print("合格です!")
このように、Pythonでは波かっこではなく、インデント(スペースやタブ)で構造を表現するため、少しでもズレてしまうと「文法エラー」になってしまうのです。
なぜそんな構文を選んだのか?
Pythonの設計思想のひとつに、「読みやすさこそ正義」という考えがあります。
そのため、以下のようなメリットを得るためにインデントを重視しているのです。
インデントを文法に取り入れる理由
- 誰が書いても読みやすいコードになる
- ネスト(入れ子構造)を見やすくできる
- コードの見た目と実際の動きが一致する
- “どこまでが1つの処理か”が一目でわかる
Pythonの開発者であるグイド・ヴァンロッサム氏は、「見た目で分かるコードこそが最も強力なドキュメント」と語っています。
インデントを軽視すると、思わぬエラーが…
インデントのズレを軽く見ていると、次のような問題が起こります。
- 処理が実行されないのに、エラーが出ない
- 同じコードなのに、人によって動きが変わる
- エラーが出ても原因がわからず、深みにハマる
特に厄介なのが、スペースとタブが混在してしまったとき。見た目では気づきにくく、プログラムが予期しない動作をすることもあります。
Pythonでは「見た目どおりに動く」ことが前提
Pythonの世界では、見た目=動作。インデントが乱れているコードは、まるで「見た目と中身が食い違った説明書」のようなものです。

「ルールが厳しいな…」と感じるかもしれませんが、実はこれは“読みやすくて安全なコードを書くための優しさ”なのです。
インデントを理解することが、Python上達の第一歩
プログラミング初心者にとって、インデントは面倒で難しく感じるかもしれません。
でも、インデントを正しく理解するだけで、コードのミスは激減し、読解力も一気に高まります。
この先の章では、実際によくあるインデントのミスと、その対処法を具体的に紹介していきます。
「コードが動かない原因がわからない…」という不安を、この記事で解消していきましょう。
よくあるインデントミスとその原因ベスト5
Pythonでプログラムがうまく動かないとき、多くの場合は「文法の理解不足」ではなく、インデントのミスが原因です。
しかも、その多くはほんの小さな見落としから起こります。
「何が間違ってるのかわからない…」
「昨日までは動いてたのに、今日は動かない…」
そんな不安を解消するために、ここではよくあるインデントミスの原因ベスト5を紹介します。
これを知っておくだけで、エラーの原因をすぐに見つけやすくなります。
スペースとタブが混在している
Pythonでは、インデントに使う文字をスペースかタブに統一する必要があります。
見た目は同じように見えても、内部的にはまったく別物です。
# 悪い例(スペースとタブが混在)
if True:
[タブ]print("Hello")
[スペース×4]print("World") ← エラーのもと
解決法
- エディタ設定で「タブをスペースに変換」をオンにする
Visual Studio Code
やPyCharm
を使えば簡単に統一可能です

インデントの深さがバラバラ
ブロック内でインデントの幅(スペースの数)が揃っていないと、Pythonはエラーを出します。
特に、複数人で開発する場面やコピペで貼り付けたコードで起こりがちです。
# 悪い例(1行目は4スペース、2行目は2スペース)
def greet():
print("Hello")
print("World") ← インデントが浅くてエラー
解決法
- インデントの幅を常に同じ(例:スペース4つ)にする
Tab
キーを使う場合も、タブ幅を4に設定するのが一般的
ブロック内のインデントを忘れている
条件文やループの中で、処理を書くのを忘れると、エラーになります。
# 悪い例(if文の中に何もない)
if score > 80:
print("合格") ← インデントがないためエラー
解決法
if
やfor
のあとには、必ず インデントを下げて処理を書く- もし書く処理がまだ決まっていないときは
pass
を使うと便利です
if score > 80:
pass # 処理は後で書く
エディタの自動整形で意図せず崩れる
使っているエディタが勝手にインデントを整えてしまうことで、予期せぬエラーが出ることがあります。
特に、コピー&ペーストや保存時の自動整形に要注意です。
解決法
- 自動整形の設定を確認し、**Python用の整形ルール(PEP8)**に従うようにする
Black
やautopep8
といった自動整形ツールを使えば、常に正しいフォーマットに保てます
コピペしたコードに隠れたインデント崩れがある
ネットで見つけたコードをそのまま貼り付けたときに、見えないインデントの違いが原因で動かないことがあります。
# 表面上は正しそうでも、タブとスペースが混ざっていることも
解決法
- 貼り付けたコードのインデントを一度すべて選択して修正する(Shift+Tabなど)
- エディタ上で「すべてスペースに変換」機能を使う
インデントは“人に優しいPython”の入口
インデントミスは誰もが経験することですが、逆にいえばここをクリアすればPythonが一気に楽しくなるともいえます。
最初は「なぜエラーになるのかわからない…」と感じるかもしれませんが、この記事で紹介した5つの原因と対策を覚えておくだけで、次にエラーが出たときも冷静に対応できるはずです。
このあと、インデントエラーが出たときの具体的な対処法と、予防策を紹介していきます。
もう「なんで動かないの?」と悩むことはなくなります。
インデントエラーが発生したときの対処法
Pythonを勉強していると、突然現れる「IndentationError」の文字。
頭が真っ白になってしまったことはありませんか?
でも安心してください。インデントエラーは、原因がはっきりしていて、対処もしやすいエラーです。
ここでは、エラーメッセージの読み解き方から、正しいインデント構造の確認、エディタの設定方法まで、すぐに使える実践的な対処法を紹介します。
エラーメッセージの読み方と活用法
まず、エラー文を怖がらずに読むことが大切です。Pythonのエラーメッセージは、かなり親切に原因を伝えてくれます。
📌 よくあるインデントエラーの例
IndentationError: unexpected indent
→「予期しないインデントがあります」
IndentationError: expected an indented block
→「本来インデントが必要な場所にインデントがありません」
エラー解読のステップ
- エラー行の番号を確認(例:line 5など)
- エラー行だけでなく、その前後のブロック構造を確認
- 「if」「for」「def」などの直後は、必ずインデントされたブロックが必要と理解する

「何が足りないのか」を読むクセをつけるだけで、修正力が一気に上がります。
正しいインデント構造を再確認する方法
次に確認したいのが、インデントの段差が正しいかどうかです。Pythonでは、コードの見た目=意味そのものです。
典型的なインデント構造の例
def greet(name):
if name:
print("こんにちは、" + name + "さん!")
else:
print("名前が入力されていません。")
このように、同じブロックに属する処理はすべて同じ段下げ(スペース数)で揃える必要があります。
インデント確認のコツ
- ブロック内のすべての行が、同じスペース幅で揃っているか
- スペースとタブが混在していないか
- 処理ブロック(if, for, defなど)の中にインデントされた行が必ずあるか
インデントの深さは「スペース4つ」が一般的ですが、2つでも8つでも構いません。大切なのは統一されていることです。
エディタ設定を見直してミスを防ぐ
ミスの多くは、実はエディタの設定で防げます。普段使っているエディタを少し見直すだけで、インデントエラーの9割は回避できます。
おすすめ設定チェックリスト(Visual Studio Codeなど)
- 「タブをスペースに変換」機能をONにする
- インデント幅をスペース4つに固定する
- 保存時に自動フォーマットを実行する
- インデントガイド(縦線)を表示して視認性を高める
便利な拡張機能
- Python Extension for VS Code:エラー箇所をリアルタイムで表示
- Blackやautopep8:自動整形でミスを防止
インデントエラーは「読みやすいコード」への入口
「またエラーか…」と落ち込む気持ちはよくわかります。でも、インデントミスに気づけるようになることこそ、Python上達の第一歩です。
エラーは怖いものではなく、コードをより読みやすく、正確に整えるチャンスです。
今回紹介した方法を実践すれば、インデントエラーが出たときも、もう慌てなくて済みます。
次は、こうしたエラーがそもそも起こらないようにする環境づくりについて紹介します。正しく整った環境は、プログラミングのストレスを大きく減らしてくれます。
インデントエラーを防ぐための環境設定とおすすめツール
「どんなに気をつけても、インデントミスが起きてしまう…」
そんなあなたにおすすめなのが、インデントミスを“そもそも起こさない”ための環境づくりです。
プログラミングに慣れていないうちは、ツールや設定に頼ることが最も確実で効率的。
ここでは、初心者でもすぐに使えるPython対応エディタと、自動整形ツールの導入方法を解説します。
初心者でも使いやすいPython対応エディタ3選
エディタは、インデントミスを防ぐ「最前線」のツールです。自動インデント補完や、可視化機能があるものを選ぶだけで、エラーの発生率は格段に下がります。
1. Visual Studio Code(VS Code)
- 無料で軽量、動作が早い
- 拡張機能でPythonサポートを追加可能
- タブ/スペースの変換、ガイドライン表示が簡単
Python
拡張機能をインストールすれば、エラーハイライト・自動整形も対応
2. PyCharm(Community Edition)
- JetBrains社が提供する本格的なPython専用IDE
- 無料版でもインデントや構文エラーをリアルタイムでチェック
- 学生や学習者に人気が高い
3. Thonny
- 超初心者向けに設計されたPython学習専用エディタ
- インストール後すぐに使えるシンプルなUI
- インデントや変数の動きが直感的に理解できる設計
自動整形ツール(autopep8, Blackなど)の導入方法
「インデントやコードの見た目を、手で直すのが面倒…」
そんなときは、自動整形ツールの出番です。たった1つのコマンドで、コードを一瞬で美しく整えてくれます。
autopep8 の特徴と導入方法
- Pythonのコードスタイル「PEP8」に準拠した整形を自動で実施
- VS CodeやPyCharmにも統合可能
導入手順
pip install autopep8
autopep8 your_script.py --in-place
Black の特徴と導入方法
- 厳格で一貫性のあるスタイルに整えてくれる
- 「手直しより自動整形」が信条のエンジニアに人気
導入手順
pip install black
black your_script.py
補足:VS Codeで自動整形を連携する方法
Python
拡張機能をインストールsettings.json
で整形ツールを指定(例:Black)- 保存時に自動整形を実行する設定をONにする
"editor.formatOnSave": true,
"python.formatting.provider": "black"
「整った環境」がプログラミングの自信を育てる
インデントエラーでつまずくのは、初心者にとって強いストレスです。
けれど、エディタとツールを整えるだけで、その不安は大幅に減らせます。
「書いたコードがすぐ整う」
「エラーの場所が一目でわかる」
そんな環境が整えば、自然とプログラミングに自信がつき、学習も楽しくなっていきます。
インデントを制する者はPythonを制す:学習のコツと心構え
Pythonにおいて「インデント」は単なる装飾ではなく、コードの意味を決める絶対的なルールです。
逆に言えば、インデントさえ正しく扱えれば、Pythonの基礎はすでに半分クリアしたようなものです。
「インデントって面倒くさい」「なんでこんなことで怒られるの?」
そんな気持ちになったことがある方も多いはず。
でも実は、インデントにしっかり向き合うことこそが、Pythonを自由に使いこなす近道なのです。
インデントに慣れるための3つの習慣
Python初心者がスムーズにステップアップするためには、毎日の小さな習慣が大きな力になります。
1. コードを書くたびに「構造」を意識する
ただインデントを入れるのではなく、「どこからどこまでが1つのまとまりか」を意識しながら書くようにしましょう。
- if文、for文、関数の中身は1段下げる
- ブロックが入れ子になるほど、インデントも深くなる
構造を視覚的に理解できるようになると、自然とミスが減ります。
2. エラーが出たら「ラッキー」と思う
インデントエラーは、ある意味“やさしいエラー”です。
Pythonが「ここがおかしいよ」と教えてくれているのだから、直せば確実に改善できます。
「怒られた」ではなく「学ぶチャンス」と捉えるだけで、気持ちは大きく変わります。
3. 他人のコードを読むクセをつける
良いコードに触れることは、インデント感覚を養う一番の近道です。
QiitaやGitHub、書籍のサンプルコードなどを見て、どんなふうに構造が組まれているか観察してみましょう。
心構え:「Pythonは優しい。でも、正直だ。」
Pythonは、インデントが合っていなければ動かない。
でもその代わりに、きれいに整えれば驚くほど素直に動くのが特徴です。
曖昧さを許さないからこそ、一度ルールをつかめば安心して書き続けられる。
それが、Pythonの大きな魅力でもあります。
インデントを味方につければ、あなたのコードはもっと読みやすくなる
人が読みやすいコードは、エラーも少なく、メンテナンスもしやすい。
それは、将来チーム開発やフリーランスで仕事をする際にも、必ず役立ちます。
「インデントごときで苦戦してしまう自分が情けない…」
そんなふうに落ち込む必要はまったくありません。
インデントの壁を越えたあなたは、もうPythonを学ぶ上で大きな一歩を踏み出しています。
コメント