1. HOME »
  2. ITA Issue

ITA Issue Article

ソーシャルブックマークに登録 : Yahoo!ブックマークに登録 はてなブックマークに登録 del.icio.usに登録 newsing it!に登録 Buzzurlにブックマーク livedoorクリップに登録 Choix!にブックマーク イザ!ブックマーク

print 印刷用ページの表示

ITA Issue 連載 : WebとSOAを融合したWeb Oriented Architectureの世界

Project Zeroで試すアジャイルなWebアプリケーション開発

第5回 ビジュアルなワークフロー定義によるサーバ・サイド・マッシュアップ――Project Zeroのコネクティビティとアセンブル・フロー機能

Project Zeroが実現するアジャイルなWebアプリケーション開発の世界を紹介してきた本連載も、早いもので最終回を迎えた。今回は、Project Zeroに備わる外部接続性(コネクティビティ)とアセンブル・フロー機能を紹介しよう。Project Zeroが提供するコネクションAPIを使えば、単一のインタフェースでさまざまなプロトコルを用いて外部サーバにアクセスすることができる。また、アセンブル・フロー機能を使えば、外部サーバを含むさまざまなサービスを組み合わせてアプリケーションを構築することが可能だ。この2つの機能を組み合わせることで、サーバ・サイドのマッシュアップを実現できるのである。

2008年11月6日更新

text ●  樽澤 広亨 日本IBM

サーバ・サイドのマッシュアップ開発を試す

 今回は、Project Zeroに備わる外部システムとの接続性(コネクティビティ)と、外部サービスを組み合わせてアプリケーションを構築するためのアセンブル・フロー機能について説明する。これらが、Project Zeroをマッシュアップ環境たらしめている主要な機能であり、今回の内容が、サーバ・サイド・マッシュアップによるアジャイルなWebアプリケーション開発の世界を紹介する本連載のハイライトとなる。
 
 なお、説明で使用する環境には、これまでと同様、Project Zeroの無償の安定版である「WebSphere sMash Developer Edition(DE)」を用いる。また、これまで開発環境としてコマンドライン・ツールとEclipseを使用してきたが、今回はProject Zeroの売りの1つである、Webブラウザ上で動作する統合開発環境(IDE)の「AppBuilder」を使ってみたい。

Project Zeroのコネクティビティ

 Webアプリケーション・プラットフォームであるProject Zeroは、基本的にHTTP(S)を用いてクライアントと通信を行うが、Project Zero上のアプリケーションがクライアントとして外部のサービスにアクセスする際には、さまざまなプロトコルを使用することができる(図1)。

図1:Project Zero/WebSphere sMashのコネクティビティ

 例えば、WebブラウザなどのWebクライアントからはRESTスタイルでHTTPリクエストを送信する一方で、Project ZeroのWebアプリケーションは、Web API呼び出しやSOAP、JMS(Java Message Service)などの通信プロトコルを使い、多様なサービスを活用してエンドユーザーからのリクエストを処理することができる。このように、Web技術を用いてネットワーク上に分散配置されたサービスを再利用できる点がWOA(Web Oriented Architecture)の大きなメリットであり、連載第2回で触れたように、WOAの中心でWeb層とバックエンド層を仲介するProject Zeroは、Web層におけるESB(Enterprise Service Bus)に位置づけられるのである。

外部サービスとの通信を担う「コネクションAPI」

 また、Project Zeroは、外部サービスとの通信用APIとして「コネクションAPI」を提供する(図2)。

図2:Project ZeroのコネクションAPI

 コネクションAPIは、各通信プロトコルをラッピングする役割を果たし、同API自体は特定の通信プロトコルには依存しない。汎用的なインタフェースのみを提供し、実行時に使用する通信プロトコルは構成ファイルのzero.configに定義する。
 
 Project ZeroはコネクションAPIの拡張点(Extension Point。機能拡張用プログラムの追加が可能な個所)を公開しているので、必要であれば、開発者自身が通信プロトコルのサポートを追加することが可能だ。汎用的な通信にはパッケージjava.net、メッセージングにはJMS、Webサービス呼び出しにはJAX-WSといったように、通信プロトコルごとにAPIの使い方を学ばなければならないJavaの世界と比べると、コネクションAPIだけで通信全般を扱えるProject Zeroのシンプルさがよくわかるだろう。
 
 加えて、コネクションAPIは、「コネクション・ハンドラ」と呼ばれる拡張点を提供している。このコネクション・ハンドラを利用すれば、サーブレット・フィルタのように、リクエスト送信前とレスポンス受信前に任意の処理を組み込むことができる。コネクション・ハンドラの主な用途としては、ESBのメディエーションに相当する非機能要件の組み込みが想定されている。例えば、通信プロトコル変換、データ・フォーマット変換、ログ出力といったものだ。ちなみに、Project Zeroは、コネクションAPIを介したSOAP通信をサポートしているが(REST to SOAP Bridge)、SOAP/REST間の変換には、このコネクション・ハンドラの仕組みを利用している。
 
 コネクションAPIの用途は主に2つある。1つはProject Zeroアプリケーションが外部サーバ上で稼働するサービスにアクセスする際、直接コネクションAPIを使用するというケースだ。エンドユーザーのリクエストを直接処理するスクリプトやJavaクラス、または次に紹介するアセンブル・フローから呼び出されるサービスの中でコネクションAPIを使ってコーディングし、外部のサービスを呼び出すのである。
 
 また、もう1つの用途は、アセンブル・フローのアクティビティ(ワークフローを構成する部品)の中で、間接的にコネクションAPIを使用するというものだ。あらかじめコネクションAPIを用いて外部のサービスにアクセスするよう作られたアクティビティをドラッグ&ドロップしながらワークフローを定義することで、開発者は間接的にコネクションAPIを使いながら外部サービスにアクセスできるのである。

ページの先頭へ戻る