xfyのコンポーネント・アーキテクチャ

1. xfyのコンポーネント・アーキテクチャ概要

1.1. 理想的なXML文書の作成・編集環境と機能拡張の必要性

XMLを使用すると、作成する文書の用途や目的に合わせて、自由に要素や属性を定義したXML文書を作成できます。また、名前空間の概念が導入されてからは、複数のXMLボキャブラリを1つのXML文書内で使用した、複合XML文書を作成できるようになりました。こうしたさまざまなXML文書は、次のどちらかの方法でしか作成・編集できませんでした。

  • タグを直接入力できるエディタを使用する
    テキストエディタや、タグ入力を支援する機能を備えたXMLエディタを使用し、XML文書を作成・編集します。編集する文書はタグ混じりで表示されます。文書に要素を追加・削除するときは、直接タグを操作します。そのため、XML文書を編集するには、対象のXMLボキャブラリに含まれる要素や属性の定義に関する詳しい知識が必要です。 一方、1つのエディタで複数種類のXML文書や、複合XML文書を編集できます。また、XML文書の構成を容易に変更できます。
  • それぞれのXML文書に特化した編集ツールを使用する
    用意された入力欄に適切な内容を入力・編集し、すべての編集を終えて確定すると、XML文書が出力されます。XML文書を編集するときには、XML文書の要素や属性に関する知識は必要ありません。ただし、編集対象のXML文書で使用されるXMLボキャブラリごとに編集ツールを用意する必要があります。複合XML文書を対象とする場合、編集ツールは文書で使用されているすべてのXMLボキャブラリに対応する必要があります。XML文書の構成を変更するときには、編集ツール自体も変更する必要があります。

しかし、理想的なXML文書の作成・編集環境を考えると、次のすべての条件を備えていることが求められます。

  • あらゆるXML文書を編集できる
  • XML文書で使用されている要素や属性を意識しなくてよい
  • 編集時の操作が自然で、違和感がない

また、作成したXML文書は、ファイルシステムだけではなく、ネットワークストレージやサーバープログラムの管理下など、目的に応じて保存先を選択できることも求められます。これらの要求すべてを1つのアプリケーションで実現しようとすると、膨大な機能で肥大化して、使いにくくなることは、想像に難くありません。

1.2. xfy technologyのコンポーネントによる柔軟な機能拡張

xfy technologyは、このような問題を解消して複合XML文書を含むあらゆるXML文書に適した編集環境を提供する技術です。xfy technologyでは、XML文書の表示や編集、XML部分木に対する加工や計算、ファイルの読み込みと保存といったさまざまな機能を、それぞれ個別のボキャブラリコンポーネントとして実装します。それらのxfyコンポーネントを状況に応じて適切に組み合わせて機能拡張することで、対象のXML文書に最適な編集環境を実現することができます。

xfy technologyには、あらかじめ、いくつかの基本的な機能を担うxfyコンポーネントが用意されています。これらのxfyコンポーネントは特定の用途に特化されていないため、XML文書を編集するあらゆる場面で利用できます。また、必要であれば、特定の用途に特化したxfyコンポーネントを作成し、他のxfyコンポーネントと組み合わせて使用することもできます。

xfyコンポーネントは通常Java言語で作成されます。XMLボキャブラリを表示・編集するコンポーネントの作成には、後述するXVCDを利用することもできます。作成されたxfyコンポーネントはJAR(Java archiver)ファイル形式にアーカイブされ、xfy technologyユーザーエージェントの実行環境に配置することで使用可能になります。

2. 機能拡張の例

xfy technologyで実現できる機能拡張の例を示します。

2.1. xfytec.comから提供される追加機能コンポーネントを利用する

xfy Basic Editionでは、xfytec.comから提供される追加機能コンポーネント(xfy Basic Editionの標準構成には含まれていないコンポーネント)を、xfyコンポーネントの更新機能を使って追加することができます。

xfyコンポーネントの更新機能については、xfy Basic Edition操作マニュアルの「xfyコンポーネントを更新・追加する」を参照してください。

2.2. 新しいXMLボキャブラリに対する表示・編集機能を追加する

新しいXMLボキャブラリをxfy technologyで扱うには、そのXMLボキャブラリの表示・編集に対応したコンポーネントを作成します。XMLボキャブラリの表示・編集に対応するコンポーネントは、ボキャブラリコンポーネントと呼ばれます。代表的なボキャブラリコンポーネントの例としては、次のものがあります。

  • XHTMLコンポーネント
  • SVGコンポーネント

ボキャブラリコンポーネントは、xfy technologyでもっとも特徴的な機能拡張コンポーネントです。このコンポーネントは、ほかのコンポーネントのようにJava言語で作成するだけではなく、後述するXVCDというスクリプト言語を使用して作成することもできます。

2.3. XPath関数などの機能ライブラリを拡張する

xfy technologyで利用する機能ライブラリは、コンポーネントを作成すると拡張できます。機能ライブラリを拡張するためには、次のコンポーネントを作成します。

これらのコンポーネントを作成すると、複雑な数値演算や文字列操作を行う関数やインストラクションを追加できます。

2.4. 新たなプロトコルやサーバーに対応した入出力機能を追加する

xfy technologyであらかじめ提供されているプロトコル以外の新たなプロトコルやサーバーへのアクセス方法の追加など、xfy technology のファイル入出力機能を拡張するコンポーネントを作成することができます。このようなコンポーネントは、I/Oコンポーネントと呼ばれます。I/Oコンポーネントが提供する機能には、次のようなものが考えられます。

  • サーバーからネットワーク経由でファイルを取得する
  • XML形式でないファイルをXMLに変換して読み込む
  • XMLファイルの保存方法をカスタマイズする

2.5. アプリケーションウインドウ自体への機能追加・改造

xfy technologyによるXML文書の編集の仕組みを利用したアプリケーションは、xfyコンポーネントを組み合わせて実現できます。このときに、アプリケーションウインドウ自体を改造したり、機能を追加したりするようなコンポーネントを作成できます。このようなコンポーネントは、アプリケーションコンポーネントと呼ばれます。xfy Basic Editionは、xfy technology を使用したアプリケーションの一例です。

2.6. その他の機能拡張

上記のほかにも、目的に応じてコンポーネントの種類を増やすことができます。また、コンポーネントが利用するインターフェースの定義を拡張することもできます。

3. 機能拡張の実装

xfy technologyで機能拡張を実装する方法の概要を説明します。

3.1. XVCDによるボキャブラリコンポーネントの開発

xfy technologyではボキャブラリコネクション(Vocabulary Connection)という機構が提供されています。ボキャブラリコネクションは、新しいXMLボキャブラリを既存のXMLボキャブラリに結びつけて、既存のボキャブラリコンポーネントで提供される表示・編集機能を利用できるようにします。このボキャブラリコネクションを利用するためのスクリプトがXVCDです。そのため、XVCDを使用すると、新しいXMLボキャブラリに対応したボキャブラリコンポーネントを簡単に作成できます。

ボキャブラリコネクションの技術的概要については、「Vocabulary Connection技術概要」をご覧ください。また、XVCDによるボキャブラリコンポーネント開発の概要は「XVCDによるボキャブラリコンポーネントの開発手順」を、サンプルを元にした開発チュートリアルは「XVCDによるボキャブラリコンポーネント開発チュートリアル」を、それぞれご覧ください。開発のためのリファレンスの読み方は、「リファレンスの読み方」をご覧ください。

3.2. Javaによるxfyコンポーネントの開発

Java言語を用いると、ボキャブラリコンポーネントをはじめとするさまざまなxfyコンポーネントを作成できます。

今後、Javaによるxfyコンポーネント開発の概要やチュートリアル、サンプルなどをxfytec.comで提供することを予定しています。

3.3. JARファイル

XVCDやJavaで作成したxfyコンポーネントは、所定の手順に従ってJAR(Java archiver)ファイル形式にアーカイブし、xfy technologyユーザーエージェントの実行環境に配置することで使用可能になります。JARファイルとxfyコンポーネントとの関係は1対1とは限らず、1つのJARファイルに複数のxfyコンポーネントが含まれることも、その逆に1つのxfyコンポーネントが複数のJARファイルによって構成されることもあります。

作成したJARファイルは、xfy technologyユーザーエージェントの実行環境に配置すると、利用できるようになります。xfy technologyユーザーエージェントの実行環境のフォルダ構成は、次のとおりです。

[-] bin                      … xfy technologyユーザーエージェントの実行ファイル群が配置されるフォルダ
    [+] common               … 複数のコンポーネントから共通で利用されるJARファイルを配置するフォルダ
    [+] plugins              … 通常のJARファイルを配置するフォルダ
        xfyBasicEdition.jar  … xfy technologyユーザーエージェントの起動や、
                                各JARファイルの初期化処理を行うJARファイル

JARファイルの配置先は、複数のxfyコンポーネントから利用される共通のxfyコンポーネントが含まれるものと、必要なときに利用される通常のxfyコンポーネントのみが含まれるものとで異なります。JARファイルに複数のxfyコンポーネントから利用される共通のxfyコンポーネントが含まれる場合は、commonフォルダ以下に配置します。通常のxfyコンポーネントのみが含まれるJARファイルの場合は、pluginsフォルダ以下に配置します。配置先のフォルダ内にはベンダーごとにディレクトリを作成し、その中にJARファイルを配置します。

commonフォルダに配置されたJARファイルは、xfy technologyユーザーエージェントの起動時にロードされます。それに対してpluginsフォルダに配置されたJARファイルは、xfy technologyユーザーエージェントの起動時には、JARファイル内に含まれるコンポーネントによる機能拡張の情報だけが読み込まれます。プログラム自体は、コンポーネントが提供する機能が必要とされたときにロードされます。