XAMLとeFace

XAMLとはMicrosoftが開発したXMLベースのUI記述言語だ。XAMLは.NET Framework 3.0を基盤としており、アプリケーションのUIをXMLで記述し、処理ロジックをC#やVB.NETなどのプログラミング言語で記述するという開発スタイルをとる。Soyatecが提供するeFaceは、このXAMLをJavaでも利用できるようにするものだ。eFaceはJava上でXAMLを利用するためのフレームワークでもあるが、開発ツールとしてEclipseプラグインが提供されている。

eFaceのインストール

eFaceはダウンロードページからダウンロードすることができる。ダウンロードにあたってはユーザ登録(無料)を行う必要がある。

ダウンロードしたZIPファイルを適当な場所に展開し、展開したフォルダをEclipseの更新マネージャからローカル更新サイトとして追加すると以下のようにインストール可能なフィーチャが表示される。

図1 eFaceのインストール

eFaceでアプリケーションを作ってみよう

eFaceでアプリケーションを開発するにはまず通常のJavaプロジェクトを作成する。プロジェクトを作成したら新規作成ウィザードのeFaceカテゴリからXAMLを作成することができる。ここでは例としてWindow Componentを選択してみよう。

図2 XAMLの作成

すると、図3のようにXAMLとそれに対応するJavaクラスが生成される。また、eFaceに必要なライブラリが自動的にプロジェクトに追加される。

図3 生成されたXAMLとJavaクラス

XAMLは図4のようなエディタで編集することができる。画面上部にはプレビューが表示され、画面下部でXAMLとJavaソースを編集できるようになっている。XAMLエディタではタグや属性の入力補完が可能なほか、XAMLに記述したイベントハンドラに対応するJavaソースの雛形を生成したり、XAMLをプレビュー表示して動作の確認を行うことが可能だ。

図4 XAMLエディタ

たとえばリスト1のようなXAMLを記述したとする。

リスト1 XAMLのサンプル

<?xml version="1.0" encoding="Windows-31J"?>
<Window x:Class="sample.SampleWindow" xmlns:java="clr-namespace:sample"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  SizeToContent="Height" Title="サンプル" Width="200" >
    <Button Click="onClick">クリックしてください</Button>
</Window>

この状態でButton要素のClick属性にカーソルを置いた状態でJavaソースの生成ボタンをクリックすると、Javaソースにリスト2のようなJavaソースの雛形が追加される。

リスト2 イベントハンドラの雛形

/**
 * @param sender
 * @param eventArgs
 */
public void onClick(Object sender, RoutedEventArgs eventArgs) {
  // TODO Auto-generated method stub

}

イベントハンドラをリスト3のように編集してみよう。

リスト3 編集後のイベントハンドラ

/**
 * @param sender
 * @param eventArgs
 */
public void onClick(Object sender, RoutedEventArgs eventArgs) {
  MessageBox.Show("ボタンがクリックされました!");
}

この状態でプレビューボタンをクリックすると図5のようなウィンドウが表示され、ボタンをクリックするとメッセージダイアログが表示されるはずだ。

図5 サンプルアプリケーション

まとめ

以上のようにeFaceを利用するとXAMLでUIを定義し、処理ロジックをJavaで記述することができる。eFaceはユーザインタフェースのレンダラとしてSwing、SWT、HTML/Ajaxを切り替えることができるとのことだ(現在のバージョンではSWTレンダラのみ提供されている)。開発環境はもちろんのこと、プラットフォームとしても興味深い。

なお、Soyatecはeclipse4SLというEclipseでSilverlightアプリケーションを開発するためのプラグインも提供している。こちらはオープンソースで開発されておりeFaceと共に要注目のプロダクトといえるだろう。