コードジンのヘッダーが入ります
本セッションのスピーカー、日本アイ・ビー・エムの樽澤広亨氏は昨年の11月まで、米国IBMのソフトウェア研究所で先進的なWebアプリケーションの研究をしていた。その成果がProject Zero(以下Zero)だ。まだ開発途上のインキュベータソフトウェアであり、今後、機能等が変更される可能性がある。セッションはマイルストーン3というバージョンに基づいて行われた。
ZeroはアジャイルなWebアプリケーション開発を実現するプラットフォームで、Java SE 5ベースのアプリケーション稼働環境とEclipse 3.2以上でサポート可能なプラグインという形で提供されている開発環境だ。キャッチフレーズはRadical Simplificationで、「無理矢理日本語にすれば超単純」(樽澤氏)。「作る」、「組み合わせる」、「実行する」のすべてを超単純化しようというコンセプトだ。
まず「作る」。Zero自身は100%pure Javaだが、スクリプト言語での開発が推奨されている。サポートしているのはJVMで動くGroovyとPHP。またREST、JSON、ATOM、RSS、dojoを取り込むことができる。アーキテクチャ構築のコンセプトは、コンベンション・オーバー・コンフィギュレーションConvention over Configuration(規約によるシンプル化)だ。
「組み合わせ」における特徴は既存資産の有効活用だ。Zeroは言わば「サーバー・サイド・マッシュアップ・メーカー」であり、その実現のためのアセンブル機能には、大きく2種類の機能がある。まず「フロー」は、Webサイトにアクセスする順番や条件を規定する。そして「インテグレーション・ファブリック」はさまざまなプロトコルで外部のWebサービスにアクセスするためのAPIであり、メディエーションの機能を追加可能だ。 そして「実行」。この観点で最も力を入れたのは導入の容易さだ。導入ソフトウェアのコアは4MB~5MBとコンパクトで、拡張モジュールの導入と設定は、Webを介して自動的に行われる。
Zeroは「今風」のイベントベース・プログラミング・モデルを採用している。クライアントのリクエストに対し、Zeroのイベントエンジンが対応するイベントを発生させると、Event DispatcherがリストイベントをEvent Handlerに通知。そしてHandlerの処理が実行される。このときEvent Handlerはステートレスになっており、状態を保存することはできない。保存されるのはグローバル・コンテキストと呼ばれる、Zeroにおける唯一絶対のデータエリアだ。
Zeroは、任意の戻り値を任意のフォーマットで返すことができる。View Engineコンポーネントの使用によりJythonやXMLのレンダリングツールが、ほぼZero任せで保持することが可能だ。Zeroにはデータベースにアクセスする2つの方法がある。データ・アクセスAPIと「Zeroリソース・モデル」(ZRM)によるものだ。中でもZRMは、簡単なRESTfulなURIでデータのフラット処理を可能にしている点が注目だ。 Project ZeroはIBMの製品としてリリースされる予定だが、オープン・プロセス・プロジェクトとして、ソースコードが公開されている。その意図について樽澤氏は「早期からIBMのプランを提示することでフィードバックを受け、ニーズに合致した製品を迅速に提供するため」と語る。IBMではこの開発手法をCDCD(Community Driven Commercial Development)と呼んでいる。サイトで扱っているものは、製品化後もオープンに提供される予定だ。