スペース派が多いなんて信じられない
◆ タブ使うなら行の途中で上下の行と位置揃えるときもタブ使わないといけないと思ってる人がいる
◆ github のリポジトリだとタブ派でも仕方なくスペースなことも多い
◆ IDE ならどっちでもいいからデフォルトのスペースなまま
◆ 海外はスペースが基本なのかも
◆ github のリポジトリだとタブ派でも仕方なくスペースなことも多い
◆ IDE ならどっちでもいいからデフォルトのスペースなまま
◆ 海外はスペースが基本なのかも
最近話題になってた github のリポジトリではタブとスペースどちらが多いのか
圧倒的なスペースの多さに驚きました
スペースを使うメリットなんてそうないのに……
「スペースキーを連打するのが楽しい」とか言われたら仕方ないけど 「スペース派だけどタブキーでインデント入力してる」 なんて言ってたら 素直にタブ使え っていいたくなります
信じられないのでなぜこんなにスペース派がいるのか考えてみました
ずれるなんてないし というかわざと見やすいサイズにずらすのがタブなんじゃないの?と言ってみると こういうことを言ってたようです
行の最初以外で上下の行を揃えるためにタブを使っていて 100 の部分を書いた人環境では揃えていたのに タブのサイズを変えて見たせいでずれているということです
「インデント」というと行の最初の文字が出てくる場所をずらすもので 行の途中は含まないと思います
普通タブ派な人でもさすがに行の途中にタブ使う人は稀でしょう
ですが タブインデントをするなら行中の揃えるところもタブにしないといけないと思ってる人がいるようです
話がずれますが 上下の行で key value の value 部分などを揃えるのはしないほうがいいと私は思ってます
まず 最長の文字列が更新されたら全部変更しないとだめです
ただでさえ面倒なのに 差分管理してると変更点がわかりづらいです
それと 「fg: 100」 だったり 「fg: 100」 だったりになるわけですから grep 検索に弱いです
正規表現で任意の数の空白ってすればいいだけかもしれませんが大量のテキストだと正規表現検索はかなーり遅いんです
github というと大勢で一緒に作っているのがメインですよね
そうなるとフォーマット統一のためにコーディング規約が使われることが多いと思います
知名度のある規約には意外とスペースを使ってるのが多いんです 私の知る限り
JavaScript はこの規約を使うべきみたいなのもなく厳しくない自由なイメージですが PHP だと PSR というのが ほぼ一択で必須 とか言われてると聞いたことがあります(どの程度真実かは知らないです)
その PSR というのはスペースらしいので それをつかってるリポジトリではスペースになってしまいます
私も誰かと一緒にコードを書くことがあるとすでにあるのに合わせるので嫌々スペースになってるのもあります
とは言っても自分で書くときはもちろんタブ 他の人と共有する(git なら push する)直前に置換してます
そういう理由で github のリポジトリ調査だと 「個人の好み」 の調査はできていなそうです
自動インデントな上 Tab キー押すと 1 つ分インデントを深くなって Shift-Tab キーで 1 つ分インデントが浅くなるならスペースでもタブでもどっちでもいいという人が多いと思います
それでも 方向キーで移動したときに スペース単位で移動になって気持ち悪いし インデントレベル 1 つに対してタブ 1 つが対応していてタブのサイズを調整するというのが一番キレイじゃん!と思うので私は IDE などでもタブにしたい人です
こんな感じのこだわりがないなら IDE やエディタのデフォルトになってスペースという人もけっこういるんじゃないかなーと思います
つまり日本国内の話です
それに対して github は海外のサービスで日本人の割合はそうないです
なので実は 海外ではスペースが基本という文化があるのかもしれません
上の方で書いた 「知名度のあるコーディング規約はスペースが多い気がする」 というのも知名度の高いコーディング規約が日本発なんてまあないでしょうから海外ではスペースが一般的というのも十分考えられます
go のほぼ完璧とも言えるタブのユーザの数を見て go に興味がでました!
圧倒的なスペースの多さに驚きました
スペースを使うメリットなんてそうないのに……
「スペースキーを連打するのが楽しい」とか言われたら仕方ないけど 「スペース派だけどタブキーでインデント入力してる」 なんて言ってたら 素直にタブ使え っていいたくなります
信じられないのでなぜこんなにスペース派がいるのか考えてみました
インデント=行頭じゃない人がいる
前にスペース派の人から聞いた理由に「タブだとサイズ変えるとずれることがある」というのがありましたずれるなんてないし というかわざと見やすいサイズにずらすのがタブなんじゃないの?と言ってみると こういうことを言ってたようです
var a = {
abcde: 100,
fg: 100,
}
abcde: 100,
fg: 100,
}
行の最初以外で上下の行を揃えるためにタブを使っていて 100 の部分を書いた人環境では揃えていたのに タブのサイズを変えて見たせいでずれているということです
「インデント」というと行の最初の文字が出てくる場所をずらすもので 行の途中は含まないと思います
普通タブ派な人でもさすがに行の途中にタブ使う人は稀でしょう
ですが タブインデントをするなら行中の揃えるところもタブにしないといけないと思ってる人がいるようです
話がずれますが 上下の行で key value の value 部分などを揃えるのはしないほうがいいと私は思ってます
まず 最長の文字列が更新されたら全部変更しないとだめです
ただでさえ面倒なのに 差分管理してると変更点がわかりづらいです
それと 「fg: 100」 だったり 「fg: 100」 だったりになるわけですから grep 検索に弱いです
正規表現で任意の数の空白ってすればいいだけかもしれませんが大量のテキストだと正規表現検索はかなーり遅いんです
嫌々スペース説
今回の対象は github ですgithub というと大勢で一緒に作っているのがメインですよね
そうなるとフォーマット統一のためにコーディング規約が使われることが多いと思います
知名度のある規約には意外とスペースを使ってるのが多いんです 私の知る限り
JavaScript はこの規約を使うべきみたいなのもなく厳しくない自由なイメージですが PHP だと PSR というのが ほぼ一択で必須 とか言われてると聞いたことがあります(どの程度真実かは知らないです)
その PSR というのはスペースらしいので それをつかってるリポジトリではスペースになってしまいます
私も誰かと一緒にコードを書くことがあるとすでにあるのに合わせるので嫌々スペースになってるのもあります
とは言っても自分で書くときはもちろんタブ 他の人と共有する(git なら push する)直前に置換してます
そういう理由で github のリポジトリ調査だと 「個人の好み」 の調査はできていなそうです
IDE 説
IDE や高機能エディタだと基本的にスペースでもタブっぽく動きます自動インデントな上 Tab キー押すと 1 つ分インデントを深くなって Shift-Tab キーで 1 つ分インデントが浅くなるならスペースでもタブでもどっちでもいいという人が多いと思います
それでも 方向キーで移動したときに スペース単位で移動になって気持ち悪いし インデントレベル 1 つに対してタブ 1 つが対応していてタブのサイズを調整するというのが一番キレイじゃん!と思うので私は IDE などでもタブにしたい人です
こんな感じのこだわりがないなら IDE やエディタのデフォルトになってスペースという人もけっこういるんじゃないかなーと思います
海外がメインだから説
考えてみるとこれまでのスペース派とタブ派が拮抗しているとか タブ派勝ってる事のほうがよくみるというのは 基本日本語の記事ですつまり日本国内の話です
それに対して github は海外のサービスで日本人の割合はそうないです
なので実は 海外ではスペースが基本という文化があるのかもしれません
上の方で書いた 「知名度のあるコーディング規約はスペースが多い気がする」 というのも知名度の高いコーディング規約が日本発なんてまあないでしょうから海外ではスペースが一般的というのも十分考えられます
まとめのような感想
IDE でスペースとタブの違いがほとんどなくなってるのだし タブで幅選べるみたいな感じで IDE の設定でタブにしていたらインデント部分は実体がスペースでも完全にタブ扱いする(もちろん逆もできる)という設定があってもいいのになーgo のほぼ完璧とも言えるタブのユーザの数を見て go に興味がでました!
COMMENT
コメント一覧 (4)
-
- 2018/12/27 16:43
-
「インデントが論理構造を表す言語であるが、言語仕様としてタブ文字をインデントに使用することを禁止している」YAMLの例もありますね。曰く「タブ文字の扱いは環境に依存する部分が大きく、そうした違いは言語仕様で吸収するにはあまりにも困難すぎる」ということだそうです。
https://yaml.org/faq.html
>Tabs have been outlawed since they are treated differently by different editors and tools. And since indentation is so critical to proper interpretation of YAML, this issue is just too tricky to even attempt.
-
- 2020/02/07 14:40
- value部分を揃えるのは、可読性の向上や、矩形選択で値を別の場所にコピペする時に有用です。
-
- 2022/03/08 16:02
-
1行を折り返して書くときに折り返した行をイコールの下に合わせる人だとタブサイズで他の人が見たら合わなくなる
$konoBlogNoCommentName = hogehoge + fugafuga + nanchara +
nanchara2 + nanchara3
こんな感じで長すぎる行を折り返したりする場合
あとは、github のように誰が見ても同じに見えてもらいたい環境だと自然とスペースに落ち着くのかなとタブはタブサイズが見る側の定義なので見る側に依存する
-
- 2022/03/08 19:44
-
>>3
> イコールの下に合わせる
個人的にはこのフォーマットは避けるべきだと思うので やらないためにもタブを使う方がいいと思うのですよね
インデントは 1 段ずつのみで それ以外の幅は許容すべきではないという考えです
左辺の変数名が変わると全部のインデントを調整なんてバカげてると思いますし フォーマッタが自動でやるにしても余計な差分が発生します
揃ってるほうが見やすいからどうしても揃えたいなんてケースはこう書きますね
$var =
$a +
$b +
$c;
> 誰が見ても同じに見えてもらいたい
これは本来のインデントではなく上の例のようなスペースで見た目を揃えるから発生するものだと思います
ユーザのディスプレイ等の環境で適してる幅は異なるので ユーザが変更できるタブのほうがメリットは多いと思うんですけどね
コードのインデント構造によって 4 より 2 や 8 のほうが見やすいケースもあって 変えてから見るときもあるのでタブのほうが扱いやすいです