Open Ajax Initiative(Ajax : Asynchronous JavaScript and XML)を支えるパートナー各社は、開発者が協力し合うためのオープンなプラットフォームを構築することによって、コミュニティーの強化を図っています。Open Ajax Initiativeを発足させたメンバー会社、つまりBEA Systems、Borland Software、the Dojo Foundation、the Eclipse Foundation、Google、IBM、Laszlo Systems、Mozilla、Novell、Openwave Systems、Oracle、Red Hat、Yahoo!、Zend Technologies、Zimbraの各社は、成長しつつあるAjax開発者のコミュニティーにとって、新しいツールを導入することが非常に重要であることを認識しています。これらの会社の努力により、新たな、あるいは既存の環境の中に応答性の高いUI(user interface)を構築しようとする開発者は、様々な種類のツールを利用できるようになりました。Eclipseの持つ、統一されたインターフェースと高度なデバッグ機能によって、エンタープライズ・クラスのコーディング環境が、このコミュニティーにもたらされたのです。そしてEclipseのATFによって、DojoとZimbraが提供するツールキットを手軽に利用できるようになります。
これらの各社は、「Webには、さらなる命がある」というメッセージを伝えるためには、Open Ajaxを強力に支持することが重要だと信じています。Open Ajax Initiativeは、Web全般の健全性に向けて前向きなことをするための運動なのです。
注意: Open Ajax Initiativeとは何かについては、参考文献に挙げた発表資料を見てください。
Eclipse Foundationはオープンソース開発を導く役割を果たしており、また強力なアプリケーション・フレームワークでもあります。そしてEclipseはJava™ベースのオープンソース開発プラットフォームであり、非常に拡張性に富み、また任意の主要プラットフォームにデプロイすることができます。
Eclipse Foundationは、Open Ajax Initiativeの一部として、ATFを構築しています。ATFは、ランタイム環境(DojoやZimbraなど)に対する拡張可能なフレームワークです。またATFは、Open Ajax Initiativeの一部であるツールを統合する、中央コンポーネントとしても動作します。ATFの初期バージョンは、IBMのalphaWorksから入手することができます(参考文献を見てください)。
Eclipse Web Tools Projectに基づくATFは、IDE(independent development environment)を構築するためのツールを備えており、その機能には、実行時での構文チェックや、埋め込みのJavaScriptデバッガーやDOM(Document Object Model)ブラウザー、Mozilla Webブラウザーなどが含まれています。ATFによって、これまであまり機能の豊富でなかったオープンソース開発ツールに対して、多くの開発者が安心して作業できるエンタープライズ・スタイルの開発環境を整えることができます。このチュートリアルでは、利用可能なAjaxツールとして最も高機能で成熟した、DojoとZimbraに焦点を当てます。図1は、Open Ajax Initiativeを構成するコンポーネントと、そうしたコンポーネントとATFとの関係を示しています。
図1. Open Ajax Initiativeのコンポーネント
Open Ajax Initiativeで使用されるツールを採用する準備として、ATFがサポートするツールキットに慣れておく必要があります。そうしたツールキットの一例がDojoとZimbraです。
Dojoは、JavaScriptコミュニティーとDHTML(Dynamic Hypertext Markup Language)コミュニティーによる努力を、標準のJavaScriptライブラリーを構築することで方向統一しようというコミュニティー・プロジェクトです。このコミュニティーでは、開発者が協力して作業しない限り充分なことができないことを認識し、それまでにあった3つの別々なツールキットを統一してDojo Foundationを設立しました(Dojo Foundationはコードを所有し、維持管理しています)。Dojoには、幾つかのオプション・パッケージがあります。例えばAjax版とI/O版の他、ツールキット全体を含んだ「Kitchen Sink(ごた混ぜ)」版もあります。
Dojoを使い始めるには、単純に下記の5つのパッケージの1つをダウンロードするだけです。
- Ajax: Ajax版は、非同期I/O(XmlHttp)を行うアプリケーションを作成する場合、複雑な視覚効果を統合する場合、アスペクト指向のイベント・システムを使用する場合に使用します。
- I/O(XmlHttp): I/O(XmlHttp)版はdojo.io.bindによって構築されているため、XmlHttpレイヤーを使って非同期I/Oを行うことができます。
- Event + I/O: このパッケージには、Dojoのアスペクト指向イベント・システムとXmlHttpレイヤーが含まれています。
- Widgets: このパッケージには、ウィジェット実装と疎結合された、HTML機能とCSS(Cascading Style Sheet)テンプレート機能が含まれており、スタイルと内容、ロジックを明確に分離することができます。
- 「Kitchen Sink(ごた混ぜ)」: このビルドには、Dojoライブラリーがすべて含まれています。
適当なDojoパッケージを選択してダウンロードし、解凍します。下記のファイルを、ルートWebディレクトリーに移動します(サンプルの意味で、helloworld.htmlファイルを追加します)。
- dojo.js
- iframe_history.html
- src (directory)
- helloworld.html
Dojoファイルへのパスを記述した1ラインを .htmlファイルに追加します。
<script type="text/javascript" src="path/to/dojo/dojo.js"></script> |
これで、DojoライブラリーとウィジェットをJavaScriptの中に自由にロードすることができます(詳細については参考文献を見てください)。
では、ある1つのボタンを押す毎にデバッグ・プロセスによって「Hello World!」を出力する単純な例を試してみましょう。そのために、helloworld.htmlを編集します。リスト1に示す最初のコード部分がdojo.jsに対するパスを設定し、デバッグ・モードをオンにします。これで出力をテストすることができます。
リスト1. 「Hello World!」を出力する単純な例
<html>
<head>
<script type="text/javascript">
djConfig = { isDebug: true };
<script>
<script type="text/javascript" src="./dojo.js"></script>
|
Button2ウィジェットと「イベント」を使って、helloPressedファンクションをコールアウトします。
リスト2. Button2ウィジェットと「イベント」を使ってhelloPressedファンクションをコールアウトする
<!-- DOJO EXECUTION -->
<script type="text/javascript">
dojo.require("dojo.widget.Button2");
dojo.require("dojo.event.*");
|
helloPressedファンクションは単純にdojo.debugをコールし、「Hello World!」というメッセージを出力します。
function helloPressed()
{
dojo.debug('Hello World!');
}
|
下記はinitファンクションです。initファンクションは、helloButtonとDojoウィジェットを関連付けます。2ライン目の記述は、Press Meをクリックした時にhelloPressedファンクションを呼ぶように指示しています。
function init()
{
var helloButton = dojo.widget.byId('helloButton');
dojo.event.connect(helloButton, 'onClick', 'helloPressed');
}
|
下記のラインは、最初のページをロードする際にinitファンクションを実行します。
dojo.addOnLoad(init); |
最後に、このHTMLのボディーは実際のボタンを含んでいます。このボタンには、上記のJavaScriptと関連付けるためのtypeとIdが与えられています。
リスト3. 上記のJavaScriptとIDを関連付ける
</script>
</head>
<body>
<button dojoType="Button2" widgetId="helloButton">Press Me</button>
</body>
</html>
|
図2は、Press Meをクリックすると「Hello World!」Dojoアプリケーションが出力する様子を示しています。
図2.「Hello World!」Dojoアプリケーションの出力
HelloWorldの例の詳細は、Dojoのwikiに説明されています(参考文献を見てください)。
Dojoでは、強力で、しかも増大しつつあるウィジェット・セットが提供されています。そのため、既存のWebページに小さなAjaxコード断片を容易に統合することができ、またデスクトップ環境に見られるようなUI効果を容易に追加することもできます。また上級ユーザーに対しては、他のツールでは見られないような機能が提供されています。例えば、デプロイ用にプロジェクトを素早く最適化できるように、パッケージングやビルドのシステムが含まれています。Dojoは、どのようなレベルの開発者にとっても、素晴らしいソリューションと言うことができます。
DojoをEclipseに統合するATFが導入されることによって、グラフィカルなコーディング環境が提供され、また他のEclipseプラグインも利用できるようになるため、こうした機能はエンタープライズ・クラスにまで高められます。EclipseでのDojoの初期デモに関しては、参考文献を見てください。
Zimbraは、Zimbra AjaxTK(Ajax Toolkit)にオープン・アクセスできるようにすることでOpen Ajax Initiativeに貢献しています。ZimbraはAjaxTKを使うことによって、私達がWebページとして考えるものの限界を押し広げています。つまりエンタープライズ・クラスのeメールやカレンダー、連絡先管理などを含む、完全なZimbra Collaboration Suiteを開発しているのです。AjaxTKによって、Webベースのアプリケーションと標準のデスクトップ・ベース・アプリケーションとの応答性のギャップは、ほとんどゼロになります。図3は、ZimbraのCollaboration Suiteに含まれているメール・アプリケーションを示しています。これはAjaxTKを使って開発されたものです。
図3. Zimbraのメール・アプリケーション
図4は、Zimbraのカレンダー・アプリケーションを示しています。これもAjaxTKを使って開発されたものです。
図4. Zimbraのカレンダー・アプリケーション
この素晴らしいCollaboration Suiteを開発するためにZimbraが内部的に使用したものと同じAjaxツールが、公開されて利用できるようになっています。Ajax開発のために、オープンで非独自環境の持つ強みを生かすという信念から、この強力なツールが公開されているのです。
AjaxTKは、下記のソース・パッケージの上に構築されています。
- config: コンフィギュレーション情報と、メッセージをローカライズするためのファイル
- core: ベースとなる例外クラスと環境情報
- debug: ランタイム・アプリケーション・デバッグのためのデバッグ・クラス
-
dwt: DHTML Widget Toolkitであり、下記を含んでいます。
- config: CSSルールや画像、ローカライズされたテキスト
- core: 例外処理と、下位レベルのDOMユーティリティー・ファンクション
- dnd: ドラッグ・アンド・ドロップのサポート
- events: ツールキットが使用し、また汎用のAjaxTKイベント・サポートに対して構築された、様々なイベント
- graphics: 点や四角、CSSユーティリティーなど
- widgets: DWTウィジェット・セットとサポート・クラス
- xforms: 複雑なフォームを作成するためのXForms実装を提供します
- events: ベース・イベントとイベント・リスナー・クラス、そしてイベントの登録とディスパッチに責任を持つイベント・マネージャー・クラス
- net: ネットワーク・コミュニケーション
- soap: SOAP文書処理
- util: ストリング操作やクッキー管理、データ操作、据え置き(deferred)アクション・サポート、コールバック・サポートなどのタスクのためのユーティリティー・クラス
- xml: XML文書処理
Zimbra Ajax Toolkitは、実世界にデプロイされている大規模で堅牢なアプリケーションに使われてきています。それを知れば、エンタープライズ開発者も安心できるでしょう。ZimbraのCollaboration Suiteには、13万ライン以上ものJavaScriptが含まれています。AjaxTKは、デスクトップ・アプリケーションの完全な置き換えを構築しようとする開発者を対象としています。もし皆さんが、Ajaxを使って既存のWebページを機能強化したいのであれば、恐らくDojoの方が適切でしょう。皆さんが何をしようとしているのかによって、その選択肢も変わってきます。
EclipseにAjaxTKをプラグインすると、表現力豊かなUIを開発するために一般的に必要となるコンポーネント(ツリーやボタン、リストなど)の実装は、ずっと容易に、迅速にできるようになります。またEclipseと統合することによって、強力なデバッグ・ツールやドラッグ・アンド・ドロップの合成などを含め、テーブル機能を強化することができます。Zimbraは、Open Ajax Initiativeのメンバー各社と協力しつつ、そしてオープンで非独自の技術をサポートしつつ、今後もAjaxを推進して行きます。
Ajaxを採用することによって、Webの対話性や応答性は新しいレベルに到達します。またエンタープライズ・クラスの開発ツールの重要性は、今後もますます高まります。こうした進歩にとって、ATFとDojo、そしてZimbraは、鍵となるコンポーネントです。Webの利用者は、より良質な、より高速な、よりスムーズなWebアプリケーションを要求し続けます。そのため、UIの進歩やクロス・プラットフォームの互換性向上を促進するための、協力作業を行いやすい環境を維持するための負荷は、ツールキット開発者とブラウザー・メーカーにかかってきます。Open Ajax Initiativeそれ自体が、正にそうした目的のために構築されたフレームワークなのです。
Open Ajax Initiativeの進歩に合わせ、またATFの実現に対応するため、このシリーズも継続する予定です。そして、EclipseでAjaxアプリケーションを構築するための技術的な詳細とチュートリアルを紹介して行きます。
この記事のために、Open Ajax Initiativeに関してコメントくださったAlex Russell(Dojo Foundationの設立者であり社長)と、Ross Dargahi(Zimbraの共同設立者であり、エンジニアリングの副社長)、そしてJohn Robb(Zimbraのマーケティングと製品管理の副社長)に深く感謝致します。
学ぶために
- 発表資料、「Tech Titans Contribute Browser-Boosting Ajax Technologies to Open Source Community(US)」は、Open Ajax Initiativeの詳細を説明しています。
-
Eclipse.orgには、Eclipseに関する様々な情報が用意されています。
- ATFの詳細を知るために、The AJAX Toolkit Framework (ATF) Projectを見てください。また、オリジナルのATF提案も見てください。
-
Dojoには、ドキュメンテーションの他、様々な情報が用意されています。
- Dojo JotSpotには、HelloWorld exampleの詳細が説明されています。
-
nightly testsには、Dojoのユニット・テスト例が無数に用意されています。
- IBM alphaWorksのDojo Project Cycle Demoには、EclipseでのDojoの初期デモがあります。
- Zimbraがホストする、彼らのフラグシップ製品、Zimbra Collaboration Suiteのデモに登録してください。
- Zimbra AjaxTKに関するホワイト・ペーパーの一式、「The Zimbra Ajax Toolkit (AjaxTK) -- A Toolkit for Developing Rich, Browser-based Applications 」
(PDF:320KB)を読んでください。
- developerWorksのリュートリアル、「Build apps using Asynchronous JavaScript with XML (AJAX)」を読んでください。リアルタイムの妥当性検証を備え、またページ更新の無いAJAXベースのWebアプリケーションの構築方法を、本の注文アプリケーションの構築例を通して学ぶことができます。
- developerWorksのEclipse project resourcesを利用して、Eclipseについて学んでください。
-
developerWorks technical events and webcastsを利用して、最新技術を学んでください。
- developerWorksのOpen sourceゾーンをご覧ください。オープンソース技術を使った開発や、IBM製品でオープンソース技術を使用するためのハウ・ツー情報やツール、プロジェクトの更新情報など、豊富な情報が用意されています。
製品や技術を入手するために
- IBMのalphaWorksからAjax Toolkit Frameworkのアルファ版を入手してください。
- AjaxTKである、Zimbra Ajax Toolkitをダウンロードしてください。
- 皆さんの次期オープンソース開発プロジェクトを、IBM trial softwareを使って構築してください。ダウンロード、あるいはDVDで入手することができます。
議論するために
- 活発なZimbraフォーラムでは、AjaxTKを使った実例の開発をサポートしています。
-
developerWorks blogsからdeveloperWorksコミュニティーに加わってください。

Tim McIntireは、コンピューター・サイエンスの様々な分野のコンサルタントとして働いています。彼の研究はこれまで、Concurrency and ComputationやIEEE Transactions on Geoscience and Remote Sensingの中で発表されてきました。また彼は、Rocksクラスター統合とHPCコンサルティングのマーケット・リーダーである、Cluster Corp.の共同設立者でもあります。以前は、Scripps Institution of OceanographyのDigital Image Analysis Labにてコンピューター・サイエンスに関する作業に従事していました。またNASAの後援によるPIPE(Parallel Image Processing Environment)での彼の成果は、コンピューター・サイエンスの雑誌、EnVisionの、Rocksクラスター・ソフトウェアに関する記事の中で取り上げられています。