時代は2tabへと


その昔「4tab邪道:p」とか言われることがよくあった。tabは8tab(= 半角スペース8個)と相場が決まっていて、4tabでプログラムを書いていると普通の環境(8tab)で見るとレイアウトが崩れて見えるからだ。


それがいまや4tabでもインデントが深くなると画面右まで占拠して見づらいので2tabを好む人すらいる。
これは、近年のプログラミング言語にはインデントが深くなる傾向があるからだ。


例えば、namespace。これで全体を囲うためこの時点でインデントがひとつ深くなる。そのあとclass。class内classだとさらにインデントされる。using (…) { } や try〜catch、delegateなど、何かにつけてインデントが必要になる。


いまどきは画面が大きいから問題にならないかというとそうでもない。ノートパソコンでコードを書いたりしたいのだ。そのときに画面の右端を超えてしまうのでは困るのだ。やはり1行は80〜100文字程度であって欲しい。そうなると4tabや2tabが好まれるのも致し方ない。

インデント不要論


そもそもインデントは必要なのだろうか?


昨日、ちょっとしたスクリプト言語を作っていたのだが、(C#で言うところの)Mainメソッドしかないので、インデント不要なのである。それほどプログラムが長くなるわけでもないのでプログラムは行の左詰めで全然問題がないのである。


そもそも何故インデントが必要かというと、クラスや関数が見つけにくいからである。ところが、最近のコードエディタには、コードの折りたたみ機能があるのでわざわざインデントをしなくともコードを折りたたんでおけばいいのである。


あれ?ひょっとしてインデントっていらないんじゃね?

tabは仮想化されるべき


まあ、2tabでも4tabでも良いのだが、これがソースファイル上のメタデータとして付与されていないので、開いてみないとわからないし、開いて違和感があれば2tabにしたり4tabにしたりするというのが実情である。


自分は4tabが好みだとしても2tabで書かれたファイルは、やはり2tabで編集していくべきだろう。2tabで書かれているプログラムは、たいてい深いインデントがされているので、4tabだと画面右端を遙かに超えてしまうからである。


結局のところ、このように2にも4にも8にも自由に解釈されるtabという文字コード自体に問題があると思うので、相手に渡すソースファイルには使用したくないのである。


だから、tabは保存するときにスペースに変換されるような設定でコードを書くのだが、そうすると読み込んだときにスペースになっている。スペースになって何が困るかというと、カーソルキーで移動させるときに無駄に回数を押さないといけなかったり、デリートキーやバックスペースで削除するときにキーを叩く回数が増えるのである。これが非常に鬱陶しい。


そこで、コードエディタでは、行頭から続いている半角スペースに関してはtabのようにふるまって欲しいわけだ。


つまり、行頭から12個の半角スペースが続いているなら、これらは仮想tabとみなして、(仮想4tabなら)3回デリートキーを押せば削除されて欲しい。カーソル移動にしても"←"キーを1回押せば4つずつ移動して欲しいわけだ。


簡単なテストプログラムを作って使ってみたところ、これがコードを書くには結構便利なんだ。
世間のテキストエディタにもこういう機能、搭載されないかなぁ。