◆ 作る側の見た目に合わせる必要がない
  ◆ むしろ読む側が決めたいから固定にするとかやめて
◆ ほぼインデント専用の文字だから置換などで困ることが減る
◆ ファイルサイズも削減
◆ スペースはネスト深いところでインデントのスペース数がずれてたりする
◆ 左右のキー 1 つで 1 つのインデント分移動できる

スペースなんてありえない

タブこそインデントのために存在する言っても過言ではない文字ですよ
宗教戦争が勃発しそうな話題ではありますが ここは譲れません!

インデントはタブです
スペースなんてありえません

最近スペースで 4 つだと思ったら途中から 5 つになってたとか微妙なスペースインデントを見ることがあって 「完璧に揃えられないならタブにしてよねー」とイライラすることがありました


まずインデントはデザインではありません
構造を表すものです

見た目が スペース 4 つがいいとか 8 つがいいとか 2 つで十分とか好みが色々あると思います
そういうのは使う人がエディタで好きにタブ幅を決めればいいのです

スペースにしてしまうと嫌々作った人に合わせないといけなくなります

アスキーアートみたいなスペースの幅まで必要なものならスペースにしないといけないと思いますが インデントとはそういうものじゃないと思います
むしろインデントの幅を作った側が固定できないといけないようなら何か間違ってます


また タブはインデント以外で使うことは普通まずないと思います
使っても文字列中の "\t" くらいです

インデントだけが専用の別文字になっていると色々都合良いこともあります
置換で 6 連続スペースを別のものに置き換えたらインデントまで壊れた なんてことはまず起きないです


単純に気づきにくいずれが起きないというのも大きいです
エディタにもよりますが インデント 1 サイズごとに縦線の補助線が表示されるものでもないと 4 スペースと 5 スペースが深いネストでわかりにくくなります
そのせいで 途中から 1 インデントのサイズが変わってるというコードはたまに見ます
タブならひとつずれてるだけで大きく見た目がずれるのでそんな心配いりません

バックスペースの押しすぎて 1 スペース少なくなってたというのも同じく起きないです


他にも スペースを 4 つや 8 つ打つのを一文字のタブで済むのでファイルサイズも節約できます
小さいようですが コンパイルや minify しないようなら意外とファイルサイズに差がでてきます


それと 左右のキーで絶対に 1 インデントずつ移動できるというのは大きいと思います
スペースキーだと  1 インデント分ずらすのに何度もキーを押すことになります


スペース側の利点といえばこれくらいしか思いつきません
var p = fetch(url, {
                       credentials: "include",
                       mode: "cors",
                       method: "POST"
                   })

{ と } が揃っていて綺麗です

ですけど 私としてはコレで十分です
むしろこっちのほうがいいです
var p = fetch(url, {
credentials: "include",
mode: "cors",
method: "
}

綺麗に {} を揃えていた場合 p を promise に編集したくなったら credentials などの行や }) の行もインデント調整に編集することになります

明らかにムダ ですよね

そんなところの見た目にこだわってるせいで 本来不要な数行のインデント調整なんてムダなやること増えてるんです
完全に一人でやっていて誰にも見せず誰も編集しようとすらしないコードならご自由にやってくださいです

ですが 誰かが編集するだろうものや他の人と一緒に編集するコードでスペースインデントはやめてもらいたいです

スペース派の理由を考えてみよう

冷静に考えてみても 周りにはスペースインデント派の人が多いんですよね
特にメリットというメリットが無いと思うのになぜなんでしょうか

タブを正しく制御できないエディタとかでも見れる用に?でしょうか
それはエディタの選択が間違ってるし 今時そんなエディタ使う人まで考えるのはムダだと思います
(textarea ?)


タブキーが押しづらい もしくは使えない?のでしょうか
最近はコードだけでなく普段から IME の補完でもタブキーを使うことが多いと思いますし タブキーが押しづらいというのはないでしょう
あってもすごく小数派に思えます
タブキーを別のキーに割り当ててるから使えないというのも 同じくほぼないと思います


コーディング規約がそうなってたから?
規約を選べる立場にない人が スペースでのコーディングに慣れてしまって 選ぶ立場になってもスペースにしてしまうというのはあるのかなと思いました
慣れって怖いですからね


タブってなんか気持ち悪いから?
それ偏見です!
プログラミング初心者ならともかくある程度経験してればそんなことはないと思います
「\n で改行ってなんか嫌」 と同じですぐに慣れるはずです
行中のタブはサイズがまちまちで書くべきじゃないと思いますが 行頭に連続してしか来ないインデントではむしろすごく見やすいものです


何かのエクスポート時にタブが困るから?
普通はないと思いますが エクセルに貼り付けが必要になったときに列が分割されて困るというのはあるかもしれません
でもタブってインデントくらいでしか使わないので スペースへの変換はすごく楽ですよね
置換で一発です

ですがその逆 何かの理由でタブにしないといけなくなった時 そんな時にスペースからタブへの置換って逆に比べてちょっと大変です
それに 途中からスペースの数がずれているというのはタブに比べて可能性が高いのでそれの修正まで入ってくることがあります


他のエディタや他の PC で見ても幅が変わらないから?
一理ありです
ですが プログラム書く以上 使う PC すべてでタブの幅調整くらいしておくものですし 新しいエディタを試してみるならまず最初に設定をいろいろいじると思いますし そこでタブ幅も設定するものかと思います

めんどくさいというのはわかりますが それ以上にスペースで書いている方がめんどくさいデメリットだらけですよ


相手がタブの設定できない人で見やすいようにしてあげたいから?
ネットで見かけました
優しい人ですね
ですが コードを相手が読むということはプログラムを扱う人なのでしょう
それならタブの設定方法とタブの良さを教えてあげる方がいいのじゃないかと思うんです





タブ派のひとがふえますようにっ