サイトアイコン CAD日記

JWWを読む

 やっぱりJWWについても書くことにしました。JWCに触れておいてJWWを語らなければ、片手落ちなのでは、と考えたので。今では、Windows版のほうが圧倒的にユーザー数が多くて、データの流通においてもJWWのほうが多いのではないかと思います。

 JWWは、シリアライズです。って、あまり日本語になってないですね。C++のオブジェクト指向を取り入れたデータ構造をしています。図形のデータ構造においては、色や線種のようなどんな図形も保持している情報をスーパークラスとして定義しておいて、これを継承したサブクラスとして線とか円弧とかいった図形のクラスがあります。そして、スーパークラスがCObjectを継承しているので、シリアライズに対応しているわけです。

 シリアライズって何?ということなんですけど、実は私もよくわかってないので調べてみました。

「ソフトウェア内部で扱っているデータを丸ごと、ファイルで保存したりネットワークで送受信することができるように変換すること。」(e-wordsより引用)

 そうですね。簡単にファイルから読み書きできるデータ構造ということです。C++では、>>とか、<<といった記号によって、ファイルを読み書きできます。例えば、CStringのような抽象的な型の変数でも、文字列の長さなんていう余計なことを考えずに、ファイルに保存できてしまうのです。

 あとは、CFile, CArchiveといったクラスを使って形を整えれば、シリアライズの完成です。本当にこれで読み書きできてるの?という感じでしたけど、出来てました。

 けっこう長くC++をやってますけど、シリアライズを知らなかったというのは、恥ずかしかったかもしれません。そういう意味ではJWWでよーく勉強させてもらいました。

 JWWファイルの先頭部分は、「JwwData.」というテキストコードが必ず入ってます。これによりファイルがJWWかどうかを判定するのです。ということで、先頭8バイトは固定のテキストコードが入っています。次の4バイトが、そのファイルのデータバージョンです。データの型としてはDWORD、つまり unsigned long です。これは、DWORDでそのままシリアライズされてるので、テキストエディタで見ても化けてしまって、何だかわかりません。値としては、230とか300とか351という数値が入っています。一番最初にJWWのデータ構造が公開されたときのバージョンが2.30でした。その後、3.00と3.51でデータ構造が変更されています。最新のJW_CADのバージョンは4.10ですけど、内部バージョンとしては351がまだ使われています。

 JWCと比べると、図形の種類が増えました。ブロック(シンボルとも呼ぶか)が出来て、寸法(線と文字をグループ化しただけですけど)が出来て、塗り潰しもあります。文字では、MSゴシックなどのWindowsフォントが使えるようになりました。色の種類は1種類しか増えてませんけど、色番号に対するRGB値を指定できるようになってます(たぶん)。

私はぜんぜん知りませんけど、天空図なんていう単語がデータ構造上に現れてきます。あとJW_CADでは、2.5次元というのが有名ですけど、これも強化されているのでしょう。

 ちょい余計な話ですけど、JW_CADという名前はアンダーバーを含んでます。本やWebなんかで、アンダーバーをハイフンで表現していたり、何もいれずにつなげていたりする場合がよくあります。まぁ、声に出す部分ではないので、どっちでもいいんですけど、個人的には気になってます。作者にどんな意図があって、アンダーバーで表現しているのかわかりませんが、ちょっとしか知らない人が、間違えるのは当然と言えば当然です。そんなことをいちいち指摘したいわけではありませんが、間違っている記述を見かけると、何やらモヤモヤが残り、気持ち悪いです。

 JW_CADは、DOS版からWindowsに移植され、ますますその存在感を高めています。使いやすい、タダ、この2点が継続される限り、この繁栄はずっと続くでしょう。

モバイルバージョンを終了