【Python】インデントとは?初心者向けにわかりやすく解説

はじめに

Pythonでは、行の先頭にスペースやタブを入れることでコードのブロックを表現します。
これをインデントと呼びます。

多くのプログラミング言語ではブロックをカギ括弧 {} などで括りますが、Pythonはインデントの深さで制御する点が特徴的です。
最初は「なぜこんな書き方をするのだろう?」と戸惑うかもしれませんが、理解してしまうとコードが読みやすく保たれるメリットがあります。

それでは、初心者の方でもわかりやすいように、インデントの基本と活用法、実務でのシーンを交えながら解説していきましょう。

この記事を読むとわかること

  • Pythonでのインデントの意味と役割
  • インデントを使った基本的なコード例
  • 実務でのインデントの重要性や注意点

Pythonにおけるインデントとは

インデントとは、行の先頭に一定数のスペースやタブを挿入して、コードの階層を示すための仕組みです。
Pythonでは、インデントを正しく配置しないとエラーになるため、プログラムが動かなくなります。

たとえば他のプログラミング言語では、if文のブロックを {} で括ることが多いかもしれません。
一方、Pythonではブロックの開始後、次の行をインデントすることでそのブロックに含まれる行であることを示します。

インデントでコードブロックを表現する

Pythonでは、以下のようにインデントを用いてコードブロックを表します。

if x > 10:
    print("xは10より大きいです。")
    print("インデントされたコードは同じブロックに属します。")

このサンプルでは、if x > 10: の次の行をスペースで下げることで、その行が if の処理ブロックに属していることを示しています。
逆に言うと、インデントがない行は if とは無関係な命令となります。

インデントのメリット

Pythonがインデントを採用しているメリットはいくつかあります。

1つ目は、可読性が上がることです。
インデントを強制されることで、コード構造が自然に整理されます。

2つ目は、バグを減らしやすい点です。
他の言語のようにインデントの有無が自由だと、可読性が下がって思わぬバグを生むことがあります。
Pythonではインデントを厳密に行うため、全体の見通しがよくなるのです。

Pythonインデントの基本的な使い方

Pythonでインデントを扱うときは、スペースの数やタブとスペースの混在に注意が必要です。
小さな違いが原因で思わぬエラーになることもあるため、正しいルールを覚えましょう。

スペースかタブか

Pythonの公式ドキュメントでは、一般的にスペース4つを推奨しています。
これは特に厳密に何文字でなければいけないと決められているわけではありませんが、チーム開発で書く際に多くの人が4つのスペースを使います。

タブを使う場合でも動作自体はしますが、Pythonの処理系やエディタの設定によって1タブの幅が異なります。
そのため、一貫性を保つためにスペースで統一するケースが多いです。

曖昧なインデントのエラー例

インデントが混在してしまうと、エラーが発生する可能性があります。
例えば以下のように、同じブロックに見えても実は片方がタブ、もう片方がスペースになっているとエラーが出ることがあります。

def example():
    # ここはスペース4つ
    if True:
        print("これはスペース4つでインデントされています。")
    # ここはタブ
    # 例えば、エディタによっては見た目に違いがわからない場合もありますが、
    # Pythonがタブとスペースを混ぜたと認識してしまうとエラーになることがあります。
        print("これはタブでインデントされている可能性があります。")

コード上はインデントが見た目上そろっていても、実際にはスペースとタブが混ざるとエラーになりやすいです。

チーム開発ではスペースを4つで統一する方法が一般的です。 個人で練習するときからスペースで書くことを習慣化すると、後々トラブルが減ります。

条件分岐(if文)でのインデント例

条件分岐でのインデントを見てみましょう。
Pythonでは、if文の直後にコロン : を書き、その次の行からインデントを下げます。

score = 85

if score >= 90:
    print("A評価です。")
elif score >= 80:
    print("B評価です。")
else:
    print("C評価です。")

ここで、if のブロックに含まれるのは、インデントされた行だけです。
elifelse にも同じようにインデントが必要になり、それぞれのブロックごとにコードを整理できます。

繰り返し文(for文やwhile文)でのインデント例

続いて、for文やwhile文のインデントを見てみましょう。
こちらも構文の直後にコロン : を書き、ブロック内をスペース4つほど下げます。

fruits = ["apple", "banana", "cherry"]

for fruit in fruits:
    print("果物の名前:", fruit)

count = 3
while count > 0:
    print("カウント:", count)
    count -= 1

これらのブロックが複数行に渡る場合は、すべての行を同じスペース数でインデントします。
たとえば3行目だけ2つのスペースで書いてしまうと、Pythonは別のブロックとみなしてしまいエラーになってしまうのです。

関数やクラスでのインデント

Pythonで関数やクラスを定義するときにもインデントが登場します。
以下のように、def 関数名(): または class クラス名: の直後にコロン : を置いて、そのブロックをインデントするのが基本です。

def greet(name):
    print("こんにちは,", name, "さん。")
    print("はじめまして!")

class Person:
    def __init__(self, name):
        self.name = name
    
    def say_hello(self):
        print("こんにちは。私は", self.name, "です。")

greet() 関数や Person クラスに属するコードは、スペース4つでインデントされています。
クラスのメソッドはさらにその中でインデントが深くなっているのがわかります。

もしクラスのメソッド内にif文やfor文などを入れ子にする場合は、さらにインデントを重ねます。 ブロックがネスト(入れ子)するたびにインデントを加える点がPython独特の書き方です。

インデントが活用される実務でのシーン

Pythonのインデントは、実際のビジネスや開発現場でも重要な役割を果たします。
見た目を整えるだけでなく、コードの流れを誰が読んでも理解しやすくしてくれるのです。

Webアプリケーション開発

PythonはWebアプリケーション開発にも使われます。
フレームワークを使うとファイルの数や処理の階層が増えてきますが、インデントをきちんと守って書くことでロジックを簡単に追えるようになります。

例えば、ユーザーの入力を受け取ってバリデーションし、問題がなければデータベースに保存するような処理を行う場合でも、条件分岐や例外処理が頻繁に登場します。
こうした場面でインデントが整理されていれば、他のメンバーが読んだときもミスが起こりにくいのです。

データ分析・機械学習

Pythonはデータ分析の現場でも広く使われています。
処理の途中でデータの前処理を行ったり、条件分岐で扱うデータ範囲を限定したり、結果を表示したりといったステップが多くなります。

これらを段階的にコード化するとき、インデントがあることで「ここのブロックはデータを加工している部分」「ここからは解析手法を適用している部分」などがはっきり見えるようになります。
特に大量のコードを扱うとき、インデントの有無でコードの理解度が大きく変わるのが実務の現場です。

コード例:実務を意識した簡単なスクリプト

ここではインデントを中心に見やすく書かれた簡単なサンプルスクリプトを紹介します。
初めて触る方も、Pythonコードの流れをイメージしやすくなると思います。

def process_orders(orders):
    # 注文の合計を計算
    total = 0
    for order in orders:
        total += order["amount"]
    
    # 割引チェック
    if total >= 10000:
        discount = 0.1
    else:
        discount = 0.0
    
    # 割引を適用した合計を表示
    final_amount = total * (1 - discount)
    print("割引後の合計金額:", final_amount)

orders_data = [
    {"item": "T-Shirt", "amount": 3000},
    {"item": "Pants", "amount": 5000},
    {"item": "Socks", "amount": 1000},
]

process_orders(orders_data)

この例では、process_orders 関数の中で以下のような流れを示しています。

  • 繰り返し文で注文の合計金額を算出
  • 条件分岐で割引率を決定
  • 結果を出力

ご覧のとおり、繰り返し文や条件分岐ごとにインデントを用いて処理のブロックを明確化しています。
もし一部だけインデントがずれていると、Pythonはブロックを認識できずエラーになるため注意が必要です。

インデントに関するよくある質問

Pythonのインデントに関しては、初心者の方からいくつか質問をいただくことがあります。
ここでは代表的なものを取り上げておきます。

インデントの幅は何文字がいいの?

一般的にはスペース4つがよく使われています。
必ずしも4つでなければいけないわけではありませんが、4つが一番読みやすいと感じる人が多いです。
プロジェクトやチームによって規約が定められている場合があるので、それに合わせると良いでしょう。

タブとスペースが混在するとどうなるの?

タブとスペースが混在すると、Pythonの解釈によってはエラーを引き起こす場合があります。
見た目が揃っていても、裏でタブとスペースが混ざっているとブロック判定に失敗するのです。
一貫したルールでインデントすることが大切です。

まとめ

Pythonのインデントは、コードの構造や可読性を大きく左右する重要な要素です。
行の先頭にスペースを入れるだけのシンプルな仕組みですが、実務でも非常に重宝されます。

  • インデントはPythonがコードのブロックを判断するために必要な仕組み
  • スペース4つでそろえる方法が多くの現場で使われる
  • if文、for文、関数定義やクラス定義など、あらゆる場面で登場
  • タブとスペースを混在させないように注意

インデントを正しく使えると、初心者の方でもコードが読みやすく書けますし、実務でもスムーズに開発を進められます。
ぜひインデントの扱いに慣れて、Pythonの書き方に習熟していってください。

Pythonをマスターしよう

この記事で学んだPythonの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。