インデントはタブとスペースのどっちを使うべきなのか?

indent
コーディングをする皆様。インデントを今日もせっせと打っていらっしゃりますか?
さて、そのインデントを打つ時にタブ派スペース派に分かれることが多いと思います。もちろんプロジェクトで指定があれば、従うしかないんですが。
そんなインデントに関する疑問を突然払拭したく思い立ったので、思いっきり調べてみます。
ちなみに私は完全にタブだけを信じて、タブだけを可視化して、タブだけを使っているタイプの人間です。

SPONSORED LINK

現在主流のインデント方法

タブで統一するパターン。半角4文字分スペースのパターン。半角2文字分スペースのパターン。が現在の王道インデントのようです。
主要なコーディング基準やコーディング規約に書かれているインデントについての取り決めを見ていきます。

WordPressのコーディング基準

WordPress › PHP Coding Standards « Make WordPress Core

インデント
インデントは論理的な構造を反映するようにしてください。本物のタブを使います。スペースはダメです。こうすると、多くの閲覧環境で柔軟に扱えます。
例外: 何かを整列させて読みやすくしたいコードブロックがあれば、最初のインデントはタブを使い、その後でスペースで差分を埋めることができます。

なるほど地球上で最も使われるPHPで記述されたCMSであるWordPressはタブ派ですね。

PHP-FIGのコーディング規約

PSR-2: Coding Style Guide – PHP-FIG

インデントは4つのスペースとしなければなりません。タブによるインデントは用いてはなりません。
注意:スペースとタブを混在せず、スペースのみとすることにより差分表示やパッチ、履歴や注釈がずれる問題を回避できます。 スペースのみを使うことで、微妙なサブインデントの位置合わせを容易とすることができます。

PHPの標準コーディング規約を作っているPHP-FIGによると完全にスペース4つを使えとのお達しが。

GoogleのHTML/CSS/Javascriptのコーディング規約

Google HTML/CSS Style Guide

Indentation
Indent by 2 spaces at a time.
Don’t use tabs or mix tabs and spaces for indentation.

Googleが発表しているHTMLとCSSとJavascriptに関するコーディング規約ではスペース2つを使えとのこと。

タブなのかスペースなのか

もっともっと各所のコーディング規約を調べていこうと思ったのですが、いきなり三者三様状態になったのでストップしました。

その中でそれぞれの「なぜそうするのか?」の注釈を読んでいくと「ふーん」程度の理由しか見当たりません。
一番は「皆が統一すること」が重要であって「全部これでいいよ」というインデントはないということです。

まとめ

私が書いて、私しか編集しないコーディングになら、何を使ってもまったく問題ないと思います。というか、ファイルサイズを考慮すればタブが一番メリットがあるような気がします。
だけど、もしも世に公開するコードや大勢の関わるプロジェクトならば、インデント一つをとってみても決め事は必要になるというお話なんでしょう。タブん。
どんな場面にも対応できるようにしておけばそれで十分だと思いました。

今日も知識欲は止まらない。

関連トピック

Androidアプリのapkを解析してソースコードを見れるの?

Androidアプリを解析する方法が気になって調べてみると、とても簡単に解析できてしまうことに驚きます。 もちろん難読化といった処置を

PHPエラー対処方法「RSSをXML取得時に不正文字が存在する場合」

PHPでRSSをsimplexml_load_stringなどを使って解析する場合に不正な文字が含まれている時に発生するエラー対処方法の

PHPで配列のエラー「Cannot use string offset as an array」がでる場合の対処法

PHPで「Cannot use string offset as an array」が出たら確認したいポイントをまとめました。 このエ

JavaScriptでUA判別してスマホとタブレットを振り分ける方法

JavaScriptを使用してUAでiPhoneやAndroidのスマホを判定したり、増加傾向にあるタブレットを判別する方法メモ。 U

PHPのjson_encodeがUTF-8がエラーになってしまう

PHPでjson_encodeがUTF-8を指定していてもなぜか以下のエラーになる場合があります。 [code] PHP Warni

PHPのmb_send_mail関数やmail関数で文字化け問題を解消する

PHPのmb_send_mail関数やmail関数で文字化けに悩んでいませんか? 正直、色々な原因があるので特効薬のような対処法はあり

Yahoo!デベロッパーネットワーク「Your Request was Forbidden」エラーの対処方法

Yahoo!デベロッパーネットワークのWeb APIで「Your Request was Forbidden」のエラーが返る場合に確認す

MySQLでTAG機能としてタグ付けを実装するデータベース設計を考える

ブログなどでも「タグ機能」って便利ですよね。カテゴライズとはまた違うタグ機能をMySQLを使って設計する時に、どのように実装するかを検討

公開日: