自動車部品メーカーの三桜工業は,XMLを活用した購買システムを2000年10月に稼働開始する。柔軟性の高いデータ形式としてXMLに着目し,プログラム間連携のデータ・フォーマットとして採用。データベースOracleと帳票作成ツールFormFlow間の連携に効果を発揮した。

 ブレーキ・パイプなどの自動車部品メーカーである三桜工業(本社:茨城県古河市)は,XML(eXtensible Markup Language)を活用した「エンジニアリングセンター購買システム」を,2000年10月の稼働開始に向けて構築中だ。注文した商品の確認や検索および印刷を,WWWブラウザから操作するシステムである。

 米Oracleのリレーショナル・データベース管理システム(RDBMS)「Oracle8i」とカナダJetFormの帳票ツール「FormFlow 99」を採用しているが,これらのソフト間の連携にXMLを利用する(図1[拡大表示])。各ツール独自のデータ・フォーマットではなくXMLを使うことで,(1)ツール間の連携が容易になる,(2)将来どちらかのツールを別製品に入れ替えても他方に影響しない(柔軟性が高い),(3)他のシステムやツールと連携させるニーズが出たとき,それらがXMLにさえ対応すれば連携が可能(拡張性が高い)――という利点が得られた。

図1●三桜工業が構築した購買システムのソフト構成
Oracle8iと帳票ツールのFormFlow 99を組み合わせてシステムを作った。自社開発したプログラムは,クライアントを制御するVBScript,サーバーでSQLからXMLへの変換を制御するJavaサーブレット,XMLの構造変換を指定するXSLファイル,だけである

 ただし,XML文書から別のXML文書に変換する処理が必要になるなど,XML対応ツールを連携させるための工夫が必要だった。

HTMLでは力不足,XMLを採用

 同社の従来のシステムは,ホストをベースに必要な機能を継ぎ足して開発してきた。その結果,1つの目的のために複数のアプリケーションを使わなければならない,データの重複登録が必要になる,などの問題があった。ユーザーから「画面を統一してほしい」という要望も強かったため,WWWブラウザだけで利用できるシステムの再構築に着手した。

 WWWブラウザを使うのであれば,表示用のデータ形式はHTML(HyperText Markup Language)となる。HTMLはデータを表示するには適したフォーマットだが,データ連携のフォーマットとしては適していない。旧システムでは,あるアプリケーションで使っているデータを別のアプリケーションで簡単に利用できないことが問題だった。これは,データ・フォーマットの柔軟性が低いからではないかと感じていた。

 そこで新システムでは,柔軟性の高いデータ・フォーマットであるXMLを採用した。その上で,RDBMSのOracle8iと,WWWブラウザとXMLに対応した帳票ツールFormFlow 99を選択。サーバー・プログラムはJavaサーブレットで作成し,開発ツールにはOracleの「JDeveloper」を,実行環境にはフリーのJavaサーブレット・エンジン「Tomcat」を利用した。

XML専用DBよりもRDBMSを採用

 Oracle8iはRDBMSであるため,XML文書を格納するには,表形式のデータに変換する必要がある。現行バージョンのOracle8i R8.1.6ではXMLを直接扱うことができないが,無償で提供されているOracle8iのXML拡張コンポーネント群「Oracle XDK(XML Developer's Kit)」と一緒に使うことで,XMLを直接扱えるようになる。Oracle XDKは,SQL文を受け取って検索結果をXML文書で返すことができるモジュール「XML SQL Utility」などを備える。

 ただ,XMLをデータ・フォーマットとして使うのであれば,RDBMSではなく,米eXcelonの「eXcelon B2B Portal Server」のようにXMLをそのまま格納できるXMLデータベースを採用することも考えられた。XMLデータベースを使えば,XML文書から表形式のデータに変換する必要が無い。あえてRDBMSのOracleを採用した理由は,「バッチ処理などを考えるとXMLデータベースよりもRDBMSの方が優れている」(システム・インテグレーションを行った日立システムアンドサービス 企画室事業企画部主任技師の竹内成明氏)と判断したからだ。また,XMLを使わないアプリケーションも開発できる,というオプションを残すこともできる。

写真1●FormFlow 99で表示した画面例
WWWブラウザに表示している内容は,FormFlow 99のActiveXコントロールが,受け取ったXMLの情報を基に描画する

 一方,FormFlow 99を採用したのは,「XMLに対応し,帳票まできちんとできるクライアント・ツールはFormFlow 99しかなかった」(三桜工業のシステム関連会社 サンオー システム ソリューションズ 技術部の小林久也氏)ため。FormFlow 99では,ActiveXコントロールをWWWブラウザにダウンロードして高度な表示や印刷を実現できる(写真1[拡大表示])。従来使っていた注文書などの紙のイメージをWWWブラウザでそのまま表現できるのだ。印刷機能が優れている点も決め手になった。「ペーパーレスを目的としているが,紙に打ち出すことは急には無くならない」(三桜工業のシステム関連会社 ECD 三桜 取締役システム企画担当の小堀義之氏)と考えている。

 プログラムはVBScriptで記述する。ActiveXコントロールで描画するためGUIへの表示や印刷の表現力は高いが,WWWブラウザはInternet Explorerに制限されるデメリットがある。ActiveXコントロールは利用時にダウンロードするが,CAB(Cabinet)ファイルになっているため,一度ダウンロードすればバージョンが変わらない限りダウンロードする必要は無い。ActiveXコントロールのサイズは最大で3.0Mバイト,今回のシステムでは1.7Mバイトになる予定だ。

XMLから別のXMLへの変換が必要に

 データ検索の場合を例に,アプリケーションの流れを説明しよう。まず,WWWブラウザ上でユーザーの入力した情報はVBScriptが取得する(図1の(1))。VBScriptはサーバー上のJavaサーブレットを呼び出す(図1の(2))。Javaサーブレットは入力情報からSQL文を組み立て(図1の(3)),XML SQL Utilityに渡す。XML SQL Utilityは受け取ったSQLをOracle8iに発行し,返ってきた検索結果をXML文書に変換する(図1の(4))。

 ここで問題が起きた。Oracle8iとFormFlow 99は共にXMLに対応しているにもかかわらず,利用しているタグ・セットが異なるため単純にはつながらなかったのである。XML SQL Utilityが生成するXML文書はOracleのカラム名などをタグ・セットに使っており,そのままではFormFlow 99は解釈できない。そのため,Oracle XDKにあるXSLTプロセッサを使い,Oracle用のXML文書をFormFlow 99が理解できるXML文書に変換する(図1の(5))。XMLの構造変換ルールは,XSL(eXtensibleStylesheet Language)ファイルに記述しておく。

 FormFlow 99用のXMLはVBScriptを経由し(図1の(6)),FormFlow 99のActiveXコントロールに渡され,ActiveXコントロールが,検索結果をWWWブラウザに表示する(図1の(7))。

 事前に把握していた課題は,文字コードである。複数の市販製品で複数の言語を使ってプログラムを開発していることや,何度もXML文書を変換するため,異なる文字コードを使っていると誤変換を起こす可能性が高いと考えた。そこで今回は,文字コードをUnicodeのUTF-8に統一。現在のところ文字化けなどの問題は起きていない。また,当面は60人程度で利用するため実行性能に問題は無いと判断しているが,将来の拡張に備え,これから性能検証を行っていく予定だ。

(松山 貴之=matsuyam@nikkeibp.co.jp)