XML XSLT

Swing/SWT共通コードジェネレータの開発
大城 繁鷹 塚本 享治
東京工科大学
0312006003
浅川 和久
2009/6/11
1
はじめに
• 「わかりやすいGUIプログラミング」「複数のラ
イブラリへの対応」を実現する
• XMLで定義したGUI情報をXSLT変換
• JavaSwing/JavaSWTの2種類のソースコードを
同時に生成
2009/6/11
2
XSLT
• XML Stylesheet Language Transformations
• XMLによって記述された文書を他のXML文書
に変換するための簡易言語
• XML文書からHTML文書やテキスト文書への
変換
IT用語辞典 http://e-words.jp/w/XSLT.html
2009/6/11
3
GUIプログラミングの現状
1. 複雑なソースコードの記述
– たった1つのボタンを作成するだけで複数行の
コード記述が必要
– 再利用性の低下
– コアコードとデザインに関わるコードが混在
2. 複数の開発・実行環境の存在
– 実行環境がいくつも存在する
– 実行環境ごとに開発手法を変更
2009/6/11
4
コードジェネレータの導入
テンプレートA
ソースコードA
定義ファイル
ソースコードB
テンプレートB
2009/6/11
5
XMLの導入
ボタンのプロパティのXML化
GUI階層のXML化
<Button id=“button”
text=“This is a Button.”
width=“200”
height=“40”
layout=“vertical”
action=“pushedEvent”
/>
<Window>
<MenuBar/>
<PanelA>
<Button1>
<Button2>
</PanelA>
</Window>
2009/6/11
6
コードジェネレータの仕組み
2009/6/11
7
XMLの定義
<Window id=“W_SAMPLE” title=“サンプルアプリケーション” width=“300” height=“120”>
<Button id=“B_SAMPLE” text=“ボタン” width=“280” height=“30” event=“PUSH”/>
<Label id=“L_SAMPLE” text=“” width=“280” height=“30”>
</Window>
<event id=“B_SAMPLE”>
<![CDATA[
L_SAMPLE.setText(“ボタンが押されました”);
]]>
</event>
2009/6/11
8
統合開発環境
• テキストエディタ
– GUI定義ファイル
– JavaSwing/JavaSWTイベント定義ファイル
– JavaSwing/JavaSWTソースコード
•
•
•
•
定義ファイルの記述
ソースコードの生成
コンパイル
アプリケーションの実行
2009/6/11
9
既存言語との比較
• XUL(XML User Interface Language)
– Mozilla.org
– 外見はCSS、動作はJavaScript
• XAML(eXtensible Application Markup
Language)
– Microsoft
– Microsoft .NET 3.0をベース
– 動画像、3DCG
2009/6/11
10
既存言語との比較
• 定義ファイルはXML1種のみ
• XSLTによる解析
– 通常、字句解析、構文解析、意味解析が必要
• 出力先のターゲットを複数想定
2009/6/11
11
検証と考察
• 変換対象の拡張
– テンプレートを用意すればどんな言語でも作り出
すことができる
• テンプレートの仕様
– APIの完全再現には膨大な労力が必要
• GUI統合の限界
• 完成度
• システムへの組み込み
2009/6/11
12
参考文献
• Swing/SWT共通コードジェネレータの開発
– 大城 繁鷹 塚本 享治
– 情報処理学会研究報告 IPSJ SIG Notes 2006(33)
pp.31-37 20060322
2009/6/11
13