小西氏の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ドキュメントのアップロード、ダウンロード、パッケージ・パーツ・XMLパーツの一覧表示が実現されている。
日本IBMの丸山氏からは、「OOXMLドキュメントを分解して格納することのメリットは?」という厳しい質問も出たが、小西氏は「調べたところ、事例が見つからなかったので作ってみた」と回答。とはいえ、講評の際、丸山氏も「ここまでOOXMLを分解できれば、いろんな使い道があるのではないか」と評価していた。
応募者からは、「さまざまな視点によるシステムがあり、よい刺激になった」というコメントがあったが、マインドマップのようなアプリケーション(織田氏のアプリケーション)から、CMDBといった、今、企業システムで使われているアプリケーションまで、XMLの用途の幅広さにあらためて驚いた。村田氏を中心に現在も開発が進められているXMLだが、その将来がますます楽しみだ。