next up previous contents
Next: 名前が短い Up: 基本コマンド Previous: 基本コマンド

単機能である

基本的な UNIX の命令は単純で, 標準入力 から入力して 標準出力 に出力する形式のものとなっています。 UNIX の開発者の一人である B. Kernighan は UNIX のコマンドは単機能で 標準入力から入力して標準出力に出力する形式のものにすべきであるといってい ます。

きっと読者はコンピュータのプログラムと言えば, ワープロや表計算,それにゲームを思い浮かべることでしょう。 これらは多くの機能を集めたプログラムであり, UNIX の基本プログラムの規則に則っていないのですが, UNIX がビジネスユースとして用いられるために, このように多機能のプログラムも多く作られています。

多機能ソフトの例としてワープロを取り上げてみましょう。 ワープロは,一つのプログラムの中に

ワープロの構造

レイアウト命令
図のように多くの機能を持っています。1つの文字を入力すると 指定されたレイアウトに応じてプログラムが表示します。 1文字1文字プログラムはレイアウト・表示を繰り返している訳です。 また,文書ファイルはこのワープロに限定されたものになりますので, ワープロを変えると文書ファイルが使用できなくなりますので 変換などの作業が必要になります。

通常のワープロは、 レイアウト、飾り付けなど情報ではない機能を持っており、 美しく印刷することに主眼がおかれて作られています。 そのため、 文書ファイルを読み込む時に同時に多くのリソースを読み込む必要があります。 さらに、文字を表示する他に レイアウト、飾り付けなどを高速に実行することが必要となります。

これに主眼がおかれているため、 出力するファイルには、 高速に処理を行なう必要から 可読性のない多くの制御設定部分を埋め込んであります。 この制御部分が文書部分の10倍もある某ワープロもあります。 これはワープロを変えるとこのファイルの文書は読むことができないという 致命的な欠点を持っています。 書き込まれた文書情報は保存するべきものが多くあります。 しかし、 読むために必要とするワープロは電子技術に大きく依存しているため ワープロが変更されると 文書ファイルはその価値を失うということになります。

以上は、筆者のワープロ不用論ですが、これには賛否両論があると思います。 しかし、文書情報が文化的資産であることを認識すれば、 ワープロについても考えておく必要があると思います。 これは、使い易さとは別の議論になります。

使い易く、 しかし、ワープロに依存せず、 文書が取り出せるワープロというワープロが必要ですが、 残念ながら、まだありません。

一方, UNIX では、ワープロを構成すると起動と処理に多少の時間がかかっても 複数のフィルターでも処理可能なように、 可読性を重視して構成します。 実際に読み込むのは、文書情報と レイアウト、飾り付けなどの制御情報ですが、 これらの制御情報は文書内に埋め込まれいます。 実際に、古くから美しく出力するための道具はUNIXに十分に揃っていたのです 3.1。 これが、UNIX には本格的ワープロがなかった理由かも知れません。 それに、 ワープロを必要とする初心者は敷居の高い UNIX を使うことはなかったのでしょう。 現在は、LATEXというワープロ相当のプログラムがあり、 これを支援する多くのパッケージが作成されており、 lynx というようなレイアウト命令を知らなくてもLATEXが使えるものがありま すので、初心者にも使い易くなりました。

ここでは、 単機能であるフィルターを使って、 UNIX で同じようにワープロを構成すると, 図のようにいくつかの部品を接続して構成します。

ワープロの構成

1つの文字を入力しても,その場でレイアウトして表示はしませんが, 一括して表示することができます。 レイアウト部品を取り替えることで 別の様式の文書を作成できることになります。

エディターで作成された文書ファイルはテキストであるので さまざまな部品に接続して再利用性が高くなります。

このように UNIX では,単機能の部品をつなげて目的の作業をこなす訳です。 このつなげる方法が 「パイプ」 や 「リダイレクト」と言われる機能 (次に[*]で説明します。)です。 ともに標準入力や標準出力を切替えて, あるプログラムの出力を別のプログラムの入力につなげるのがパイプであり, あるファイルを別のプログラムの入力につなげたり, プログラムの出力をファイルにつなげるのがリダイレクトです。



Kishimoto Ken
平成20年3月1日