AJAXを活用したWebインタフェースの作成ツール ZK:Programing Bible(2/2 ページ)
Webブラウザ上で動作するユーザーインタフェースも、デスクトップアプリケーションでイベント駆動インタフェースを作るときと同じように開発したい――もしそれがJavaでの開発であるならば、AJAXツールキット「ZK」は非常に便利なツールとなるだろう。
ZKの使用法
ZKの使用法は、ZK Tutorialに概略が、Developer's Guideに詳細が説明されている。WebインタフェースはMozilla XMLユーザーインタフェースファイル形式(XUL)に類似した言語、ZK User Interface Markup Language(ZUML、またはZUL)で記述する。Tomcatを使ったアプリケーションの開発に不慣れな場合は、まず、テスト用のWEB-INF/web.xmlファイルをZULファイルのディレクトリの下に置いてみよう。また、Resortサンプルのweb.xmlファイルをコピーして実行するとZULファイルをロードできる。
ZULファイルには、簡単な処理を含めることができる。JavaコードとZULインタフェースの記述は分離した方がよいのはもちろんだが、コードの埋め込みは実験の際には便利だ。適正なXMLとするには埋め込みコードを引用符で囲む必要がある。従って、Javaコード中の二重引用符は"と記述する。Enterprise Editionでは、JavaScript、Ruby、Groovyで記述することもできる。zscript要素を使うと、ZULファイル中にさらに大きなコードブロックを含めることができる。zscript要素の中では二重引用符をエスケープする必要がないので便利だ。以下に、簡単なZULファイルによるWebインタフェースを示す。ボタンがクリックされると、埋め込んだJavaが動作しメッセージボックスが開く。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ZULファイルにコードを埋め込む場合、次の2つの機能を利用するとコードを簡潔に表現できる。その1つはEL式だ。小さなスニペットを埋め込むことで、Javaオブジェクトのプロパティにアクセスしたり簡単な比較を行ったりできる。もう1つはforEach文で、リストボックスなどの反復的なZUL要素にデータを埋め込む際に使う。また、ユーザーインタフェースが生成したイベントに応答したいときは、ZULファイルの中でオブジェクトのサブクラスを定義し、明示的にそのサブクラスを使用すればよい。これを利用すると、ZULインタフェース定義ファイルを変えなくても、Javaコードを変更しイベントに対する応答を変えることができる。その際、forward属性を使えば、押下イベントを親オブジェクトに回し、ボタンの押下にサブクラスで反応しないようにすることができる。
ZKはいわゆる「ライブデータ」モデルをサポートしており、org.zkoss.zul.ListModelインタフェースを実装すると、そのインタフェースを介して示されたデータはWebページ上のほかのコントロールからも見えるようになる。次に示す例では、Bookmarkクラスをタプルとして使い、URL、ページタイトル、最後に訪問された時刻を格納している。ここではaccessorメソッドは省いた。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Bookmarkオブジェクトをグリッドに表示するには、表示方法を規定するRendererサブクラスを用意する必要がある。所要のデータを個別のセルに入れる例を以下に示す。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ListModelListクラスのorg.zkoss.zul.ListModelを可変実装することもできる。下に例示した Controllerオブジェクトはbookmarkのサンプルを数件作成している。データはJDBCなどのソースから簡単に取り込むことができる。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
最後に、右のスクリーンショットに示したWebインタフェースを作るZULファイルを例示する。window要素のuse属性はこのウィジェットで使用するカスタムJavaクラスを指定する。また、グリッドのモデルにはwindowクラスのBookmarkメンバーを指定している。具体的には、BookmarkControllerクラスのm_bookmarksだ。グリッドでのカスタムJavaオブジェクトの表示方法を規定するため、 Rendererを指定する必要がある。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
まとめ
ZKはSourceForge.net Community Choice Awardsで最終選考に残っているが、現在主流になっている配布方式には対応していない。インストールが特別難しいというわけではないが、Linuxディストリビューションのパッケージマネージャで自動的にアップデートできる方が好ましいことは言うまでもない。
WebブラウザとWebサーバ間の通信には非同期コールが使われているが、サーバとの通信が必要なカスタムDataモデルを表示しているデータグリッドをソートするなどの場合に、ネットワークで時間を要していると感じられることがある。サーバ/クライアント間のネットワーク遅延の大きさによっては問題になるかもしれない。
Webインタフェースを作りたい場合、Javaを使っているならZKを利用してみよう。ブラウザによって扱いが異なるためJavaScriptコードが期待通りに動くかどうかを心配したり、Webブラウザ用のウィジェットを詳細に指定して作成したりしなくても済む。ZK以前はページをロードするかそれともカスタムJavaScriptコードからAJAXを呼び出して応答するかを常に考えていなければならなかったが、ZKはイベントベースのプログラミングモデルを採用しており、この点も新鮮に感じられるだろう。
Ben Martin 10年以上にわたってファイルシステムを研究。博士課程を修了し、現在、libferris、ファイルシステム、検索ソリューションを中心にコンサルティングをしている。
関連記事
- ratproxy――Webアプリケーションのセキュリティレベルを検証するGoogle提供ツール
先日Googleからリリースされたプロキシ型の脆弱性発見ツール「ratproxy」。高度に複雑化した最近のWebアプリケーションのセキュリティ試験を行う際に役立つ同ツールを使ってみた。 - AppChecker――Linux Foundationからリリースされた新世代の開発支援ツール
Linux関連の開発作業で最も負担なのは、さまざまなディストリビューションの対応製品を際限なく準備しなくてはならない点である。この部分にメスを入れた開発支援ツール「AppChecker」がLinux Foundationからリリースされた。 - さまざまな作業に対応するオープンソースのテストツール群
テストは開発プロセスにおいて重要な役割を果たす。ここでは、プロプライエタリな製品に比肩するだけの実力を持ったオープンソースのテストツールを紹介する。 - GWT――Web構築に新機軸をもたらす開発ツール
Googleが提供しているようなユーザーフレンドリな諸機能を備えたWebサイトを自分で作成してみたいが、必要なプログラミング作業を考えると気が滅入るという心理状態の方がおられたら、Google Web Toolkitの利用を検討してみてはいかがだろう。 - プログラマーの生産性を高める新たな言語「D」
CやC++が持つ性能の高さとRubyやPythonのような最近のプログラミング言語が持つプログラマーの生産性の高さを併せ持った言語「Digital Mars D」が登場した。 - LinuxでのJ2MEアプリケーション構築法
Java対応型の携帯端末をより効果的に活用したければ、J2MEアプリケーションをLinux上で作成してモバイルプラットフォーム上で実行する方法がある。ここでは、HelloWorldアプリケーションを作成して携帯電話で動かす具体的な方法を説明する。 - 開発者のバグ潰しに役立つMantis
Mantisは、ソフトウェアにはつきもののバグが修正されるまで対処作業の進捗を確認するという完全なワークフローソリューションとして機能する。 - petardfsでアプリケーションをテストする
petardファイルシステムは、エラーだけを生成するように設計されたファイルシステムである。システムテストと単体テストを行うのに役立つ。
Copyright © 2010 OSDN Corporation, All Rights Reserved.