インデントとは、テキストの一部で行頭の位置をずらすことである。
本項ではほぼ同じ意味の「字下げ」についても解説する。
日本語や英語を横書きにするとき、特に指定がなければ文章は一番左から書き始める。そしてその文章が長くなって改行が発生したら、当然次の行も一番左から始まる。
それに対して、行頭を一定量右にずらすことをインデント(indent)と言う。アラビア文字のように右から左に書く文字体系なら左にずらし、縦書きなら下にずらす。たとえばこの段落は右に2文字分インデントされている。インデントを加えることによって、その部分が目立つ。そこに様々な意味を込めたり、テキストを見やすくするために使われる。
状況によっては、インデントされた範囲の中にさらにインデントが加わることがある。この段落はさらに2文字インデントされている。これには文章の階層構造を分かりやすくする意味がある。
ただし、意味もなくインデントしまくってもかえって分かりにくいだけなので使いどころには工夫が必要だ。
ところで同じ「インデント」でも、最初の行だけをずらして残りはそのままにする形式を指す場合もある。この段落は先頭の行だけ一文字インデントされている。「インデント」という言葉が出てきたら、段落全体のインデントか行頭のみのインデントなのかに注意しなければならない。
例を挙げよう。ニコニコ大百科の編集画面にはインデントを増やす、インデントを減らすボタンがある。これを押すとどうなるかというと、選択した範囲で文章全体が右に3文字くらいインデントされる仕様となっている(css で padding-left
のプロパティが30px前後になる)。これに対して、htmlを直接いじって編集するとcssで text-indent
というプロパティを指定できるようになっている。こちらは指定した幅の分、最初の行だけを右にずらす仕様である(こちらを参照されたし)。
また、日本語では字下げという言葉もあるが、こちらも両方の意味で使われることがあるので注意したい。文字が下にずれるのは縦書きの場合だけだが、横書きでも普通に字下げという用語を用いる。なお国語事典などの用例では、「字下げ」は活字や原稿用紙の場合に使い、「インデント」はワープロソフトの機能だとしているものが多いが、巷には逆の用例もいくらでもある。
最初の行だけをずらすという意味での「インデント」には、逆に最初の行だけはそのままで二行目以降を右にずらすというパターンがある。これを「ぶら下がり」または「ぶら下がりインデント」と呼んだりする。この段落は二行目以降が右に一文字ずれたぶら下がりインデントとなっている。
行頭のみの字下げやぶら下がりインデントは段落の開始を目立たせるために使われる。これに対して段落全体を下げるインデントは、引用に使うことが多い。
印伝(いんでん、印傳)とは、印伝革の略であり、羊や鹿の皮をなめしたものをいう。 細かいしぼが多くあり、肌合いがよい。なめした革に染色を施し漆で模様を描いたもので、袋物などに用いられる。(Wikipedia - 印伝 より 引用)
もっともニコニコ大百科では編集画面で文章の引用をすると自動的に
印伝(いんでん、印傳)とは、印伝革の略であり、羊や鹿の皮をなめしたものをいう。 細かいしぼが多くあり、肌合いがよい。なめした革に染色を施し漆で模様を描いたもので、袋物などに用いられる。(Wikipedia - 印伝 より 引用)
といった感じでインデントに加えて枠で囲んだりしてくれる。
し | ┐ | 一 | 初 | ||||||
ま | な | 発 | 般 | の | 縦 | ||||
デ | よ | こ | た | い | 言 | 的 | 行 | 書 | |
ン | う | ん | 引 | こ | の | で | を | き | |
ト | に | な | 用 | と | カ | あ | 一 | の | |
し | 二 | 具 | は | が | ギ | る | 字 | と | |
た | 文 | 合 | 次 | 多 | 括 | ゚ | 分 | き | |
り | 字 | に | の | い | 弧 | 下 | は | ||
す | 以 | ` | 通 | よ | は | げ | 段 | ||
る | 上 | 目 | り | └ | 字 | る | 落 | ||
゚ | イ | 立 | ゚ | 下 | の | の | |||
ン | つ | げ | が | 最 |
プログラムはしばしば複雑な階層構造になる。そのためインデントを入れないとものすごく読みづらいソースコードができてしまう。以下はC言語でFizzBuzz問題を解くプログラムだが、インデントがないとちょっと構造が分かりにくい。
#include <stdio.h>
int main(void) {
int i;
for (i = 1; i <= 100; i++) {
if (i % 15 == 0)
printf("FizzBuzz\n");
else if (i % 3 == 0)
printf("Fizz\n");
else if (i % 5 == 0)
printf("Buzz\n");
else
printf("%d\n", i);
}
return 0;
}
ここでブロックごとに4文字分のインデントを加えてあげると以下のように見やすくなる。
#include <stdio.h>
int main(void) {
int i;
for (i = 1; i <= 100; i++) {
if (i % 15 == 0)
printf("FizzBuzz\n");
else if (i % 3 == 0)
printf("Fizz\n");
else if (i % 5 == 0)
printf("Buzz\n");
else
printf("%d\n", i);
}
return 0;
}
なおインデントは何文字にするかとか、スペースを使うかタブを使うかといった議論は宗教戦争に繋がりかねないのでうかつに始めてはならない。
ニコニコ大百科の記述に使われるHTMLも階層構造を多用する言語だが、編集時になぜかインデントが強制的に削除されてしまうのでソースが非常に見づらくなる。そのため複雑なリストやテーブルをhtmlで直接編集するときは何らかの工夫か根性が必要となる。
大抵のプログラミング言語では括弧によってブロックの階層構造を決定するため、インデントは人間がソースコードを読みやすくするために入れるものでしかない。しかし、中には括弧を廃してインデントによってブロックを決定する言語も存在する。典型的なのがPythonで、同じFizzBuzz問題は次のようになる。
for i in range(1, 101): if i % 15 == 0: print 'FizzBuzz' elif i % 3 == 0: print 'Fizz' elif i % 5 == 0: print 'Buzz' else: print i
こちらはインデントを取ってしまうとコードとして成立せず、コンパイルできない。他にはF#、Haskellなどがインデントで階層を決定する言語である。
掲示板
急上昇ワード改
最終更新:2024/03/28(木) 19:00
最終更新:2024/03/28(木) 19:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。