最近ではUnixよりLinuxの方が圧倒的に身近に感じますが、LinuxもUnixを参考に作られたOSです。WindowsはUnixライクではないですが、MacもBSDなのでUnixライクなOSということになります。つまるところLinuxやMacを利用している開発者にとってはUnixが自分の環境の源流になるということでしょうか。
そのUnixをテーマとしてソフトウェア開発の設計や開発プロセスについて説明しているのがこの書籍です。副題にも「その設計思想と哲学」とありますが、UnixというOSをもとにどのようなプログラムがよいプログラムかを説明しています。
内容には最初にUnixの考え方についてまとめがあります。
- スモール・イズ・ビューティフル
- 一つのプログラムには一つのことをうまくやらせる
- できるだけ早く試作する
- 効率より移植性を優先する
- 数値データはASCIIフラットファイルに保存する
- ソフトウェアを梃子として使う
- シェルスクリプトによって梃子の効果と移植性を高める
- 過度の対話的インターフェースを避ける
- すべてのプログラムをフィルタとして設計する
ここだけでもこの書籍については読む価値があると思いますが、それぞれについて詳細な説明と簡単な事例が載せられています。
「小さなソフトウェアがすばらしい」「一つのプログラムには一つのことをうまくやらせる」「すべてのプログラムをフィルタとして設計する」ということは疎結合であり、処理や機能の責任が明確であることです。
「できるだけ早く試作する」ということは昨今ではアジャイル開発に通じる考え方です。特にある程度動くものができるまで詳細な仕様書は作らないというところは、空想より現実的なフィードバックに重点を置いていることを表しています。
「効率より移植性を優先する」「数値データはASCIIフラットファイルに保存する」なども移植性というと最近ではイメージあまりないかもしれませんが、仮想化などの抽象化ととらえることで機能をいかに隠蔽化するか、ポータビリティを高めるかということになります。
2001年に発行された書籍で、やや古い感じがありますが内容はとても洗練されており、何かしらのプログラムやシステムを作成する人は目を通すと得られるものが多いのではと思います。