iriya_ufo’s blog

Curiosity was simply the first derivative of knowledge.

UNIX という考え方

UNIXという考え方―その設計思想と哲学

UNIXという考え方―その設計思想と哲学

副題 "The UNIX Philosophy その設計思想と哲学"
150ページほどの薄くて読みやすい本であった.
タイトルにもあるように UNIX のコマンドや使い方などを記した技術本ではなく
なぜ UNIX なのか?という問いに対しての答えがここに詰まっていた.
あの膨大な量のコマンドや扱いづらいインターフェースのどこがいいのだろう?
と思う人がいる.UNIX ギークはむしろそれを喜んでいるのかもしれない.

本の内容も実にシンプルであった.
UNIX 使徒が守るべき条項というか定理みたいなのを書いており,その背景にある理由を述べていく,という形だった.
ここにいくつか載せておこう.

定理

  • スモールイズビューティフル

小さいことはいいことだをモットーに,プログラムは小さく簡潔であるものにすべきである.

  • 一つのプログラムには一つのことをうまくやらせる

あれもこれもと欲張ってはいけない.無駄な肥大化をさせてはいけない.

  • できるだけ早く試作を作成する

最初から完璧などない.そして完璧なプログラムさえもない.
あるのはリリースのみだ.永久にリリースするのみである.
できる限り早く完璧に近いものを目指すプログラムならば早く公開することだ.
切羽詰まった状態になってもそれでも出せ.
フィードバックを得よ.すぐさま改良せよ.
小さいうちは応用性がある,汎用性がある,バグは楽に潰せる.
早い試作品はいいものに生まれ変わっていくものだ.

効率重視なアーキテクチャー依存なプログラムは移植性に欠ける.
移植できないプログラムは死んだプログラムだ.
効率より移植性を重要視して書け.

  • 汎用的データ (ASCII)

データも移植性が重要だ.
どんな環境でも使える汎用データを扱うようにせよ.

  • ソフトウェアの梃子を有効に利用する

部品プログラムは再利用するものだ.
簡潔なモジュールは梃子のように扱え.
車輪の再発明は無駄だ.

  • 過度の対話的インターフェースを避ける

拘束的ユーザープログラムはいいものではない.
ユーザーに優しいと思うプログラムを書こうとは思うな.
それはユーザーが決定することだ.

  • すべてのプログラムをフィルタにする

小さく簡潔なものを繋ぎ合わせよ.
あるプログラムは次のプログラムへと引き継ぎ出来ねばならない.
それはプログラムをフィルタ化せよ,ということだ.


こういった定理がすべての UNIX 使いに当てはまるわけではない.
しかしながら,ここで述べていることの多くに UNIX 使いは理解を示してくれるはずである.

UNIX を全然触ったことがない人がこの本を読んでもあまりピンとこない,というか理解しがたい所が多いと思う.逆に言えば,UNIX 大好きだぜ!っていう人が読むといいんじゃないかな.共感できる所いっぱいあると思う.