「伝統的だが不可解」:Unix はなぜ「Not a typewriter」と言うのか

「MWichary」宛のメールが「550 mwichary... User unknown: Not a typewriter」で返ってくる。1990 年代の Unix ではよくある光景だった。Marcin Wichary が、この一行に重なった四つの事情と、タイプライターという言葉が今も ENOTTY というエラーコードの中に残っている理由を解きほぐす。

日本語
コピー
照片:一台灰色的控制台式打字机正面特写,键盘与宽字车在前,身后是成排带数字的旋钮开关,两侧是成列的指示灯

1990 年代、一部の Unix 系 OS のユーザーは、ときに奇妙なエラーに遭遇することがあった。以前にメールを送ったことのある相手に、またメールを送ろうとしたときに起きるものだ。不可解なのはエラーそのものだけでなく、表示されるメッセージもひどくわかりにくかった。

「MWichary」にメールを送ろうとしたとしよう。送信完了の確認の代わりに返ってくるのは、これだ:

550 mwichary... User unknown: Not a typewriter

このエラーは、多くの奇妙なエラーと同じく、四つの事柄が重なった結果だ。

原因そのものに見覚えのある人は多いはずだ。コードが大文字と小文字を厳密に区別しすぎていた。裏側では sendmail というソフトウェアがユーザー名を常に小文字として扱っていた。初期にはそれで正しかった。「MWichary」は黙って「mwichary」に書き換えられる。存在しないユーザーだ。プログラムはその結果を正直に報告したが、そこに至った推論は説明しなかった。

第二の部分は、エラー処理ロジックの中のメタエラーとでも言うべきものだ。Sendmail は「User unknown」を正しく返したものの、そのあと条件反射のようにシステムエラーの値も添えて、デバッグの手がかりを少しでも増やそうとした。こうした情報はたいてい役に立つ。「Host is down」や「No space left of device」など、ターミナルで大胆なことをした経験があれば、そのうちのいくつか、妙に印象に残る文字列を見たことがあるに違いない。

だがこの場面では、システムエラーは何の役にも立たない。「Not a typewriter」が意味するのは、要するに「これはバックグラウンドで動くプログラムで、ユーザーからの入力を受け取るつもりも、ユーザーが読むための出力を返すつもりもない」ということだ。エラーというより状態であり、OS のために黙々と働く多くのプログラムが置かれている状態である。

しかし……なぜこんな言い回しなのか。

純粋に歴史の名残だ。コンピューターは当初、実際にタイプライターを入出力装置として使っていた。ローカルに接続されたタイプライターもあり、それはフロントパネル、つまりコンソールにつながれていた。遠隔地のタイプライターもあり、こちらはテレタイプライター、略してteletype、さらに縮めてttyと呼ばれた。これらの言葉に見覚えがあるのは、今も使われているからだ。

正面を向いたグレーのコンソールタイプライター:手前にはキーボードと幅広のキャリッジがあり、その背後には番号付きロータリースイッチが多列に並ぶパネル、左右両側には多列のインジケーターランプ、下部には複数組のトグルスイッチがある。
青いキーと幅広の印字キャリッジを備えた白とグレーの IBM コンソールタイプライターが博物館の展示品として撮影されており、その背後には青とオレンジのリールを付けたテープドライブがガラスの向こうに立っている。
Bull General Electric 415 情報処理システムが展示された博物館の一室:青と銀のコンソール、傾斜パネルにキーボード、左側の机に灰色の小型プリンター、後方に磁気テープ装置を備えた青いキャビネット。

「読み書きできる入出力デバイスではない」という意味が、乾いた一文「Not a typewriter」に縮められた。一文字ごとに高くつくと感じられ、タイプライターが唯一の入出力手段だった時代なら、無理もない。やがてタイプライターはテレタイプに、画面付きの端末に取って代わられ、最後には Terminal や Console のアプリに変わった。それでもこの文字列だけが、数十年も残った。

四つ目のピースは文法上の遊びだ。コロンで二つのメッセージをつなぐだけで、ユーザーはタイプライターであるべきだという前提が透けて見える。

このメッセージも最終的には名前を変えた。今なら「Inappropriate ioctl for device」と返ってくる。おそらくこれが前進なのだろう。だがコードは今も ENOTTY のままだ。

何十年経っても、タイプライターが何だったか誰も覚えていない頃になっても、おそらくこの名前のままだろう。

本稿のタイトルは、Solaris オペレーティングシステムのマニュアルにある説明から取った。

出典: unsung.aresluna.org← ホームへ戻る