EY-Office ブログ

過去の話シリーズ(6) ラスターCADという新製品を開発した

自己紹介シリーズ第6弾です。 前回の プリント基板用CAD は大いに売れてベンチャー企業は某商社の輸入したCADをサポートする会社から、自社CADを製造・販売・サポートする会社へと変化し、最盛期には150人くらいの会社にまで成長しました。

Raster CAD 画像はイメージです

私はプリント基板用CADのチームは離れ、新たな製品を開発してるチームに入りました。 このベンチャー企業には以前書いた CADデータ変換装置 も地図業界などに売れていましたが、機械図面のように高度にルール付けされた図面の認識は出来ていませんでした。

この時点、世の中は紙の図面があふれていました、それを上手く管理(保存、検索、印刷)出来て少しでも再利用出来れば満足できるユーザーがいることがわかりました。しかもこのベンチャー企業はCADデータ変換装置を作る際に当時は珍しかったA1(A0)サイズのスキャナーを扱っていましたし、A1(A0)サイズのプリンターも在りました、さらに追記型の光ディスクが登場し大型図面の画像データを保存する事も出来るようになっていました(この時期A4(A3)サイズの紙ドキュメントを光ディスクで管理できるファイリングシステムが大企業から販売されていました)。

残りはスキャナーから取り込んだA1/A0サイズの画像データを編集できるソフトが出来れば商品として完成します。

しかしこの時点でのワークステーションのメモリーは4Mbyte(Gbyteではありませんよ!)です、A0図面を8ドット/mmでスキャンした白黒2値画像のデータは8Mbyteあります。ワークステーションは仮想記憶をサポートしているので8Mbyteの画像は扱えますがメモリーに入らない部分はハードディスクにスワップアウトされ極度に遅くなり、快適な画像編集は不可能でした。
また編集では Undo が出来ないと困るので、単純に考えると変更用の画像と変更前の画像の2つが必要になり更にメモリーが必要になります。

この問題の解決は案外簡単でした、画像を光ディスクに書く際にはなんらかの圧縮を行います。簡単なランレングス圧縮でも画像は1/10程度に圧縮されます、ということはメモリー上でも圧縮された画像で扱えばメモリーは4MbyteのワークステーションでもA0サイズの画像を楽々扱えます。
ただし、圧縮されたままでの画像編集のアルゴリズムは難しそうなので諦めました。

多くの編集は通常は図面の一部分に対して行われるので、編集するには

  1. 光ディスクから取り出した画像は展開(非圧縮)データに変換
  2. 適当サイズ(512ドットだったかな)のメッシュで分割し、分割した単位で圧縮したデータを作り 1.で使ったメモリーは解放する
  3. 編集操作の影響範囲を数値で計算し、必要なメッシュを特定しておく
  4. 変更が必要なメッシュを一つ展開する、ただし既に展開されたデータがキャッシュされていればそれを使う
  5. 展開されたメッシュ単位でのデータの編集を行う
  6. メッシュのデータを圧縮する、ただしデータはキャッシュしておく
  7. 3.で計算した次のメッシュの編集を行う(4.に戻る)

私はこの方式を考えプロトタイプを作り性能が出ることを確認し、実際のソフト作成は他のメンバーに託しました。
このソフトはラスター(イメージ)データを扱うCADのようなソフトということで ラスターCAD と命名され、大手企業も販売していた光ディスクファイリングシステムのマーケットでも高い競争力を持った製品になりました。

- about -

EY-Office代表取締役
・プログラマー
吉田裕美の
開発者向けブログ