本の情報
- 著者:Mike Gancarz
- 監訳:芳尾 桂
- タイトル:『UNIXという考え方』
- 出版社:オーム社
- 出版年:平成13年2月
この本を読んで
この本の原本『The UNIX Philosophy』は1994年に出版されました。発行から20年以上経っても色褪せず、多くのUNIXユーザーに読まれている理由は、内容がコマンド等の技術的な面にフォーカスされているのではなく、UNIXが持つ特異的な哲学や考え方について語られているからだと思います。
「すぐに役たつことは、すぐ役に立たなくなる」という言葉がありますが、この本を読みながらその言葉がふと思い出されました。コマンドやサービスの起動方法、インターフェイスの仕様など、数年単位で変更していく世界でも、その根底にある理念は年月が経っても変わらずに存在します。むしろこの本では、そういった理念が、新しいサービスを作る側の人間の間で失われてしまっていないか、改めて考える機会を読者に与えています。
作者のMike Gancarzは、UNIXのアプリケーションを設計する専門家として、20年以上に渡ってUNIXへの働きかけを行ってきたそうです。そんな彼がなぜこの本を書こうと思ったのか、序章に述べられています。
UNIXの基本的な使い方の講義中ずっと、教え子たちはつまならそうな顔をしていた。パイプやシェル、フィルタといった概念の詳細までに至る授業を受けていたのに、その顔はその顔は何らメッセージを受けとっていないかのようだった。彼らは、今まで人々がUNIXを使ってどんなにうまくやってきたのかを覚えはしたが、「なぜUNIXなのか」という最初の理解に欠けていたのだ。
そして彼は、「なぜUNIXなのか」という問いについて、この本を通じて答えを出したいと述べています。UNIXのツールの使い方の説明に留まっている他の参考書とは異なり、それらの背後にある基本的な考え方を取り上げると書いています。逆に、この本を読んでもUNIXのコマンドを覚えたりシェルスクリプトを書けるようにはならないでしょう。それよりも、シェルスクリプトを書くときに心がける「考え方」について学ぶことができるはずです。
ところで、この「なぜUNIXなのか」という問いにちゃんと答えを出せる人は、実は少ないのではなないでしょうか。私自身、エンジニアとして会社に採用され、初めてLinuxでサーバーの構築を行った時、常に心のどこかに「なぜLinuxなのか」という問いが渦巻いていました。「Linuxは無料配布されているから、サーバー構築の現場でも良く使われている」という説明と共に構築を行い、自分の中でも「Linuxは安く使えるからサーバー構築によく使われているのだな」と納得をさせていたものの、それでもどこかに「それでもなぜLinuxなのか」という疑問は残り続けていました。もちろん、「Linuxは安く使える」「CentOSは無料配布されているから、エンジニアの独学に適している」という言葉はどれも真実であるし、実際にサーバーの構築に利用されている理由の一つではあると思います。予算がたっぷりあるプロジェクトばかりでは無いし、少しでも安く抑えなければいけない状況で必然的に重宝されているのがLinux等のUNIX系のOSであるという現状は確かにあるはずです。
しかし、それだけでは「なぜUNIXなのか」という問いの答えとしては不完全です。この本はその問いに対して様々な角度から丁寧に説明をしてくれています。エンジニアとして働く前に読みたかった一冊であり、エンジニアとして働く前に読んでも理解が追いつかなかったであろう一冊です。
本書で述べられている、UNIXの主な定理は以下の9つです。
1、スモール・イズ・ビューティフル
2、一つのプログラムには一つのことを上手くやらせる
3、できるだけ早く試作する
4、効率より移植性を重視する
5、数値データはASCIIフラットファイルに保存する
6、ソフトウェアを梃子(てこ)として使う
7、シェルスクリプトによって梃子の効果と移植性を高める
8、過度の対話的インターフェイスを避ける
9、すべてのプログラムをフィルタとして設計する
この9つの定理について、本書では詳細な説明が行われていますが、その根底にあるのは共通して「他者への配慮、未来への配慮」であると感じました。
1の「スモール・イズ・ビューティフル(小さいものは美しい)」という考えにしても、そこには、プログラムを他者が見たときの分かりやすさを考え、そのプログラムを後々保守していくことを考慮し、4の「移植性」にも繋がりますが、新しく使われるようになるハードやソフトと組み合わせて使用される未来を見据えるという思考が見てとれます。プログラムは必ず、他者が修正を加え、姿形を変えていく運命にあります。その時、制作者である自分にしか分からない、もしくは自分さえも見返した時に理解するのが困難な巨大なプログラムを作成しても、それは未来に繋がっていくことはなく、廃れていくことになります。本書では、ソフトウェアとは「作るものではなく、成長していくもの」であるとし、新しいアーキテクチャに移植できなければやがて廃れていくからこそ、「移植性」を何よりも重視すべきであると述べています。
6の「ソフトウェアを梃子として使う」という項目では、「独自技術症候群」に陥ってしまうことに警鐘を鳴らしています。他者が作ったプログラムを一切使わず全て自分達で作り上げることに執着してしまう「独自技術症候群」に陥ってしまうと、他者が作成したプログラムを拡張して付加価値を与えるということの重要さを見逃してしまいます。そしてその付加価値を加えるという作業を、結果的にユーザーは高く評価してくれたりするのです。
こういったUNIXの考え方について、本書では以下のように述べられています。
UNIXの考え方とは、常に将来を見据えながらオペレーティングシステムとソフトウェアの開発にアプローチすることだ。そこでは、常に変化し続ける世界が想定されている。将来は予測できない。
20年前には当たり前に使われていたVHSもフロッピーディスクも姿を消しているように、現在当たり前に使われている機器やシステムが数年後には廃れていることもあるでしょう。UNIXは、そんな風に未来は常に変化し続けていくという想定に経って作られています。そこに「だからこそUNIXを使う」という答えがあるのではないでしょうか。