ゆーたんのつぶやき

株式会社ノークリサーチにてIT関連のシニアアナリストとして活動しています。

XMLで記述するGUI



GUI部品を配置する際、Windows FormsアプリやSwing、
SWT/JFaceアプリのようにプログラムコードとして記述
していく方法に対し、XMLで記述するスタイルが徐々に
一般的になりつつある兆候が見え始めているように感じ
ます。


代表的なものではMicrosoftの「XAML」、Mozilla
XUL」、Macromediaの「MXML」やLaszloの「LZX」
といったものが挙げられます。
実はHTMLについても、『タグ言語で記述したファイル
レンダリングして、GUIを生成する』という考え方
そのものは同じですので、「古くて新しい」スタイル
と言うこともできるかと思います。


これらのうち、どれが普及していくのかという点は
誰もが注目するトピックなのではないでしょうか。
おそらくポイントとしてはXMLマークアップが簡単
で誰でも容易に扱えるということに加えて、
1. 同一のXML言語でいくつのレンダリングをサポートできるか?
2. どれだけ多種多様なプラットフォームをサポートできるか?
3. 処理ロジックとの組み合わせの柔軟性はどうか?
の三つが重要になってくるかと思います。


まず1.ですが、これについてはXAMLが一歩進んでいる
印象を受けます。元々のコンセプトで単一のXAMLから
ASP.NET用のWEBコントロールも、Windows Forms用の
GUI部品もレンダリングすることができます。さらには
XamlonのようにXAMLからFlashを生成できるものも登場
してきます。
2.については1.の選択肢が広くなれば自ずと2.も広く
なってはきますが、選択したレンダリング手法に負う
ところが大きいです。この点ではFlashを用いている
MXMLやLZXが有利と考えられます。
3.については見落とされがちですが、実際の開発に際して
はとても重要なポイントです。XMLが柔軟であるとはいえ、
個々のGUI部品間の連携動作やバックエンドとのデータの
やりとりまで記述するわけにはいきません。XMLは元来「
宣言的」ですので、動作を持ったGUIを実現するためには
何らかの手続き型言語との連携が必要になってきます。
この点についてはコードビハインドの考え方を持っている
XAMLが有利ではないかと思われます。


このように考えるとXAMLがやや優勢のようにも見えますが、
本来の実力を発揮するためにはWindows上で動作させる必要
があり、動作対象プラットフォームが限定されてしまうというのが
大きな問題となってきそうです。XULは対象ブラウザが限定
されてしまうため、実運用で選択肢に挙げるのは難しいと
思われます。MXMLやLZXについてはFlashプラグイン
あるという特性からくるプログラムロジックやデータ共有
上の制限が挙げられますが、オープンソース実装のLZXに
関しては先に書いたエントリのようにJSFなどと併用する
ことで解決することができます。そうなると、Flash
ユービキタスな点を生かしつつ、高度な動作の実装が可能
になりますので魅力的な選択肢となるでしょう。
http://d.hatena.ne.jp/dufresne/20050728


さらに最近ではアイティフロンティアが中国の大学と共同
で新たなGUI生成用XML言語を開発しました。
http://itpro.nikkeibp.co.jp/article/NEWS/20050831/220368/
興味深いのはXML言語仕様とレンダリングエンジンを切り離し
同一のXML言語から複数のレンダリング方法をサポートする
ことを想定しているという点です。これは2.のポイントを
プラガブルにするという考え方といえます。残念ながら、3.
のポイントに関しては現時点ではプラガブルな形にはなって
いないようです。


そう考えると、理想的なGUI生成用XML言語というのは
・言語仕様がわかりやすく、扱いやすい
レンダリング方法を選択し、プラグインすることができる
・動作ロジックとの間を橋渡しするAPI/SPIが整備されており
 ロジック実装のための言語は別途選択することができる
といったポイントを満たすものということができるのでは
ないかと思います。