インデント (字下げ)
テキストの行頭に空白を挿入して、段落の開始や階層構造を視覚的に示す書式設定。日本語では全角 1 文字分の字下げが標準。
インデント (indent、字下げ) は、行の先頭に空白を挿入してテキストの構造を視覚的に表現する手法です。日本語の文章では段落の冒頭を全角スペース 1 文字分下げるのが標準的な書式で、小学校の作文指導から教えられます。英語では段落の 1 行目を字下げするか、字下げをせず段落間に空行を入れるかのいずれかで、字下げ幅は媒体の書式規定によって決まります。和文のように「1 文字分」と一律に決まっているわけではありません。
プログラミングにおけるインデントは、コードの階層構造を示す重要な要素です。Python ではインデントが構文の一部であり、インデントの深さがブロックの範囲を決定します。他の言語 (JavaScript、Java、C など) では波括弧 {} でブロックを示すためインデントは必須ではありませんが、可読性のために統一的なインデントが強く推奨されます。Python の公式スタイルガイド PEP 8 は 1 段あたり半角スペース 4 文字を推奨しており、Python 3 では同じブロック内でタブとスペースが混在すると TabError: inconsistent use of tabs and spaces in indentation で実行そのものが止まります。Python 2 では既定でエラーにならなかったため、古いコードを持ち込んだときに最初につまずく箇所です。
インデントに使う文字は「タブ」と「スペース」の 2 派に分かれ、プログラマーの間で長年の論争があります。タブ (U+0009) は 1 文字で表示幅を設定で変えられる利点がありますが、環境によって見え方が変わります。既定のタブ幅は端末や処理系では 8 桁 (Python の str.expandtabs() の既定値も 8) ですが、エディタの設定では 4 桁が多く、同じファイルでも環境によって段の深さが揃って見えません。スペースは表示が一定ですが、インデント 1 段に 2〜4 文字を消費します。文字数カウントの観点では、タブ 1 文字とスペース 4 文字は見た目が同じでも文字数が異なります。混在を防ぐには、.editorconfig のようなエディタ横断の設定ファイルで使う文字と幅を固定しておくのが実務的です。
ウェブの文脈では、HTML は連続するスペースを 1 つに圧縮するため、インデントを表現するには CSS の text-indent プロパティを使います。text-indent: 1em で全角 1 文字分の字下げが実現できます。<pre> 要素内ではスペースやタブがそのまま表示されるため、コードブロックのインデントを保持できます。
日本語の原稿用紙では、段落の字下げは 1 マス (1 文字分) です。400 字詰め原稿用紙で段落が 10 個あれば、字下げだけで 10 文字を消費します。ここで注意したいのは、字下げが文字数に入るかどうかは数え方によって変わる点です。原稿用紙は 1 マスを 1 文字として数えるので字下げも消費しますが、ワープロやウェブの文字数カウントでは行頭の空白を含める数え方と除く数え方の両方があります。800 字以内といった上限が決まっている課題では、まず提出先が空白を含めて数えるのかを確認するのが先で、数十文字を節約するために段落を減らして構成を崩すのは本末転倒です。
メールやチャットでは、引用を示すインデントとして「>」記号が使われます。これは単なる慣習ではなく、プレーンテキストのメール形式を定めた RFC 3676 (2004 年) が、行頭に連続する「>」の数をそのまま引用の深さ (quote depth) として扱うと規定しています。Markdown でも「>」はブロック引用を示します。この「>」も 1 文字としてカウントされるため、引用が深くなるほど (>>>) 文字数が増え、引用を残したまま返信を重ねると本文以外の文字が積み上がっていきます。