SSブログ

ソフトウェアエンジニアとして転機(3) [ソフトウェアエンジニアとして転機]

Fuji Xerox 6060ワークステーション


Fuji Xerox 6060 ワークステーション
http://www.fujixerox.co.jp/company/profile/history/product.html

1984年に就職して夏に配属されたのは、独自のワークステーションを開発するグループでした。当時、富士ゼロックスはBTronにも取り組んでおり、プロトタイプもあったのですが、独自にJ-Starに似たワークステーションの開発に着手しました。J-Starのソフトウェアを移植するのではなく、OS(Idris: Unixクローン)を除き、CPUボードからすべてを一から開発するプロジェクトでした。

この開発で私が初めて学んだ主な技術は、以下の通りです。
  • Unixの基本知識
  • Unixのコマンド
  • vi
  • C言語
  • Ethernetプロトコルを含むXNS(Xerox Network Systems)のプロトコル体系

Unixの基本知識、コマンド、vi

大学院の終わりの頃に、どこかの研究室にUnixワークステーションが導入されたのですが、ほとんど触ったことはありませんでした。6060ワークステーションでは、UnixクローンであるIdrisと呼ばれるOSを採用していましたし、開発にはVAXを使って、その上でBSD 4.2(?)が動作していました。当時のUnixは、今日のLinuxやmacOSなどと比べると非常にシンプルでした。
  • スレッドはなく、プロセスのみ
  • プロセス間通信は、fork/execしてパイプでの通信のみであり、共有メモリもない。
私はXNSプロトコルの設計・実装を担当したのですが、上記の単純なプロセス間通信では複雑なネットワープロトコルを実装するのは非常に困難だと判断しました。そして、OSチームにIdrisを改造して以下の機能を提供することをお願いしました。
  • 任意のプロセス間で通信するためのメッセージング機構
  • プロセス間でメモリを共有する共有メモリ機構
今日のUnix/Linuxでは当たり前の機能ですが、当時は「こんな改造したらUnixではなくなるな」と思っていました。OSチームは、共有メモリ機構をさらに発展させて共有ライブラリ機構も追加しました。今では当たり前ですが、メモリが少ない当時としては、かなり画期的だと思っていました(そして、1993年頃にSunOSでmmapが使えるようになったときも画期的だと思いました)。

今日でも使っている基本的なUnixのコマンドはこの頃に学びましたし、エディタとしてのviも学びました。しかし、今から振り返ると非常に貧弱なエディタ環境でした。80桁×24行のキャラクタ端末を使ってソースコードを編集していたので、ソースコード全体の見通しが悪かったのです。そのため、ソースコードはいつも印刷していました。印刷するといっても、当時はドットインパクト式プリンタでしたので、音がしてうるさかったです。

この6060ワークステーションの開発環境をはるかに飛躍させたのは、4.3BSDが登場して、4.3BSDにXNSプロトコルが提供され、J-Starワークステーション開発用のXDE(Xerox Development Environment)から4.3BSDが使えるようになったことです。4.3BSDに提供されたXDE用のコマンド(確かREdit)のネットワークプロトコルをリバースエンジニアリングして、同じコマンドをIdris環境にC言語で実装してからは、エディタとしてXDEが使えるようになり、マルチウィンドウやウィンドウ分割、それに、XDEからのターミナル接続などができて快適になりました。

開発ツールの整備

6060ワークステーションの開発は、ユーザに提供するアプリケーションの開発のみならず、すべての開発用ツールを独自に開発するものでした。XNSプロトコルの設計・実装を担当していましたので、英語の仕様書しかなったXNSプロトコルを理解して、Idris上で動作する以下の開発用ツールを開発しました。
  • Ethernet上のパケットをキャプチャーしたり、TCPに相当するXNSプロトコルのSPP(Sequence Packet Protocol)レベルでファイルにダンプしたりするツール。
  • Printingプロトコルを実装して、ソースコードをInterpress形式(Xerox社のPDL:Page Description Language)へ変換して、レーザープリンターへ送って印刷するツール(ドットインパクト式プリンタと違い、オフィスが静かになりました)。Interpressへの変換は他のエンジニアが実装しました。
  • Filingプロトコルを実装して、J-Starのフィルサーバを使えるようにするツール。これで、離れた開発拠点へファイルを電子的に送ることができるようになりました(これ以前は、フロッピーディスクに保存したファイルを物理的に運ぶためにバイク便を使っていました)。
  • Mailingプロトコルを実装して、Idrisからも社内の電子メールを読んだり送信できたりするようにしました。
  • リモートログイン機能。Idris間でリモートログインできるようにするためのデーモンとrlogin相当の機能。これは、私ではなく他のエンジニアが作成しました。SPPを使って実装してあり、Unix 4.3BSDに搭載されたデーモンと同じプロトコルを採用していたと思います。
6060開発の後半ではクロスコンパイル用に4.3BSDも開発環境として使っていましたので、4.3BSDでも動作するようにツールの多くを移植しました。

6060ワークステーションの開発は、私にとってUnix関連の基礎となる多くの経験を積むことができたプロジェクトでした。最初に述べた事柄に加えて、「不便なことを解決するために自分達でツールを開発して、配布する」ことを行うようになったプロジェクトでもありました。

6060ワークステーションの当時のテレビCM

こちらです。
コメント(0)