UNIXという考え方

その設計思想と哲学

YAPC::Asiaでやたらと耳にした『一つのことをうまくやる』という言葉の出どころである『UNIXという考え方』を読んだ。

UNIXは30年以上も使われているOSで、20年くらいの歴史のWebよりも長い。ちなみに調べてたら日本UNIXユーザ会は、1983年6月に設立されたということで同じ誕生月、同い年ということを知った。

何はともあれ、Webのフロントエンドとというのはドッグイヤーのごとく、変化が激しい。毎年新しいJSフレームワークが出てきて正直ついていけていない。こうゆう時こそ、なにごとも歴史から学ぶ必要がある。

YAPC::Asiaにおいても、UNIXの考え方についてはWeb・フロントエンドのセッションにおいて上記の言葉をよく聞いたので、頭の良い人たちはすでに気づいているのであろう。

UNIXの考え方について、以下の9つが挙げられている。

  • スモール・イズ・ビューティフル
  • 一つのプログラムには一つのことをうまくやらせる
  • できるだけ早く試作を作成する
  • 効率より移植性
  • 数値データはASCIIフラットファイルに保存する
  • ソフトウェアの挺子を有効に活用する
  • シェルスクリプトを使うことで挺子の効果と移植性を高める
  • 過度の対話的インタフェースを避ける
  • すべてのプログラムをフィルタにする

なかでも、『プログラムはフィルタ』、『プログラムはデータを作らない。人間がつくる』という言葉は興味深かったし、なるほどなぁと思った。プログラムはデータの通り道と考えれば、『一つのプログラムには一つのことをうまくやらせる』だけでいい。機能が足りないのであれば、stdin stdout stderrの入出力があるのでパイプでつなげて、必要な機能を持つ次のプログラムに渡せることができる。

結果として、プログラムは小さく保てるし、『部分は全体の総和より大きい』というように、プログラムの組み合わせで柔軟性も持てる。

個人的にもNode.jsのCLIツールだが、GAERstdinを受けつけるようにした時、すごく感動したし、世界が広がったように感じた。こんな感じで繋げれるようになった。

stylestats -f json -n path/to/css/file.css | gaer -t UA-xxxxxxx-x -r ReportName

30年も使われているということは必ずそこには理由がある。ページ数も少なくコンパクトにまとまっているので、そのエッセンスを取り入れるためには最適な一冊だ。まさしく、エンジニアの教養としての一冊だろう。