読み終えるまでの目安: 5分
目次
この本はどんな人におすすめ?
- UNIX・Linux系OSの知見を深めたい人
- ソフトウェアエンジニア全般
後述するが、この本にはソフトウェアを保守しやすく・無駄なく作るためのヒントが載っていると思う
本の情報
タイトル | UNIXという考え方 |
著者 | Mike Gancarz |
訳者 | 芳尾 桂 |
発行日 | 2001.02.23 |
読んだ感想
いい本だった
そんなに厚みもないし、(一部和訳が気になるところもあるが) 読みやすい表現で書かれている
この本では、UNIXの開発において何が善とされているのか、歴史的経緯も含めて取り上げられている
タイトルに「考え方」とあるように、具体的なプラクティスではなく哲学が中心となっている
その哲学を通して、いろんな開発シーンで役立つ知見が得られると思う
たとえば以下のようなもの
- ソフトウェア開発、ひいてはものづくりとの向き合い方
- 保守しやすいソフトウェアを作るには
なにぶん取り扱う情報が古いので、全然ピンとこない箇所もあった
とはいえ、解説は丁寧を通り越して冗長なくらいなので、要点はしっかり理解できるように思う
これを読むことによって、UNIX・Linuxが身近になったように感じる
おすすめ度を点数にすると、80点 (100点満点) といったところだろうか
メモ
ここからは印象に残った内容について触れていく
ひとつのことをうまくやる
複雑な処理をするプログラムであっても、役割ごとに要素を分けることができる
この役割がシンプルであればあるほどいい
本来、プログラムは「ひとつのことをうまくやる」ということに集中するべきである
それによって、
- 人間が捉えやすく・考えやすくなる
- 保守しやすくなる
- コンピュータリソースを抑えやすい
- 他のプログラムと組み合わせやすい
といった効果がある
移植性とパフォーマンスはトレードオフ
プログラムのパフォーマンスを最大まで引き上げるには、プラットフォームに応じたチューニングをすることになる
しかし、実際にそれをやってしまうと、別のプラットフォームに移植するための手間がグンと大きくなる
一般的に、移植性とパフォーマンスはトレードオフの関係になるようだ
状況によって、これらの優先順位を判断する必要がある
UNIXにおいては、基本的に移植性のほうを優先する
理由はいくつかある
- パフォーマンスはマシンパワーを上げることでもある程度解決できるから
- プラットフォームに縛られると、その環境が使われている間しか価値を発揮できなくなるから
とにかく早く試作する
綿密に設計するよりも、まずは実装してみたほうがいい
難しいポイントにも気付きやすいし、設計のイテレーションを早く動かすことができる
何度か失敗しないと、優れたソフトウェアは作れない
この本では、優れたシステムが作られるまでの流れを以下のように説明していた
- ある課題を解決するためのシンプルなソフトウェアが生まれる
この時点では荒削りで、美しいとはいえない - 様々な要望・意見が集まり、余計な機能がたくさん入って肥大化する
「自分の名を残したい自称専門家」が集まってくることでこうなってしまうのだとか - 肥大化が課題となった結果、本当に必要な機能のみに絞られ、シンプルかつ十分なソフトウェアになる
2で火傷をした人が開発する
この時点では、自称専門家は満足して姿を消しているらしい
自称専門家が本当に集まってくるのかはさておき、何度か失敗してこそ適した選択肢がわかるようになるという点は間違いない
最初から本当に必要なものを見抜くというのは困難である
いくつかの失敗は当然として、むしろ進展していると捉えてもいいのかもしれない
小さな部品は繋ぎ合わせたときに真価を発揮する
「ひとつのことをうまくやる」と共通した話
小さな部品というのはそれ単体では大して役に立たないかもしれないが、たくさん組み合わせることで非常に大きな結果を生み出す
シンプルな用途に限られているぶん、いろんなところに組み込みやすく、再利用もしやすい
ひとつの巨大な塊よりも、部品の集合体のほうがより大きな価値を生むといえる
最後に
まとめると、この本の魅力は「UNIXの思想を通して、ものづくりに関する深い知見が得られる」ということだと思う
UNIXは長い歴史のあるソフトウェアなので、この哲学を知ることで巨人の肩に乗れるのではないだろうか
途中、「ソフトウェアに完成はない。ただリリースがあるだけだ」という言葉が登場した
研鑽に終わりはないということ、それでも最適なゴールを見極めてリリースするのだという考え方が垣間見えて、とてもいい言葉だと思った