ITA Issue Article
ITA Issue 連載 : WebとSOAを融合したWeb Oriented Architectureの世界
Project Zeroで試すアジャイルなWebアプリケーション開発
第1回 Project Zero誕生の背景
「Project Zero」は、現在IBMが開発を進めている、徹底的にシンプルさを追求し、アジャイルな開発スタイルの実現を目指したWebアプリケーション・プラットフォームである。今日普及しつつあるサービス・マッシュアップやスクリプト言語による開発手法を取り入れ、既存のJavaアプリケーション資産も生かしながらアプリケーションを迅速に組み立て/提供できる環境を指向している。本連載では、サービス指向時代の新たなアプリケーション開発環境/開発手法の一例として、このProject Zeroの概要や同プラットフォームにおけるアプリケーション開発スタイルなどを紹介していく。初回となる今回は、Project Zeroが誕生した背景の説明として、今日のWebアプリケーション開発を巡る状況を概観してみたい。
2008年7月28日更新
WebとSOAを融合したシンプルかつアジャイルなWebアプリケーション・プラットフォームを目指して
今日、IBMが進めている実験的なプロジェクトの1つに「Project Zero」がある。これは、シンプルさを徹底的に追求し、アジャイルな開発スタイルの実現を目指したWebアプリケーション・プラットフォームだ。Webアプリケーション・サーバとしてだけでなく、WebとSOAを融合した「WOA(Web Oriented Architecture)」の中核を担うプラットフォームとしても重要なポジションを担う。
現在IBMでは、バイナリ・コードに加えてソース・コードまで公開するというオープンな開発プロセスをとり、世界中の開発者のフィードバックを受けながらProject Zeroの開発を進めている。本連載は、筆者も開発に参加しているこのProject Zeroがどのようなものなのか、どういった開発スタイル/システム・アーキクチャを実現するものなのかの解説を通じて、読者にWebアプリケーション開発の新しいスタイルを提示してみたい。
なお、Project Zeroの開発作業は現在も進行中だが、今年5月、その商用製品版として「IBM WebSphere sMash V1.0」を発表した。本連載では、このWebSphere sMashの無償版であるIBM WebSphere sMash DE(Developer Edition)を用いて、具体的な開発作業の説明を行う。
連載初回となる今回は、まずProject Zeroが誕生した背景を説明する。Webアプリケーション開発の分野は今日、Web 2.0技術などの台頭によって新たなる世界へと突入しようとしている。その流れを押さえることで、Project Zeroのねらいや目指す方向性がよりスムーズにご理解いただけるはずだ。
Project Zero誕生の背景――RESTful Webサービスの台頭
Webを取り込んだアプリケーション・プラットフォームとして現在広く普及しているものと言えばJava EE(Java Platform, Enterprise Edition)であろう。Java EEは、その豊富な機能やAPI、そして約10年間にわたって蓄積されてきた実績により、今日、企業の基幹システム構築に欠かせない存在となっている。
ただし、そんなJava EEにも課題がある。豊富な機能を提供するということは、言いかえれば覚えることが多いため、開発要員の育成に多くのコスト(費用と時間)がかかる。そのうえ、使いこなすのも容易ではなく、仕様のミスリードにより誤った実装もしばしば見受けられる。また、Java EEによる開発を支援するものとして、コーディングからテスト、パッケージング、配備までをカバーする商用やオープンソースのツールが数多く提供されているが、それらのツールを使って行う作業自体はそれなりに手間がかかるものであり、今日浸透しつつあるアジャイル開発とはほど遠いのが実情だ。
その一方で、近年、よりシンプルかつ軽量で、使いやすい技術へと、世の中の興味は移りつつある。Java EEの世界ではDI(Dependency Injection)コンテナの登場があったし、オープン技術の世界で起きたLAMP(Linux、Apache、MySQL、PHP/Python)ブームも記憶に新しい。そして今、Web 2.0の流行の下、軽量なWeb技術への注目が高まっている。なかでも「Ajax(Asynchronous JavaScript + XML)」は非常に重要な技術要素だ。AjaxはWebアプリケーションのアーキテクチャ・パターンの1つであり、Webブラウザ上で動作するJavaScriptが、XMLHttpRequest APIを使ってWebサーバと非同期で通信することを可能にする。WebアプリケーションにAjaxを適用すれば、これまでは単なるWebの端末にすぎなかったWebブラウザを、インテリジェントなエージェントに変えることができるのである。
Ajaxを適用したWebアプリケーションのアーキテクチャ
|
それでは具体的に、AjaxはWebアプリケーションの設計にどのような影響を与えるのだろうか。ここで、図1、2をご覧いただきたい。図1はJava EEにおけるMVC(Model-View-Controller)パターンの適用イメージを、図2はAjaxを取り入れたWebアプリケーションにおけるMVCパターンの適用イメージを図示したものだ。
両者の大きな違いは、Controllerが動作する場所とViewが生成される場所にある。Java EE(図1)では、Controllerがサーバ側で動作してViewを生成するが、Ajaxを適用した場合(図2)はModelのみがサーバ上で動作し、ControllerとViewはクライアント側で動作する。つまり、Ajaxを適用したMVCモデルでは、Webブラウザ上で動作するControllerがエンドユーザーの操作に応じてサーバに適切なリクエストを送信し、その応答に応じてViewを生成して表示する。Webブラウザが能動的なクライアント・エージェントとなるというわけだ。
|
Ajaxを適用したアーキテクチャの特徴として、クライアントとサーバをそれぞれ異なる技術で実装できる点が挙げられる。HTML、CSS、JavaScriptといったオープンな技術で実装されたクライアントは、Java EEはもちろんのこと、.NET、PHP、Ruby on RailsなどさまざまなWebアプリケーション・サーバと会話することが可能だ。なぜなら、クライアント/サーバ間で用いられるプロトコルは、シンプルでオープンなHTTPだからである。
さらに踏み込んで考えてみよう。さまざまなWebアプリケーション・サーバ上で、一定の粒度から成るサービスを稼働させ、Webブラウザ上のAjaxクライアントがそれらを呼び出すことができるのなら、それはSOAの世界で目指しているサービス統合を、SOAPやWSDLといったWebサービス技術に頼ることなく、Web技術だけで実現することになる。









