はじめに
この連載では、「オープンソースApache Tuscanyで楽しむSOA」として、オープンソースのSCA準拠製品である「Apache Tuscany」を取り上げ、SOA(サービス指向アーキテクチャ)の開発について説明していきたいと思います。第3回目の今回はサンプルプログラムを用いて、JSONRPCがTuscanyの中でどのように使われているかを紹介していきます。
これまでの連載
Web 2.0をも取り込んだTuscany
JSONやAtomといったものをご存じではない方も、Web 2.0という言葉はどこかで聞いたことがあるのではないでしょうか? ウィキペディア(Wikipedia)で調べても、定義は明らかではありません。しかし、TuscanyにJSONやAtomのバインディングが存在することに対し「Tuscany meets Web 2.0」などと言われていた時期があるのです。例えば、IBMのサイトに掲載されている「Web 2.0 meets SOA with Apache Tuscany SCA」(PDF)なる文書などが端的にそのことを現しています。この文書の中では具体的な例として、Atom、RSS、JSONRPCを例に挙げています。
当連載でも、まずは目で確かめられるものから紹介した方がよりTuscanyに親しめるのではないかと考え、サンプルプログラムを用意し、今回はJSONRPC、次回はAtomがTuscanyの中でどのように使われているかを説明したいと考えています。非常に安易ではありますが、Tuscany(トスカーナ)という言葉を使いたいという想いから、「トスカーナワイン店」という架空のネットショップを構築してゆきながら、Tuscanyに触れていただこうと予定しています。
「トスカーナワイン店」もフルスクラッチでの構築は大変なので、Tuscanyが提供しているサンプル「store」を流用しつつ構築していきます。「store」では非同期な動作が分かりづらいところがあります。そのあたりが分かるような作りに変えてみましょう。
トスカーナワイン店の概要から
まずはイメージを抱いてもらうために、実際の画面イメージ(図1)をご覧ください。
仕様
- ワインリストのチェックボックスを[ON]にすると、自動的に買い物かごに追加される
- ワインリストのチェックボックスを[OFF]にすると、自動的に買い物かごから削除される
- 買い物かごの[本数]部分を変更すると、明細合計・送料・合計金額が自動的に表示される
- [買い物かごを空にする]ボタンをクリックすると、買い物かごは空になる
実際のシステムを構築する際は、左側にワインリスト、右側に買い物かごを配置すると使いやすくなると思います。
JSONやAtomをどこで使用しているか
ワインリストは非常にシンプルなデータ構造をしています。このような場合、クライアントとサーバ間で受け渡すのはXMLでなくJSONが一般的に向いています。今回もJSONを使用します。
買い物かごは、ワインを追加したり、削除したり、本数を変更したりすること、また特に複雑な処理ではないことを考えるとAtomを利用したRESTを利用した方が無難だと考えられます。皆さんが利用されているAtomとは少し違った使い方をしています。この方法については次回紹介します。
送料と合計金額は、買い物かごのデータを使用して計算します。この計算は買い物かごのデータを使用した方が簡単に思われます。次々回では、再度JSONを使用して、これを実装します。ただし、プロパティをコンポーネントの外部から取り込みタイムセールスなどの値を入れ、計算した結果をWebサービスとして公開するように変更します。しかも、そのコンポーネントを別のマシンで実行させるよう変更することがいかに簡単であるかを説明します。