「Unixという考え方」はやはり良い本でした

UNIXという考え方―その設計思想と哲学という本を読み終えました。
原著のタイトルはThe Unix Philosophyです。


これは1996年に出版された古い本ですが、Unixの考え方を通して、良いソフトウェアとは何かが分かる良書です。150ページほどしかないのですぐに読み終わります。
3月に大阪に行った時に、なんだか無性にこの本が読みたくなって、梅田の本屋で買って読んでました。


言っていることは、大体こんな感じ

  • 小さく、シンプルに保つ
  • 小さな機能を集めて、大きなシステムを構成する(柔軟さを持ったまま)
  • 出力はコンピュータが処理できるように
  • 最適化や速度よりも移植性


特に移植性の箇所が面白かったです。
"多少遅く動作しても、いつでも他の環境に乗り移るように移植性を持って作っておく方が良いこと"が印象的でした。
いま、遅くても次に新しいマシンができたら解決してしまう可能性が高いから。だからいつでも違うマシンに移れるように、今のマシン固有のハックをしないこと。

現在に受け継がれる思想

1つのことだけをうまくやる小さなプログラムを作り、それを自由に組み合わせられるようにしておくこと。そうすれば、大きな処理をしたい場合も、それらを組み合わせていけるし、柔軟性も上がる。重要なのはそれらが組み合わせできるように、ちゃんとプログラムが理解する出力をすること。
今でもWebでAPI公開して、マッシュアップして大きなものを作るってのにそのまま受け継がれてますよね。
あと、AmazonAWSのサービスは、個々のサービスはシンプルですが、色々な種類のものを提供して、CloudFormationやBeansTalkのような組み合わせを用意してPaaSのように見せる点など、この思想にかなり近いなと思いました。

完璧は死へのカウントダウン

最後に、「さらなる10のUnixの考え方」の章では、90%の解を目指すや、劣っているほうが優れているなど、なるほどねーという感じで読んでました。
特に、"Unixがあらゆる面で本当に良くなったら、今度は死滅の危険を覚悟しなければならない"という箇所。あらゆる面のニーズを受け入れてしまうと複雑になってしまい、Unixの思想と反するところが出てくるから。

完璧なものじゃなく、多少劣っていても、これらの思想を維持できていたからUnixは生き残ってきたのでしょう。