mb_language("uni"); mb_internal_encoding("utf-8"); mb_http_input("auto"); mb_http_output("utf-8"); ?>
これはある普通の開発プロジェクトの打ち上げ宴会中の1コマです。
「XMLデータベースがまた流行ってきたけど使えるのかねぇ」
「そうそう、第2世代とかいうらしいけど、なんだかよくわからん」
「どっかに書いてあったけど、昔に比べてずっと速くて柔軟なんだって」
「それってこれまでは遅すぎて使えなかったってだけじゃないの?」
「そもそもわからないのが、なんでわざわざXMLなんかをそのままデータベースに格納しなきゃいけないのかっていうことなんだよな」
「そうだよな。データを格納して検索するなら、別におれはオラクルで不自由感じないね」
「実際にどんな構成でシステムを作るのかっていうところもわからないし」
「まったく。今どきデータベース直結のクライアントサーバで作るわけじゃないんだから、エンジンが柔軟とかいっても、そんなのビジネスロジック層が吸収するだろ、ふつう」
最前線のシステム開発の現場にいるエンジニアの皆さんの中には、こういった意見に近い感覚を持っている人が結構いらっしゃるのではないでしょうか。インターネットで検索すれば、XMLデータベース(以降、XML DB)がどのような特徴を持っていて、第2世代と呼ばれる最近の製品で性能が実用レベルに達したということを説明している解説記事がいくつも見つかることでしょう。
また、NeoCore XMSのようなネイティブXML DBと呼ばれる製品が注目されているだけでなく、OracleやDB2といったメジャーなリレーショナルデータベース(以降、RDB)がXMLをネイティブに扱う機能を強化しているということもおわかりになるでしょう。
しかし、それを使わなければいけない必然性のある場面や、現実のシステム開発のイメージがいま1つピンとこないというのが正直な感想ではないでしょうか。
本連載ではそうした疑問に答えるために、どのようなシステムにXML DBを使うのが効果的で、実際にどんなシステムの構成になるのかを解説します。NeoCore XMLを使い、具体的なシステムの企画からはじめ、それを実現するところまでをシンプルな例を題材にすることで、現場のエンジニアに納得できる説明をしてみたいと思います。
まず、XML DBがどのようなシステムに適しているかの説明をします。
XML DBでは半定型文書を扱う
具体的なシステムの企画をする前に、XML DBを有効活用するシステムは一般的にはどのようなものかを整理しておきましょう。
XML DBとRDBは基本とするアーキテクチャ、つまり仕組みが違っています。当然それぞれの仕組みにあった使い方をするのが1番よいのですが、ただ「XML DBは柔軟です」といわれてもそれで何に使えるのか見当がつきません。
いつも使っているRDBであれば仕組みまで考えなくても、扱えるデータを想像できますが、使ったこともないXML DBの仕組みを考えて扱うデータを想像するのはかなり難しい話です。ただ、逆にこう考えることができます。XML DBが有効活用できるデータは、これまでデータベースに入れる気もしなかった種類のデータではないかということです。
そうしたデータの中でもっとも重要なのが文書を表現するデータです。例えば、ワープロで書いた報告書や仕様書、プレゼン資料、スプレッドシートの表、Webページ、そしてそれらの素材になるようなコンテンツ群です。
これらは全体の構成から細かい内容まで、作成者が自分の好きなように変更したり追加したりできる非定型のデータです。これに対して、RDBで使われるのはユーザが好き勝手に構造を変更してはいけない定型データだという点であり、ここが大きく違います。
非定型データを扱うならGoogleデスクトップのような検索エンジンでいいじゃないかと思われた方もいらっしゃるでしょうが、まさにその通りです。完全に自由な非定型な文書もまた違うのです。XML DBを有効利用できるデータとは、ユーザによる自由な構造の修正も可能だけれど、部分的には構造が決まっている「半定型」の文書なのです。
▲図1:XML DBには半定型データが適している
XML DB について注意して欲しいのは、XML文書であれば何でもRDBより効率的に扱えるというわけではないということです。XMLは非常に記述能力の高いフォーマットなので、定型なデータと非定型なデータのどちらも表現することができます。ただし、このうち定型データについてはXML DBがRDBに比べて特に有効というわけではありません。
定型文書とは発注書や申請書など構造が完全に決まった文書のことです。これらの多くは決まった構造をスキーマで表現することができるのでRDBで容易に扱うことができます。
階層構造を持つXML文書をRDBで読み書きする時にRDBのテーブル形式との間での変換が必要になります。従来こうしたマッピングが開発効率と実行効率の両方でネックになると指摘されてきましたが、今ではO/Rマッピング技術の進歩によってあまり問題にならなくなってきています。何らかの構造の変換が必要ということだけならXML DBでも同じです。
ネイティブXML DBといってもXML文書をテキストのまま蓄積するわけではありません。XML文書とデータベース固有の内部データとの間での変換が必要になる点は同じなのです。
XML DB に適した半定型文書は、一部に共通の構造を持ちますが、それ以外はかなり自由に変更してよい文書のことをいいます。例えばスペック情報を含むマニュアル、製品と価格情報をもつカタログ、主要部分の構造が法律で決められている特許、練習問題を含む教科書、見積額などの情報を含んだ提案書などと少し考えれば様々なものが思いつきます。
XML DBでは、XML文書内部の階層構造を用いた操作を効率よく行うことができます。この特徴を使って、例えば大量に蓄積されているマニュアルがXML文書として蓄積されていれば、各文書に共通に含まれているスペック情報を取り出し、一覧出力や比較ができるようになります。このような処理はRDB・全文検索エンジンともに困難です。
XML DB の有効活用が期待される半定型文書を扱うシステムは、文書の内容を創意工夫して作る必要のある創造的な業務を支援します。これに対して、RDBを用いて行われている業務は企業の基幹のシステムでの定型的なデータを扱う定型的な業務のことです。これまで多くの企業で進められてきたのは定型的業務の支援ですが、現在では創造的な半定型的業務の支援が強く求められるようになってきています。
一方、その前提となる環境として、非定型文書も含む様々な種類のXML文書が広く普及し、蓄積が容易になってきています。例えば、Microsoft WordやExcelはすでにXML形式のフォーマットを出力する機能を持っていますが、次のバージョンではXML形式のフォーマットが標準の保存形式になるといわれています。
また2005年には、OASISという標準化団体が、オフィス文書の国際標準規格としてXMLベースのODF(Open Office Format)を標準化しています。こういったことが、現在XML DBに対する関心が高まっている背景なのです。
ここまででXML DBの有効性が期待されるシステムを説明しましたので、本題に戻り、実際にXML DBを利用したシステムの企画をしていきます。
システムが解決したい課題
本連載ではXML DBを用いてある仮想的な会社の業務を支援するシステムを企画することとします。想定する会社はシステム関連サービスを行っている会社で、これから構築するシステムを用いてその会社の営業活動を支援することを考えます。
この会社は独自の業務パッケージソフトウェアを持っており、このパッケージを顧客の環境にあわせた形にカスタマイズして導入するのが主なビジネスです。営業所は複数の拠点にわかれていて、各担当営業が顧客への提案活動を行っていますが、次のような課題を抱えています。
▲図2:ある会社の営業部門が抱える課題(画像をクリックすると別ウィンドウに拡大図を表示します)
リアルタイムの営業情報共有
現状ではどの会社に対して営業活動が行われているかわからないため、同じ会社の別々の部門に複数拠点の担当営業がアプローチしてしまうことがあります。すでに、営業情報の共有ツールを導入していますが、見積り金額の変更などの更新が後回しにされるなど、リアルタイムでの営業状況がわからない状態です。
提案ノウハウの共有
提案はシステムの有効性を効果的に示すためにプレゼンテーション用のツールを利用していますが、営業担当者の資料作成スキルで提案の善し悪しが大きく変わってしまいます。
また、顧客情報についての機密保持は厳重に管理したいので、提案資料中の顧客社名などの情報が見えない形でノウハウを共有したいという要望があります。
これら課題を解決するためには、表1の要件を充たす企画をしなければなりません。
▲表1:問題を解決するための営業支援システムの要件
▲図3:XML DBを用いた課題の解決(画像をクリックすると別ウィンドウに拡大図を表示します)
こうしたシステムを企画する時に最も重要なポイントは、どれだけリッチな情報を楽に登録できるかというところです。頻繁に多くの詳細な情報を加工して入力してもらえば、それだけ高度な情報共有ができるのは当然です。
しかし、入力する手間がかかりすぎれば煩雑な入力としてシステムが使われなくなります。このシステムの例では顧客に提示する資料をそのまま登録するので二度手間がなくなり、本来の営業活動に専念できるようになります。
このシステムは資料の全体構成やデザインは各担当営業の創意工夫で自由に決めてよいですが、顧客名や見積額といった共通の項目を持つような半定型文書の管理を行います。こういったシステムを構築するのにXML DBは非常に効果的です。
本連載では、具体的にNeoCore XMSを用いてこのシステムを構築していきます。次回はプレゼンテーション資料のためのXMLをどう扱い、どんな構成のシステムにするかを検討します。
▲このページのTOPへ