インデントはタブ派?スペース派?—迷えるあなたに徹底解説!

こんにちは。ゆうせいです。

「インデント、タブにする?それともスペース?」
これは初心者から上級者まで、誰もが一度は悩む問題です。

コードをきれいに見せるために必要なインデントですが、タブとスペース、どちらを使うかには深い意味があります。

今回は、それぞれの特徴と、実際にどっちを選べば良いのかをわかりやすく解説します!


インデントとは?まずは基本を確認!

インデントとは、コードの先頭に空白やタブで「字下げ」をすることです。

たとえば、Pythonだとインデントがないとエラーになります:

# 正しい例
if True:
    print("Hello")

# 誤った例(インデントなし)
if True:
print("Hello")  # ← エラー!

インデントはコードの構造を表す「見た目のルール」であり、言語によっては文法そのものです。


タブ vs スペース:それぞれの特徴を比較!

項目タブ(\tスペース( を複数個)
表示幅環境によって異なる(例:4文字)常に一定(たとえば4スペースなら4文字)
サイズ1文字で済む(ファイルサイズが小)複数文字になる(ファイルサイズが少し大)
柔軟性エディタ設定で見え方を変えられる見え方が固定される
チーム開発表示が人によってズレる可能性あり見た目が常に同じ
一貫性混在するとトラブルが起きやすいLinterで強制しやすい

例を見てみましょう:

タブ:

→print("Hello")   ← タブ1個(表示幅は環境依存)

スペース4個:

    print("Hello") ← スペース4つ(どこでも同じ見た目)

混ぜると最悪:

→  print("Hello") ← タブ+スペース(見た目も実行もバグのもと)

Pythonではどっちが推奨されている?

Pythonの公式スタイルガイド「PEP8」では、**明確に“スペース推奨”**とされています。

PEP8より:
「インデントにはスペースを使うこと。タブを混ぜないこと。」

なぜかというと、Pythonはインデントでブロックを判定する言語なので、見た目の不一致がバグの原因になるからです。


JavaScript、C、Go など他の言語では?

言語ごとの傾向を見てみましょう。

言語推奨インデント備考
Pythonスペース(4個)PEP8が標準。タブは禁止されることが多い
JavaScriptスペース(2〜4個)ESLintで統一可能。プロジェクトによる
C/C++タブ or スペース混在古くからの慣習に依存
Goタブgofmtで強制的にタブを使用
Rustスペース(4個)Rust公式スタイルがスペース推奨

つまり、言語によって「公式スタイル」が異なるため、その言語の慣習に従うのが正解です!


VS Codeなどのエディタで自動化しよう!

いちいち自分で気にするのは大変。そこで、エディタの設定で自動化しましょう。

VS Codeの設定例(スペース4つ):

{
  "editor.insertSpaces": true,
  "editor.tabSize": 4,
  "editor.detectIndentation": false
}

Goなどでタブが必要なときは、insertSpacesfalseに変更すればOK!


結論:どちらを使うかは「言語とチームのルール」に合わせよう!

  • Pythonならスペース一択(4つ)
  • Goならタブ一択
  • JavaScriptなどはプロジェクトごとの設定に従う
  • チームで働くなら LinterやFormatterの設定を揃えることが最重要

インデントの統一は、「読みやすさ」だけでなく「バグ防止」や「開発効率」に直結します。まるで道路の車線がバラバラだったら事故が増えるのと同じですね。


今後の学習の指針

次におすすめなのは、Linter(構文チェッカー)やFormatter(自動整形ツール)の設定方法について学ぶことです。

特に以下のツールはとても役立ちます:

  • prettier(JavaScript/HTML/CSS向けの整形)
  • black(Pythonのフォーマッタ)
  • gofmt(Goの標準整形)
  • .editorconfig(多言語対応の共通設定ファイル)

「エディタでどうやってLinter動かすの?」
「チーム全体でFormatterを統一するには?」

そんな疑問があれば、どんどん聞いてくださいね!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。