ソフトウェアエンジニアとしての転機(6) [ソフトウェアエンジニアとして転機]
Fuji Xerox DocuStation IM200
Xerox PARCでのPageMillプロジェクトの成果を商品化するために、1993年5月に日本に帰国しました。34歳でした。商品化したFuji Xerox DocuStation IM 200については、富士ゼロックスの「商品・サービスの歩み」の1996年に写真とともに簡単に説明されています(古いアーカイブはこちらです)。製品を開発するための開発室が富士ゼロックス内に作られて、製品計画、ハードウェアエンジニア、ソフトウェアエンジニアがその開発室に集められました。ワークステーション事業からの撤退が決まっていたので、私を含めて集められたすべてのソフトウェアエンジニアが、ワークステーション関連の開発からデジタル複合機に開発に従事することになります。ワークステーションから組み込みシステムと180度転換したように思えますが、実はそうではありませんでした。
IM200の開発では、デジタル複合機としてコピー/Faxを基本機能として実装するのですが、それに加えてPARCでの成果としてのペーパーユーザーインタフェースを実装しなければなりませんでした。開発が始まったのが1993年ですが、使われた主な技術は以下の通りです。
- CPU:SPARC
- OS:Solaris 2.3
- 開発プログラミング言語:C言語(デバイスドライバー)、C++言語(コントローラソフトウェア)、PostScript(ペーパーユーザーインタフェース処理エンジン)
- 全体デザイン:レイヤ構成で、複数のプロセスから構成され、各プロセス内ではマルチスレッドプログラミング
二つの大きな課題
外見はデジタル複合機ですが、内部は普通のワークステーションと同じでした。このプロジェクトでは技術的に問題が多かったのですが、今から考えると無謀とも思える課題がありました。- 私も含めてすべてのソフトウェアエンジニアが、C++での開発経験がなく、ましてやC++でのマルチスレッドプログラミングは初めて。
- 私を含めてすべてのソフトウェアエンジニアが、ハードウェアデバイスを制御するコピーやFAXの設計・実装の経験がないし、ドメイン知識も持っていない。
C++を学び始めて、全員で開発を始める前に解決する必要があると痛切に感じた課題は、「API設計の基礎」に書いた「実装の隠蔽」です。それは、「1.5 C++言語による実装の隠蔽」に書いていますので興味がある人はそちらを参照してください。
「ドメイン知識なしのコピー/Faxの開発」は、プロジェクトの後半で大きな手戻りを発生させました。完成が近づいたと思ったころに、従来のデジタル複合機を開発していたエンジニア達が完成度の確認をするためにテストを始めてくれたのですが、(ドメイン知識がないまま開発したことによる)さまざまな問題点を指摘されました。その問題の修正のために余分な開発期間を必要としました。
学んだこと
このIM200のプロジェクトでは多くのことを試行錯誤しながら、さまざなことを実践していきました。学んだことや実践したことをまとめる次の通りです。- (当時の)C++でのプログラミング
- メモリーリークやメモリー破壊の問題を解決するために独自のメモリ管理ライブラリを実装(「clibと呼ばれるライブラリー開発の思い出」)
- マルチスレッドプログラミングによるデッドロックのデバッグの経験
- 夜間ビルドの導入
- QAからの障害報告への対応をエンジニアが日替わりで担当する「Debugger of the Day」の導入
mmap
によるファイルへのアクセス技法- さまざまなサービスを
.so
ファイルに分割作成して、起動時に動的ローディング - コピー/Faxに関するドメン知識の獲得
1996年にFuji Xerox DocuStation IM200は商品化されてリリースされ、あらたなビジネスモデル(ペーパーユーザーインタフェースのサービスを使うごとに課金)を模索したのですが、残念ながら売れませんでした。後継機の開発もなく、1996年8月に私は富士ゼロックスを退職しました。
追記
IM 200開発では、朝7時過ぎに出社して、夕方まで働いて、それから飲み会という日が週に3日はありました。当時は、富士ゼロックスでは福利厚生の補助で安く飲み会ができました。2020-04-26 12:08
コメント(0)