インデントにタブではなくスペースを使う理由


コードを書く際によく話題になるインデント。タブを使いますか?スペースを使いますか?それともほかのなにかを使いますか?

私はスペースを使います。 それはインデントが見易さのためのものだからです。

タブは制御文字

タブは制御文字で見易さの調整に使われるものではありません。確かに昔はタイプライターの位置調整のために使われていたそうですが、今はそういった使われ方はしません。もしタブ文字がタイプライターにおける水平タブと同じ意味を持つのなら、タブ幅を個人で変えられるようにはしなかったでしょう。

TSV では、 タブは異なる属性だとか、異なる種類だとかいう意味を表すための区切り文字になります。 タブでインデントを行ったソースコードをコピーしてExcelに貼り付けると、タブでインデントされた文字は別の列に貼り付けられます。 そういった情報の制御文字として タブは使われています。

ありがちな誤解

このようにタブを制御文字として扱うと、「インデントは情報の深さを表すものだから、タブでインデントしてもいいじゃないか」と考えてしまうこともあるかもしれません。 たしかにタブを使っていれば、先ほど例に挙げた Excel にコードを張り付けるケースでは、インデントされた行はそれだけ右のカラムに貼り付けられます。

しかし、情報の深さはインデントだけで決まるものではありません。 そのため、仮にすべてのコードがきれいにインデントされているとしてもタブを使うべきではないです。

下に情報の深さをインデントを使って表した例を示します。 (都合上 下の例ではインデントをスペース2つで現しています。)

インデントを情報の深さとしてとらえると、1つ目では特に深い情報がなく、2つ目では1行に書ける関数でも、仮に引数が1つでも改行とインデントが必要になります。 また2つ目ではカンマの存在意義がありません。

最後に

最初に書いた「私はスペースを使います。 それはインデントが見易さのためのものだからです。」というのはわかっていただけたでしょうか。 インデントは見易さの問題を解決する目的があるので、見える文字であるスペースを使っています。


Android アプリ Your Place のコードを公開します


東京メトロ オープンデータ活用コンテストがありました。 そのとき私が応募したアプリのソースコードを公開します。

概要

東京メトロの駅の中から行き先を決めてくれるアプリです。 家にいたくないけれど行き先が決まっていないときに使えます。 Android Wear とも連携し、 Android Wear で行き先や周辺スポットを見ることもできます。

理想

開発に使える時間の制約などから、単純に「行き先を決めてくれるアプリ」になっていますが、次の機能も実装したいと思っていました。

  • 気学を用いて運勢のいい方角のなかから行き先を決める。
  • 運勢のいい方角と現在地をマップ上で見られるようにする
  • 行き先を決める中で、そのときの気分を考慮する。
  • 行ったことのある東京メトロの駅を記録し、全駅コンプリートしたらなにかを出す。
  • 目的地の駅や乗り換えの駅に接近したら、 Android Wear に通知を出す。
  • 複数人で出かけるときの設定項目を考える。
  • タップだけでなく、 シェイク して行き先を決められるようにする。

要するにパーソナライズして本当におすすめの駅を探すということです。

振り返って

初めて作った Android アプリ にしてはそれなりによくできたのではないでしょうか。

class の名前などは知識不足もあり、 修正した方がいいものもあります。


ruby multi varsion control with pik


pik is a multi version control tool, which can be used in windows. When the time I wrote this article, pik on github says No longer maintained but I prefer to use pik on windows.

Pitfall

Tested on Windows 7 32bit.

Execute msi installer and install it to windows, but you can’t use pik. Some modification are required.

First, get new installer pik-0.3.0.pre.msi, which is the newest on writing this article, from the page of installer, and execute it.

It is installed into C:\pik as default. Then, open C:\pik\pik.bat and change %HOME% to %USERPROFILE% on 7th line.

In Windows, environmental variable %HOME% is not defined. %USERPROFILE% works well. It’s the same on Windows 8.1.


A Life Summary of an Gypsy