UNIX哲学

UNIX哲学とは



UNIX哲学は、UNIXオペレーティングシステムの開発者たちの経験に基づいて形成された、ソフトウェア開発における一連の原則と文化的規範です。この哲学は、単一の定義を持つものではなく、複数の解釈が存在することに注意が必要です。

UNIX哲学の起源



UNIX哲学の源流は、1970年代のベル研究所におけるUNIX開発に遡ります。初期のUNIX開発者たちは、シンプルで効率的なソフトウェアを構築することを目指しました。

1978年、ダグラス・マキルロイは、UNIX哲学の基本的な原則を以下のように述べました。

各プログラムは一つのことをうまく行うこと。複雑な機能を一つのプログラムに追加するのではなく、新しい仕事には新しいプログラムを構築する。
すべてのプログラムの出力が、別のプログラムの入力になること。余計な情報を出力せず、標準化されたテキスト形式を使用する。
ソフトウェアを早期に、理想的には数週間で試せるように設計・構築すること
プログラミング作業を軽減するためにツールを使うこと


これらの原則は、その後のUNIX文化を形成する上で重要な役割を果たしました。

1994年、ピーター・H・サラスは、これらの原則を以下のようにまとめました。

一つのことをうまくやるプログラムを書く
連携するプログラムを書く
テキストストリームを扱うプログラムを書く

UNIXの設計思想



UNIXの創始者であるケン・トンプソンとデニス・リッチーは、1974年の論文で、UNIXの設計において以下の点を考慮したと述べています。

プログラムの作成、テスト、実行が容易であること
対話的な使用を可能にすること
サイズ制約が設計をエレガントにすること

ロブ・パイクのプログラミング格言



UNIX哲学と密接な関係があるロブ・パイクは、プログラミングにおける以下の格言を提唱しています。

ルール1: プログラムのボトルネックは予測できない。計測するまで最適化してはならない。
ルール2: 計測するまでは速度調整をしてはならない。
ルール3: シンプルなアルゴリズムデータ構造を使用する。
ルール4: データ構造がすべてを決める。

これらの格言は、ソフトウェア開発における実践的な知恵を表しており、UNIX哲学の重要な側面を補完するものです。

マイク・ガンカーズのUNIX哲学



マイク・ガンカーズは、UNIX経験に基づいて以下の9つのUNIX哲学を提唱しました。

スモール・イズ・ビューティフル: 小さいプログラムは美しい。
各プログラムは一つのことをうまくやる: 各プログラムは特定のタスクに集中する。
できる限り早く試作する: 迅速なプロトタイピングを重視する。
移植性を優先する: 効率よりも移植性を重視する。
データをテキストファイルに格納する: シンプルなテキスト形式でデータを扱う。
ソフトウェアを梃子として利用する: ソフトウェアの再利用を促進する。
シェルスクリプトを利用する: シェルスクリプトで複雑なタスクを自動化する。
過度の対話的インターフェースを避ける: コマンドラインインターフェースを重視する。
すべてのプログラムをフィルタとして設計する: プログラムをデータの変換器として設計する。



「より悪いことは、より良いことだ」



リチャード・P・ガブリエルは、UNIXの優位性の一つとして、「より悪いことは、より良いことだ」という哲学を挙げています。これは、インターフェースと実装のシンプルさを、完全性よりも重視するという考え方です。ただし、この思想には、システムコールなどの複雑なケースをどのように処理するかという問題も存在します。


エリック・S・レイモンドのUNIXプログラミングの技法



エリック・S・レイモンドは、UNIX哲学を「Keep it Simple, Stupid(KISS原則)」というエンジニアリング哲学として要約しました。彼は、UNIXの文化規範がどのように適用されているかを説明し、以下のルールを提示しました。

モジュール化のルール: シンプルな部品を組み合わせる。
明瞭さのルール: 明瞭さを優先する。
合成のルール: 他のプログラムと接続できるようにする。
分割のルール: ポリシーとメカニズムを分離する。
シンプルさのルール: シンプルさを追求する。
倹約のルール: 大きなプログラムを避ける。
透明性のルール: 透明性を重視する。
頑丈さのルール: 透明性とシンプルさから頑丈さが生まれる。
代表のルール: 知識をデータに織り込む。
最小限の驚きのルール: ユーザーの期待を裏切らない。
沈黙のルール: 余計な出力をしない。
修復のルール: 失敗時は速やかに知らせる。
経済のルール: プログラマの時間を優先する。
生成のルール: 手書きを避ける。
最適化のルール: プロトタイプを先に作る。
多様性のルール:「ただ一つの正しい方法」は信じない。
拡張性のルール: 未来を見据えて設計する。

UNIX哲学への批判



UNIX哲学は、その有効性と普遍性について議論の余地があります。GNUプロジェクトのように、UNIXの伝統的なツールを拡張する動きもあれば、UNIX哲学の原則に忠実であるべきだとする意見もあります。

まとめ



UNIX哲学は、ソフトウェア開発における重要な指針であり、シンプルさ、モジュール性、効率性、そして連携を重視するこの思想は、現代のソフトウェア開発にも大きな影響を与えています。この哲学は、単一の定義を持つものではなく、複数の解釈が存在することを理解することが重要です。

引用



UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである。」- デニス・リッチー
UNIXはユーザが愚かなことをするのを止めるために作られたのではない。小器用なことをするのも防いでくれるのだ。」 - ダグ・グウィン
UNIXはユーザフレンドリーだ。誰彼構わずフレンドリーになるわけではないだけだ。」- スティーブン・キング
UNIXを理解しない人々は、それを不十分に再発明することになるだろう」 - ヘンリー・スペンサー

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。