設計基本方針(アーキテクチャ)
アプリケーションの仕様説明、開発環境の構築が終わったところで、次はいよいよサンプルアプリケーションの設計方針について説明します。以下の図にアプリケーション全体のアーキテクチャを示しました。
XMLドキュメントの新規作成、抽出、削除
XMLDocument(com.exln.dxe.filesystem)インターフェイスを使用します。XMLDocumentインターフェイスは、Cyber LuxeonのAPI上で、1つのXMLドキュメントを表現するためのインターフェイスです。サンプルアプリケーションでは、XMLの新規作成(図上の赤線)、抽出(図上の青線)、削除(図上の水色線)の際に使用します。
XMLドキュメントの更新
Update(com.exln.dxe)インターフェイスを使用します。Updateインターフェイスは、XUGを表現するためのインターフェイスです。本サンプルでは、XMLを更新する際には、このインターフェイスを使用します(図上の緑線)。
XMLドキュメントを更新する別の方法としては、XMLDocumentインターフェイスを使用する(上書き保存)という方法も考えられますが、XUGを使用することによって、ある1要素の値のみを更新することが可能で、処理もより効率的になるため、本サンプルでは、XUGを使用する方法を用いました。
JAXBの採用
システムのバックエンドに保存されているXMLドキュメントを最終的にユーザーに見えるような形で表示したり、ユーザーの入力データをXMLドキュメントして保存するためには、HTMLの入力値からXMLデータ、その逆にXMLデータからHTML上の表示値という相互変換をする必要があります。
この変換の方法としては、XSLTを用いて変換する方法や、DOM APIを直接記述して変換する方法が、XMLがシステムで使用され始めた当初からよく採用されています。しかし、XSLTはHTMLを記述するデザイナにとっては敷居が高い技術であり、文法を憶え、使いこなすのにも時間がかかります。またDOM APIをJavaプログラマが直接扱う場合、決まりきったコーディングを何度もする必要があり、プログラミングも必要以上に冗長になってしまい、直感的でなくなってしまう傾向があります。
本稿では、これらの問題を解決する方法として、JAXB(Java Architecture for XML Binding)を採用しました。JAXBは、XMLデータを読み込んでJavaオブジェクトに変換したり、その逆としてJavaオブジェクトを変換して、XMLデータとして出力することができます。このような技術を「XMLバインディング」といいます。JAXBもその実装のうちの1つとなります。「XMLバインディング」はRDBでいう「O/Rマッピング」に相当する技術と考えてよいでしょう。JAXBの概要については、次のコラムで説明しています。JAXBの具体的なコーディング方法(アノテーション記述方法)については、後編の実装編で説明します。
本文でも触れましたが、JAXBは「XMLバインディング」という技術の実装技術の1つです。XMLは階層構造のデータを記述したものであり、Javaも階層構造を容易に表現できるというJavaとXMLの親和性の高さから生まれたのが「XMLバインディング」です。
JAXBを最終的に実行するためには、XMLデータのツリー構造にマッピングしたJavaクラスを用意する必要がありますが、JAXB2.0ではJavaクラスを作成する方法として、以下の2つを用意しています。
- XMLスキーマファイルを入力として、ツール(xjc)でJavaクラスを自動生成する方法(図の青矢印)
- Javaクラスをコーディングして、アノテーションによって要素、属性などクラスに直接定義する方法<JAXB2.0から>(図の赤矢印)