DeleGateの再始動に向けてウェブサイトを整理していたところ、佐藤が過去に作成したプレゼン資料が埋もれているのを発見しました。
そんな中で、昔にやりかけて遂げられなかったいくつかの仕事を思い出しました。その一つが、1991年頃に考えていた「viabus」です。以下は、2004年頃に行ったDeleGateのプレゼン・スライドの中の一枚です。
viabusは「アプリケーション層のバス」です。複数のアプリケーションプログラム(のモジュール)同士を、多対多の通信で接続するもので、プログラムの並列化・部品化と動的結合がテーマでした。今でいう「プラグイン」的な機能モジュールの動的追加能力も、考えていたと思います。
当時の技術の中での発想は「リモートプロシージャコール」の多対多版であり、Ethernet上に柔軟に接続できる「Unixワークステーション」間と同様な関係を、アプリケーションプログラムの部品間で実現しようとするものだったと思います。(Ethernetの黄色いケーブルにブスっと針で刺して繋ぐイメージ、今なら仮想ネットワークですけどね)
また、その当時佐藤は電総研の「ポストマスタ」として電子ニュースシステム(inewsとかcnewsとか、uucpとか…)の管理をやっていたため、NNTPプロトコルの ihave/sendme コマンドの影響も受けていました。
固定的なアドレスでは無く、動的に生成されるIDやメッセージの内容でマッチングして接続、通信することを考えていました。そのような接続に使用できる言語・処理系として、当時「Linda」がありました。しかしLindaの処理系が100万円もして、研究費で購入できず悲しかった記憶があります。
プログラムの動的並列化と接続を記述するために、π(パイまたはピー)言語のインタプリタを作ったりとか、自分の実力に見合わない無謀な試みもしました。
このviabusの上に複数の仮想的なディスプレイと仮想放送局を接続して、静止画を流すというようなデモを、当時の新人研修で新人さんに行ったのを覚えています。そのデモ風景の写真は「電総研ニュース」のある号の表紙に使われました。この冊子は国会図書館にもアーカイブされているようですが、なんだか閲覧できません。
それより新しい年代の言葉で言うと、実装上のviabusはいわゆる「リフレクタ」サーバであったと思います。DeleGateで試作した「VSAP(Virtual Socket Association Protocol)」プロトコルは実際、そのようなものであったと思います。
今再考すると、その考え方自体は間違っていない。しかし当時はそれを実現する能力も環境も足りなかった。それに、通信プロトコルというのは使われてナンボのものです。さもなくば、既存の標準プロトコルと互換であることです。佐藤はその後、標準プロトコルに巻かれる方向に流れました。
viabusを作り直すとすれば、現在でもHTTPの中継に使われる「プロキシ設定」や、やはりHTTPプロキシを中継器とする「SSLトンネル」の形で、仮想的なホスト名によってサーバと接続する、メッセージ形式はMIME、というものに落ち着くように思います。
その当時よりは自身のシステム開発能力は落ちたと思いますが、使える言語も環境も飛躍的に向上しており、物事をよりシンプルに実現できる可能性はあります。何にしても Unix v6 の K&R C の時代から40年使い続けたC言語とも、そろそろお別れする時期かと思います。老後は、go言語かな…
2020-0408 sato@izmoh