インデント
Indent
概要(サマリー)
インデントとは、ソースコードの行頭に入れる「字下げ(空白)」のことである。
本や文書で段落の先頭を1字下げることがあるように、コードでも「このコードはひとつ内側にある」ことをわかりやすく示すために使う。インデントがあることで、ネスト(入れ子)の構造が一目でわかり、コードの読みやすさが大きく変わる。言語によっては、インデントが構文の一部(Pythonなど)になっており、インデントが崩れると動かなくなることもある。
詳細解説
インデントとは何か
インデントは、コードの階層(深さ)を視覚的に示すための仕組みだ。if 文やループ、関数の中身は、外側のコードより1段深く(右にずらして)書くのが一般的なルールだ。
function greet(name) {
if (name) {
console.log("こんにちは、" + name);
} else {
console.log("名前がありません");
}
}
関数の中身が1段、if や else の中身がさらに1段インデントされている。これにより「どのコードがどのブロックに属するか」がひと目でわかる。
インデントの単位:スペース vs タブ
インデントには「スペース」か「タブ」を使うが、どちらを使うかは言語・チーム・プロジェクトによって異なる。
| 種類 | 特徴 |
|---|---|
| スペース2個 | JavaScript/TypeScript/JSONなどで広く使われる |
| スペース4個 | Python/Java/C言語などで多い |
| タブ | 見た目の幅を環境で変えられるが環境差が生じやすい |
最も大切なのは「プロジェクト内で統一する」ことだ。スペースとタブが混在すると、見た目は揃っていても実際には崩れているというトラブルが起きる。VS Codeなどのエディタでは「スペース〇個に統一する」設定が可能だ。
Pythonにおけるインデントの特殊性
Pythonはインデントが「構文の一部」である点で特殊な言語だ。他の言語では {} や begin/end でブロックを囲むのに対し、Pythonはインデントそのものがブロックの範囲を決める。
def greet(name):
if name:
print("こんにちは、" + name)
else:
print("名前がありません")
このPythonコードのインデントを崩すと、IndentationError というシンタックスエラーが発生してプログラムが動かなくなる。
インデントを崩したコードの問題点
インデントが崩れたコードは読みにくいだけでなく、バグの発見が難しくなる。
function greet(name) {
if (name) {
console.log("こんにちは、" + name);
} else {
console.log("名前がありません");
}}
上のコードはインデントがない状態だ。動作はするかもしれないが、どこがどのブロックなのかを把握するのが格段に難しくなる。チームで開発する場合はコードレビューでインデントの乱れを指摘されることがある。
自動フォーマッターの活用
現代の開発では、Prettierなどの自動フォーマッターを使ってインデントを自動整形することが一般的だ。VS Codeであれば保存時に自動フォーマットをかける設定もできる。AIに「このコードをフォーマットして」と頼めば整えてくれることも多い。
AIコーディングとの関係
AIが生成するコードは通常、適切にインデントされた状態で出力される。しかしコードを一部コピーして貼り付けると、インデントがズレることがある。
AIへの効果的な指示の例:
- 「このコードのインデントが崩れているので、Prettierのスタイルに合わせて整えてください」
- 「スペース2個インデントで統一したコードを生成してください」
- 「このPythonコードをインデントエラーがないように確認してください」
コメントアウトとインデントを合わせて意識することで、他の人が読んでもわかりやすいコードを書けるようになる。
よくある勘違い
インデントは見た目だけの問題?
JavaScriptやHTMLではインデントを崩してもエラーにはならないが、「見た目だけの問題」と軽視するのは危険だ。インデントが崩れると、条件分岐やループの範囲を読み間違え、バグの発見が大幅に遅れる。特にチーム開発では「読める・直せる」コードが重要だ。
タブとスペースは混ぜてもいい?
タブとスペースを混在させると、エディタによって見た目が変わってしまい、実際の構造と見た目が食い違うことがある。Pythonではタブとスペースの混在がエラーになるため、どちらかに統一することが必須だ。
Pythonのインデントは何スペースでもいい?
Pythonはインデントの「幅」を揃えれば何スペースでも動くが、一般的にはPEP 8(Pythonのコーディング規約)でスペース4個が推奨されている。AIにPythonコードを生成してもらう場合も、スペース4個で統一されることが多い。
まとめ
- インデントとはコードの行頭に入れる字下げで、階層構造を視覚的に示す仕組みのことである
- JavaScriptなどではインデントが崩れても動作するが、読みやすさとバグの発見しやすさが大きく変わる
- Pythonではインデントが構文の一部であり、崩れるとIndentationErrorが発生する
- スペースとタブの混在は避け、プロジェクト内で統一することが重要
- Prettierなどの自動フォーマッターを使うと、インデントの管理を自動化できる
情報ソース
より詳しくAIに聞いてみよう
- インデントとは何かを、初心者でもわかるように説明してください。
- JavaScriptとPythonでインデントの扱いはどう違いますか?具体的なコードで説明してください。
- Prettierを使ってコードを自動フォーマットする方法を教えてください。
- タブとスペースの使い分けについて、現在のエコシステムでの主流はどちらか教えてください。
- AIにコードを生成してもらうとき、インデントのスタイルを指定する方法を教えてください。