ソランの小西啓介氏

小西氏のOOXMLドキュメント向けDBの稼働環境は、「Windows XP+Apache 2.2.11+PHP 5.2.6+DB2 9.5.2」。同氏によると、この環境は以前、pureXMLプログラミングセミナーで利用したもので、特に意味はないそうだ。

同氏は、OOXMLドキュメントをXML DBに格納する際の課題として、「単一のXMLファイルでない」「バイナリパーツが含まれている」「構造が複雑かつ柔軟である」ことの3点を挙げた。これら課題の回避策として、今までは「メインパーツのみ」「変換・抽出したxmlのみ」を格納する不可逆的な方法が用いられていたが、同氏はこれを可逆的に格納するという方法を考えついた。具体的には以下の方法で格納が行われている。

  • OOXMLのコンテンツタイプス(各パーツのデータタイプを定義するXMLファイル)、パッケージのリレーションシップとプロパティ情報のパーツを、PackagesテーブルのXMLカラムに格納
  • XMLパーツをPackagesテーブルに、それ以外のパーツをPartsテーブルに格納
  • コンテンツタイプス、パッケージのリレーションシップとプロパティ情報に関するデータをPackagesテーブルに、パーツに関するデータをPartsテーブルに格納

サンプルに使われたOOXMLドキュメント。Excelに細かなパーツから成る画像が含まれている

Packagesテーブルの構造

上記のような仕組みにより、OOXMLドキュメントのアップロード、ダウンロード、パッケージ・パーツ・XMLパーツの一覧表示が実現されている。

日本IBMの丸山氏からは、「OOXMLドキュメントを分解して格納することのメリットは?」という厳しい質問も出たが、小西氏は「調べたところ、事例が見つからなかったので作ってみた」と回答。とはいえ、講評の際、丸山氏も「ここまでOOXMLを分解できれば、いろんな使い道があるのではないか」と評価していた。

応募者からは、「さまざまな視点によるシステムがあり、よい刺激になった」というコメントがあったが、マインドマップのようなアプリケーション(織田氏のアプリケーション)から、CMDBといった、今、企業システムで使われているアプリケーションまで、XMLの用途の幅広さにあらためて驚いた。村田氏を中心に現在も開発が進められているXMLだが、その将来がますます楽しみだ。