コラム / 柴田文彦のOS包囲網 第9回
ベル研究所 Plan9の概要
2000年12月27日
この連載では、特にパソコン用ということにこだわらず、もう少し広い枠でOSというものを見直してみようという趣旨で話題を取り上げている。前回と前々回は高速なJava実行環境として、次世代の携帯電話などへの応用が期待されている英Tao(ダオ)社のElate/Intentを取り上げ、CEOへのインタビューの内容をお伝えした。
今回はガラッと変わって、UNIXを生み出した米ベル研究所が、それに継ぐものとして開発を進めている“Plan 9”を取り上げる。これは、12月8日付で掲載した、UNIXの生みの親のひとり、デニス・リッチ博士の講演の記事を補うものと考えていただきたい。
 |
12月5日に日本ルーセント・テクノロジー(株)が主催して開かれた“ベル研究所テクノロジーセミナー2000”で講演するデニス・リッチ(Dennis M.Ritchie)博士 |
“Plan 9”とは
前述したデニス・リッチ博士の講演では、'90年ころからベル研究所内で研究開発が進められているOS、Plan 9について簡単な紹介があった。記事の中でも触れたように、UNIXの開発がローカルなファイルシステムをどう表現するかということをテーマとして始まったのに対して、Plan 9は、ローカルであれリモートであれ、リソースというものにどうアクセスするかということを課題とする研究として始まったという。これは、UNIXが開発された当初には、ほとんど発達していなかった分散型のネットワークに対応するための1つの方法についての研究とも考えられるだろう。
もちろんUNIX自体も、その後ベル研究所の内外で発展するにつれて、リモートのファイルシステムをローカルなマシンからシームレスにアクセスするための方法を実現していった。例えばサン・マイクロシステムズのNFS(Network File System)などをその良い例として挙げることができる。ベル研究所自身も“NetA”と呼ばれる同様の機構を開発していた。こうした方法は、いずれもRPC(Remote Procedure Call)によって、接続先のコンピュータを呼び出し、そこにあるリモートのファイルシステムを見かけ上ローカルのファイルシステムにアタッチ、あるいはマウントする機能を提供する。もちろんアクセス権の管理は必要となるが、これによって他人のマシンのファイルシステムも、あたかも自分のマシンの一部であるかのように自由にアクセスできるようになる。
Plan 9が“リモートのリソースにアクセスする”と言うときも、ファイルシステムに関しては、これとほぼ同じ発想によるものと考えてよいだろう。Plan 9では、それを独自の“9P”と呼ばれるプロトコルによって実現している。これは、既存のプロトコルをうまく利用して、ユーザーに見えないところでプロトコルを変換するような柔軟性も持っている。例えば遠く離れた匿名ftpサーバーのディレクトリでも、直接自分のマシンのディレクトリにマウントして使うことができる。またPlan 9では、ファイルシステムと同様のネーミングで表現できるものは、ファイルそのものや入出力デバイスだけとは限らない。CPUのプロセスですら、“/proc”というディレクトリの下に配置されたリソースとして扱うことができるのだ。
 |

Plan 9のロゴ |
UNIXと共通する理念でもあるが、Plan 9でもデータはできるだけプレーンなテキストとして表現することを心掛けるようになっている。UNIXが開発された当時は、テキストといえば、アメリカ英語が表現可能な7ビットのASCIIコードさえ使えれば良かったのだろうが、さすがに今ではそうはいかない。Plan 9では、多言語に対応するためにUnicodeを採用しているが、そこには7ビットのASCIIコードとも下位互換性のあるUTF-8を採用している。これによれば、7ビットのASCIIコードを使っている限り、1文字は1バイトで表現でき、だれも多言語対応のことを心配する必要がない。これは“BeOS”が採用して有名になったエンコード方式だ。実はこのUTF-8自体、ベル研究所のPlan 9の研究の中から生まれたものだったのである。
1台のマシンの中の階層構造とシステムとしての階層構造
これまでに説明したようなPlan9の特徴は、現状のUNIXと比較しても小さな違いに過ぎないと思われるかもしれない。しかしPlan 9の設計思想の根本にあるものは、UNIXの根本にあるものとは大きく異なっている。UNIXは、当時1台のミニコンに複数のキャラクタ端末がぶら下がっているいるような、タイムシェアリングシステムとして開発された。ネットワークに対応して分散コンピューティング環境を実現したのは、だいぶ後になってからのことである。そのため、ネットワークで接続された複数のUNIXマシンを管理するという視点で見ると、どうしても無理が出てくる。
初期のミニコン上のUNIXは、1台のマシンの中にすべての階層構造があり、それがすべてであった。ネットワーク上のUNIXマシンが、それぞれが独立した階層構造を持ったUNIXシステムであり、それを横方向に接続してシステムを構築しているのが今のUNIX環境である。Plan 9は元から非常にスケーラブルに設計されている。例えば1台のラップトップマシンの中に独立したPlan 9システムを構築することも可能だが、複数のワークステーションやパソコンをネットワークで接続したものを、1つのPlan 9システムとして管理、運用することもできる。こうしたシステムでは、1台のマシンを固定的に個人に割り振るのではなく、システムの中のどのマシンを使っても、その場が即座に、そして完全にログインしたユーザーの作業環境になるというスタイルになる。
 |

ベル研究所のウェブサイト(http://cm.bell-labs.com/plan9dist/)にあるPlan 9のページ。ここからPlan 9のダウンロードもできる |
Plan 9は、紛れもなくUNIXをベースに開発されているものだが、その中から必要な部分は残しても、Plan 9の考え方に適合しない部分は容赦なく入れ替えたり切り捨てるという方針が貫かれているという。このあたりが、他のUNIXの後継OSと最も異なる部分かも知れない。ただし、Plan 9がもう少し一般に認知され、ベル研究所の外部でも使われるようにならないと、その是非については判断は難しいだろう。
Plan 9は、カーネルのソースコードも含めてベル研究所のサーバーから自由にダウンロードできる。数百MBの空きディスクかパーティションがあれば、一般的なPCにインストールして走らせることができるので、興味のある人は正月休みの課題として、取り組まれてみてはいかがだろうか。
柴田文彦プロフィール
大学時代にAppleIIに感化され、パソコンに目覚める。在学中から月刊ASCII誌などに記事を書き始め、以降ほとんど無数の原稿を執筆。ASCII24には2000年まで『Mostly BeOS』を連載。自称エンジニアリングライター。
(柴田文彦)
|