キーワード

インデントはスペース派?タブ派?プログラミング界の聖戦のゆくえとは –おつまみとしてのソースコード第19皿

ユニークで面白い、意外なアイデアが詰め込まれているソースコードの世界をおつまみ感覚で紹介するのが、情シスのじかんの「おつまみとしてのソースコード」です!週末も近づき、ちょっと一息つきたくなる木曜日の夕方にお届けしていきます。

Python、Java、C……。私たちが日々向き合うソースコードの世界において、もっとも基本的でありながら、長い歴史の中で議論を呼んできた一文字があります。

それは、インデントです。

「スペース派」と「タブ派」。この流派の違いは、時に開発現場で議論の火種となり、海外ドラマのネタにされるほどの仁義なき戦いへと発展してきました。なぜエンジニアはインデントにこだわるのでしょうか。そこには、コードの可読性に対するエンジニアたちの執念が込められています。

おつまみとしてのソースコード第十九回は「インデント論争のゆくえ」。スペース派とタブ派のそれぞれの言い分と、データ上の決着について紹介していきます!

この記事を読むことで、普段何気なく叩いているスペースキーやタブキーに、新たなドラマを感じるようになるかもしれません。
エンジニア仲間とのアイスブレイクや、一人でまったりする時間のお供に、ぜひご覧ください!

         

なぜ「聖戦」は起きたのか。それぞれの主張

インデント論争の歴史は古く、プログラミング言語の黎明期から続いているといわれています。ソースコードとしてはどちらでも問題なく動作しますが、インデントの種類について、なぜエンジニアは長年争いを続けてきたのでしょうか。それは、双方が掲げるそれぞれの「正義」があるからです。

タブ派の主張:軽量性と柔軟性

ご存じの方も多いかもしれませんが、実はかつては「タブ派」がスタンダードに近い存在でした。その理由は、データの軽量化です。複数のスペースを連続して打つ代わりに、わずか1バイトのタブ文字1つで済むという事実が、通信速度やストレージ容量が重視される時代には合理性の高い選択だったのです。

さらに、タブの強みは、表示幅を個人の設定で変えられることにもあります。「2段分で見たい」「4段分で見たい」といった個人の好みに、一つのコードで対応できるというアクセシビリティも兼ね備えている、というのがタブ派の主張です。

スペース派の主張:一貫した可読性

対するスペース派が掲げるのは、徹底した一貫性です。スペース1つは、どこまでいってもスペース1つです。それはつまり、エディタの種類、OSなどの環境に左右されず、どのような環境で開いても、同じ見た目が保証されるということです。

チーム開発において「誰が見ても構造が崩れない」ことは、コードの可読性を高める上で絶対的な正義である、というのがスペース派の主張です。

ドラマ『シリコンバレー』で描かれたインデントの争い

Aerial cityscape view of San Francisco from the Salesforce Tower

この論争がいかに熱いものであるかを象徴するエピソードが、人気海外ドラマ『シリコンバレー』に登場します。

『シリコンバレー』は、アメリカのカリフォルニア州にあるITの聖地・シリコンバレーを舞台に、主人公の天才プログラマー、リチャード・ヘンドリクスがスタートアップ企業を立ち上げ、巨大企業と戦いながら奮闘する姿をコミカルに描いた人気作品です。

作中では、技術者特有のこだわりや「あるある」が随所に散りばめられており、その代表例がインデント論争のエピソードです。

主人公の天才エンジニア、リチャードが、同じく優秀なエンジニアの女性といい仲になるのですが、破局の決定打となったのは性格の不一致ではなく「インデント流派の不一致」でした。リチャードがタブ派であるのに対し、彼女はスペース派だったのです。

深夜、彼女がスペースキーを連打する音に、リチャードは耐えきれなくなります。ついには、「タブのほうがサイズも節約できるし、効率的だ!」「タブは環境によって表示が崩れるから、スペースの方がいい」と口論が始まり、そのまま破局を迎えます。

技術者にとって、インデントの違いは、カップルの破局に至るレベルの価値観の相違である。そんなリアリティが、視聴者のエンジニアたちに共感されました。

データが語る勝敗。GitHub上の統計

さて、長く続いたこの聖戦ですが、近年あるデータによって決着が示されました。

Googleのデベロッパー・アドボケイトであるフェリペ・ホッファ氏が、GitHub上の数十億行のコードを対象に行った調査(『400,000 GitHub repositories, 1 billion files, 14 terabytes of code: Spaces or Tabs?』Google Cloud Blog,2016年)では、主要なプログラミング言語のほとんどにおいて、スペース派がタブ派を上回っていることが判明したのです。

面白いのは、言語ごとに傾向が異なることです。

スペースが圧倒的優位で、ほぼ100%に近い勢いであったのがPythonです。これは、Pythonの公式ガイド「PEP 8」でスペース4つが推奨されているため、その規律が守られていることが要因と考えられます。

一方、主要言語の中で唯一タブ派が優勢なC言語では、1970年代からの1バイトでも節約するという文化が今も息づいています。また、C言語で構築された有名なシステムであるLinuxカーネルでは、公式のコーディング規約で「インデントには8文字のタブを使用する」と厳格に定められています。この影響力もあって、C言語の世界ではタブ派が勢力を保ち続けているのでしょう。

なぜ、かつてスタンダードだったタブは劣勢に立たされたのでしょうか。

その要因は、現代のチーム開発におけるコードレビュー文化にあると言われています。ツールやブラウザベースのレビュー方法が普及したことで、環境によって表示幅が変わってしまうタブよりも、どの画面でも表示が崩れないスペースの方が安全であると判断されたのです。

また、タブの強みである、ソースコードを軽量化できるという点が、ストレージ技術や通信インフラの発展によって重要視されなくなったことも大きな要因となっているといえるでしょう。

参考:https://hoffa.medium.com/400-000-github-repositories-1-billion-files-14-terabytes-of-code-spaces-or-tabs-7cfe0b5dd7fd

現代の真の解決策。機械に任せる平和な世界

「タブがスタンダードだと思っていた」という方にとっては少し寂しい結果かもしれませんが、実は現代において、もはやこの議論に熱を上げる必要はなくなっています。

その理由は、PrettierやESLintといった自動フォーマッタの普及です。
エンジニアがインデントのフォーマットにタブ・スペースどちらを選択したとしても、ファイルを保存した瞬間に、プロジェクトで決められたルールに基づいて、ツールが強制的に変換してくれます。

かつてのエンジニアたちが激論を交わした聖戦は、ツールの進化によって終結を迎えつつあります。個人のこだわりを捨て、チームの生産性を重視し、機械による統一を受け入れる。これもまた、ソフトウェア開発が辿り着いた一つの最適化の形と言えるでしょう。

まとめ

インデントにスペースを選択するか、タブを選択するか考えるとき、その裏には「美しく、メンテナンスしやすいコードを残したい」というエンジニアの共通の想いがありました。

論争はデータによって一つの決着を見ましたが、かつてエンジニアたちがインデントに込めた情熱こそが、ソースコードの品質を磨き上げ、プログラミングの世界を進化させてきたといえるのではないでしょうか。

著者:羽守ゆき
大学を卒業後、大手IT企業に就職。システム開発、営業を経て、企業のデータ活用を支援するITコンサルタントとして10年超のキャリアを積む。官公庁、金融、メディア、メーカー、小売など携わったプロジェクトは多岐にわたる。現在もITコンサルタントに従事するかたわら、ライターとして活動中。
 
 

特集|仕事で疲れた脳みそをリフレッシュ♬
おつまみとしてのソースコード

仕事で疲れた脳みそをリフレッシュしたいとき、一人でゆっくりしたい夜、ちょっとした空き時間に、気軽に「つまめる」ソースコードの話題をお届けします。

まるで隠れ家バーでマスターが語るウンチクのように、普段は見過ごしがちなコードの奥深さや、思わず「へぇ〜!」と唸るようなユニークなアイデア、クスッと笑える小ネタを、ソースコードの世界を熟知した「情シスのじかん」がご紹介します。

コードを書くのが大好きなエンジニアさんも、ソースコードはちょっと苦手という情シス部門の方も、この特集を読めば、きっとソースコードの新たな一面を発見できるはず。

業務効率化のヒントになるTipsや、セキュリティ対策に役立つ情報も盛りだくさん。

さあ、あなたも「おつまみとしてのソースコード」で、技術の世界をもっと身近に、もっと楽しく感じてみませんか?

本特集はこちら

参照元

 

関連記事Related article

       

情シスのじかん公式InstagramInstagram

       

情シスのじかん公式Instagram

30秒で理解!フォローして『1日1記事』インプットしよう!

掲載特集

close close