■ 『UNIXという考え方』 スモール・イズ・ビューティフル (2001.3.8)



副題には「その設計思想と哲学」とある。UNIXは元来AT&Tのベル研究所で、たった2人の研究者、ケン・トンプソンとデニス・リッチによって小規模な個人用OSとして開発された。1969年に姿を現して既に30余年が過ぎている。幾多の拡張を経て現在のインターネット時代の汎用OSとしてまで成長したのだ。著者は、元DECの技術者のようだが、このUNIXを俎上にのせて設計思想を探ろうと試みている。

UNIXの開発過程では9つの基本定理が遵守されたと言う。この定理があったからこそ、小さな原始的なモデルであったOSが、何人もの研究者の努力を結集し、機能を積み上げて成長し、幾種類ものプラットフォーム上で稼働し、様々なニーズに応えている。そして今話題のLinuxにまでつながる源流となっている。

9つの定理とは、次のようなものである。
1.スモール・イズ・ビューティフル(小さいものは美しい)
2.一つのプログラムには一つのことをうまくやらせる
3.できるだけ早く試作する
4.効率より移植性を優先する
5.数値データはASCIIフラットファイルに保存する
6.ソフトウェアを梃子として使う
7.シェルスクリプトによって梃子の効果と移植性を高める
8.過度の対話的インタフェースを避ける
9.すべてのプログラムをフィルタとして設計する

読んで直ちに理解できる定理もあるし、ちょっと考え込むものもある。基本的なテーマは2つであろう。一つは脱「NIH」の精神、もうひとつは「スモール・イズ・ビューティフル」である。

脱「NIH」の精神
NIH(Not Invented Here)とは 「それはここで開発されたものではない」として他所で開発された技術を嫌い、すべての技術を自前で用意しようとするやり方である。これに反しUNIXでは、他の研究者の成果でも、開発済みのコマンドでも、自ら開発したものでなくても積極的に活用する、というのが基本精神なのである。さらに、「シェルスクリプト」のような既存の機能をブラックボックスとしてそのまま利用できる仕掛けをOSに組み込んでいる。

「スモール・イズ・ビューティフル」
ソフトウエア開発の初心者は、「シンプルに設計せよ」と上長から口を酸っぱくして説教されるものだ。しかし、具体的にはどうすればいいのだろうか。お客からは、どっさり注文が出てくる。これを全部サポートするには、とてもシンプルなんて無理である。UNIXの定理によれば、まず小さく作れという。そして次に、一つのプログラムには一つのことだけをやらせる。「小さい」の判断基準としては、サブルーチンのコーディングがA4で1枚程度に納まるものとしている。そして、小さなプログラムは分かりやすい、保守しやすい、システムリソースにやさしい(軽い)、他のツールと組合せやすい等々のメリットが出る。

9つの定理をもう一度簡単に紹介しよう。
1 スモール・イズ・ビューティフル
   巨大で複雑なプログラムの開発者は、「将来が予測可能で、そして現在とそう大きくは変わらない」という勝手な思い込みを前提としている。一方、小さなプログラムの開発者が考えるのは、明日作られるものは今日作っているものとは違うということでしかない。
2 一つのプログラムには一つのことをうまくやらせる
最初の仕様から変更のないプロジェクトなど稀である。
3 できるだけ早く試作を作成する
   試作によって何がうまくいくかが分かり、さらに重要なことには何がうまくいかないかが分かる。
4 効率より移植性
   プログラムを速くすることに時間をかけないこと。最も効率のよい方法は、ほとんどの場合移植性に欠ける。
5 数値データはASCIIフラットファイルに保存する
   ASCIIテキストは共通の交換形式。ASCIIテキストは簡単に読めて編集できる。
6 ソフトウェアの梃子を有効に活用する
   よいプログラマはよいコードを書く。偉大なプログラマはよいコードを借りてくる。
7 シェルスクリプトを使うことで梃子の効果と移植性を高める
   シェルスクリプトはCよりも移植性が高い。
8 過度の対話的インタフェースを避ける
   拘束的プログラムはユーザーを人間と想定している。人間の限界によって動作を制限されるようなシステムは、潜在能力をフルに発揮できない。
9 すべてのプログラムをフィルタにする
   データの合成ではなく、与えられたデータを選択的に通過させることに集中する。


◆ 『UNIXという考え方 その設計思想と哲学』 Mike Grancarz著、芳尾桂訳、オーム社、2001/2


読書ノートIndex1 / カテゴリIndex / Home