概要
所感
20年近く前に発行された本であるが、基本的な考え方は普遍的で現在も通用すると感じた。 (むしろ、現代の考えはこれが流行り?(マイクロサービス、API、コンテナ))
スモールイズビューティフル、1つのプログラムには1つのことをやらせる、素早く試作、移植性の重視、独自開発に固執せず他の良いコードを上手く借りてくるなどの基本的考えから、時代に応じたハードウェアの進化に対応するために柔軟性を持ったソフトの開発が大切であると感じた。そういった柔軟性が成長し続けるソフト開発につながる。(アジャイルやDDD?)
基本的な考え方や小さい原則でとくに必要と感じたものに関しては定期的に読み返して身につくようにしたい。
UNIXにおける9つ基本的な考え方
- スモール・イズ・ビューティフル
- 1つのプログラムには1つのことをうまくやらせる
- できるだけ早く試作する
- 効率より移植性を優先する
- 数値データはASCIIフラットファイルに保存する
- ソフトウェアを梃子として使う
- シェルスクリプトによって梃子の効果と移植性を高める
- 過度の対話的インターフェースを避ける
- すべてのプログラムをフィルタとして設計する
個人的メモ
小さなプログラムという発想
「なるべく小さな部品に分けよう」という主張や、「小さいほうが保守もテストも楽だ」というメリットはよく聞くが、「みんなそう思ってるのになぜプログラムは肥大化するの?」という点に言及しているのが面白かった。
一般にソフトウェアの開発者は、巨大なプログラムを書いてしまう。これは「あらゆる不測の事態に対応できるように」という誤った考えに基づくものだ一方、小さなプログラムの開発者は、未来の予測など最初からあきらめている。彼らの予測することは、明日作られるものは今日作っているものとは違うということでしかない。作った時には予測できなかったことに対しても、小さなプログラムなら直ちにそれに対処できる。現実には、その場かぎりの小さな解決策でも解決できない問題はそれほど多くはない。creeping featurism(しのびよる多機能主義)
第2章 人類にとっての小さな一歩
第3章 楽しみと実益をかねた早めの試作
プログラムはデータを作らない。人間が作る
「データはなんらかの記憶媒体に保管されているが、いずれどこかへ移動しなければならない。ディスクに入れたままのデータは価値を失っていく。」
UNIXの考え方とは、常に将来を見据えながらオペレーティングシステムとソフトウェアの開発にアプローチすることだ。そこでは、常に変化し続ける世界が想定されている。将来は予測できない。現在についてあらゆることを知っていても、その知識はまだまだ不完全なことは認めざるをえない。(P.144)