インデントとは?
この記事の動画版はこちら(画像クリックでYoutubeに飛びます)
インデントとは何か?
インデントとは、行の先頭にTabキーやスペースキーで空白を挿入して「字下げ」を行うことです。
字下げを行うことでソースコードが読みやすくなるため、プログラミングではインデントを必ず行います。
例えば、条件分岐処理やループ処理などを行う際、「その条件にマッチした時に行う処理」を中括弧 { } の間に記述します。
この時、ブロックの中の記述を1段字下げしておくと、「この部分がブロックの中」であることが分かりやすくなります。
全てが左揃えになっているよりも、ぱっと見で分かりやすいですよね。
上のように条件が1つしかないシンプルな条件分岐なら良いのですが、ある条件にマッチした場合にさらに別の条件分岐が行われるような複雑な場合もあります。
例)複雑な条件分岐処理
このような場合、インデントされずに全てが左揃えになっていると、どの { が どの } に対応しているのか分かりづらくなります。
例)インデントを行わないと...
インデントをしっかり行うと、こういったソースコードも見やすくなります。
このように、Tabやスペースを使って行頭を字下げをすることで、ソースコードの構造を見やすくするのが「インデント」です。
プログラムではこのように「ある処理」の中に「別の処理」が入っている構造が多くあります。
こういった階層構造のことを「ネスト」や「入れ子」と言います。
プログラミングではよく出てくる言い方なので覚えておきましょう!(「ネストされている」「入れ子構造になっている」といったように使われます)
インデントの方法
通常、プログラミングのインデントは以下のどれかのパターンで行います。
①Tab1つ
②半角スペース2つ
③半角スペース4つ
Tabを使う場合と、スペースを使う場合があり、さらにスペースの場合は「2個(字下げ幅が少なくスリム)」または「4個(字下げ幅が大きく分かりやすい)」という2パターンがあります。
どれを使うかはプログラマーの好みで分かれます。
ただし、パターンが混在しないように、どれかで統一するようにしましょう。
開発プロジェクトに参加した場合は、コーディング規約で決められていますのでそれに従います。
ちなみに、Tabでインデントを行うことを「ハードタブ」、スペースでインデントを行うことを「ソフトタブ」と呼ぶこともあります。
Tabを使う際の注意点
Tabを使う場合、閲覧するエディタによって異なる書式で表示される場合があります。
例)インデントにスペースを使った場合
例)インデントにTabを使った場合
スペースを使う際の注意点
インデントの度にスペースキーを2回(または4回)連打していると、どこかで3回や5回など、数を打ち間違えてしまうことがあります。
また、半角スペースではなく、間違って「全角スペース」が混在してしまった場合、プログラムが実行エラーとなることがあるので注意が必要です。
ATOMなどのエディタでは「どのインデントスタイルを使うか」を予め設定しておけば、キーボードのTabを1回押すだけで、自動的に入力されるようになっています。
例:インデントスタイルを「スペース4」に設定しておけば、Tabキーを1回押すとスペース4つが自動入力されます。
この機能を使って、スペースでインデントする場合もTabキーを使うようにしておけば間違いも無く、入力も早いのでおすすめです。
プログラムの動作に影響はあるのか?
Tab、スペースのどちらを使おうとプログラムの動作に直接的な影響はありません。
ソースコードの書きやすさ、読みやすさで自分に合うものを選びましょう。
タブ/スペース論争
インデントにTabを使うかスペースを使うかという点は、プログラマーの中でも意見が分かれており「タブ派」「スペース派」なんて呼ばれることもあります。
IT業界を舞台にした海外ドラマ「シリコンバレー」でも、このタブ/スペース論争を面白おかしく描いたシーンがありました。
ITオタクの主人公リチャードは、強硬なTab派。
せっかくガールフレンドが出来たのに、彼女がスペース派だったため、言い争いになり別れてしまいます・・。
なお、このウィニーという女性は、インデントの際にスペースキー連打で入力しています(すごいタイピング量...)
ちなみに、リチャードが経営するITベンチャー「パイドパイパー」では、「インデントにはTabを使うこと」と社則に書いてあるそうです(笑)
海外ドラマ「シリコンバレー」は、プログラマーにはとても面白いドラマなので、興味があれば是非見てみてくださいね。
まとめ
プログラミングを行う際は、ソースコードを読みやすくするために「インデント」を必ず行いましょう。
Tab/スペースといったインデントスタイルは、コーディング規約がある場合はそれに従い、無い場合は自分の好きなスタイルを使いましょう。
そして、どれを使うかは好みですが、少なくとも同一プロジェクトのソースコード内では統一するようにしましょう。