【読書メモ】UNIXという考え方
- 作者: Mike Gancarz,芳尾桂
- 出版社/メーカー: オーム社
- 発売日: 2001/02/01
- メディア: 単行本
- 購入: 40人 クリック: 498回
- この商品を含むブログ (144件) を見る
今年の夏休みの宿題として読もうと思ったものの休み中に読みきれず結局世の中的な夏休みも明けてしまった。
9つの定理
本書はUNIXの設計思想を9つの定理(実際にはプラスアルファとして10の小定理がある)として説明している。この一貫した思想でUNIXが何を重視し何を犠牲にしているかを理解することができる。また9つの定理のそれぞれは取るに足らないものであり、断片的に取り入れてもうまくいかないとされている。ある定理への批判は別の定理から反論されるように、9つの定理が相互に作用し合い、強化し合うことで、より広大で強力なものになるとしている。
このような設計思想はUNIXに限らずソフトウェア開発の設計においても重要な考え方であり、現代のソフトウェア開発にも取り入れられるものが多い。そのため原書が発売された1996年から20年が過ぎた現在でも多くの人に読まれ多くのエンジニアに影響を与えている。
スモール・イズ・ビューティフル
- 分かりやすく理解しやすい
- 保守が容易
- 使用するシステムリソースが少なく効率が良い
- プログラムが小さいことで他のツールと簡単に結合できる
1つのプログラムには1つのことをうまくやらせる
- 比較的簡単に再利用できる
- できることとできないことが明確
- ソフトウェアは進化し明日には時代遅れになるかもしれないことを率直に受け入れられる
できるだけ早く試作する
- 設計者の頭の中にあるイメージが早期に形となる
- 試作を作ってみれば何がうまくいくか、何がうまくいかないかが分かる
- 小さなプログラムを追加していけば費やす労力は最小限で済む
- 第3システムへの歩みが早まる
- 第1のシステム:特定のアイデアを元に少人数で開発され性能が良く革新的なシステム。
- 第2のシステム:第1のシステムに多くの人々が集まり柔軟性や拡張性を加えたシステム。市場に受け入れられて広く浸透するが性能は下がる。
- 第3のシステム:本当の専門家が第1のシステムと第2のシステムのバランスを取って作るシステム。オリジナルのコンセプトがそのまま残り常識となる。
効率より移植性を優先する
- ソフトウェアは作るものではなく成長していくもの
- 頻繁に現れる新しいアーキテクチャの長所をすぐに利用できる
- 移植できるものは生き残る
数値データはASCIIフラットファイルに保存する
- 移植性のあるデータは移植可能なアプリケーションに必須
- データが最終的にどこで使われるかは分からない
- 人の目でデータが読めることで第3のシステムへのプロセスが容易になる
ソフトウェアを梃子(てこ)として使う
- プログラマの仕事の結果は誰のどのような仕事であれ複利計算で増大し大きな梃子の効果を発生させる
- UNIXは梃子を使ったように個人の努力を増幅するのを助ける
- 梃子の効果を利用するために独自技術症候群を避ける
- 「実った稲穂は刈り取る」(世界に存在する偉大なソフトウェアの共有資産を活用する)
シェルスクリプトによって梃子の効果と移植性を高める
- 梃子の効果を大きくするためにできるだけシェルスクリプトを使う
- 高水準の抽象化を使う
- 世界中の人々の仕事を合成し小さな努力で大きな成果を上げられる
過度の対話的インタフェースを避ける
- いちいち応答を要求するようなプログラムは役に立たない
- 拘束的プログラムは他のプログラムと結合するのが難しい
- 拘束的ユーザーインターフェースはスケーラビリティに欠ける
- ソフトウェアの梃子の効果を利用できない
すべてのプログラムをフィルタとして設計する
- すべてのプログラムは何らかの形式のデータを入力とし何らかの形式のデータを出力する
- データを作るのは人間でありプログラムではない
- プログラムはデータを別の形式に変換する
- UNIXは
stdin
でデータを入力しstdout
で出力、エラーや警告はstderr
を使用する
おわりに
9つの定理のほかに、10の小定理というのもまとめられているがこれは以下のように説明されている(詳細は本書を参照)。
9つの定理に比べると必ずしも教義として受け入れられているものではないがUNIX文化の一翼を担っている。
改めてまとめてみると現在のアジャイルやリーン開発、マイクロサービスアーキテクチャなどの開発手法も9つの定理のいくつかと同じ思想を共有しているように思え、UNIXの設計思想が現在の開発手法にも大きく影響を与えていると感じる。
また、先日発売されたWEB+DB PRESS vol.100でも「TOPエンジニアを支える1冊」の中で一番最初にこの本が紹介されており、いまだに多くのエンジニアにとって重要な思想であることがわかる。
- 作者: 河原一哉,白土慧,菊田洸,西鳥羽二郎,柄沢聡太郎,大谷勇毅,新井啓太,HANADA Yoshihito,増田謙一,池上達也,木下祐実,藤原大,長野雅広,樫田光,縣俊貴,大川徳之,栗林健太郎,小飼弾,庄司嘉織,鈴木勇介,高橋征義,田中哲,徳永拓之,中嶋謙互,中島拓,西尾泰和,西田圭介,羽生章洋,藤本真樹,外村和仁,まつもとゆきひろ,松本亮介,ミック,三宅陽一郎,森田創,山本陽平,吉羽龍太郎,牧大輔,石垣憲一,平原正裕,ひげぽん,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2017/08/24
- メディア: 大型本
- この商品を含むブログ (1件) を見る