トスカーナワイン店の買い物かごにワインを追加します
川久保 智晴 [著] 2009/11/03 14:00

サンプルコード 18.94 KB

 SOAは混沌とした段階から、JBI準拠製品、SCA準拠製品が開発されるに至り、エンタープライズレベルまで進化してきました。この連載では、オープンソースのSCA準拠製品である「Tuscany」を使ったSOAの開発について説明していきます。第4回目の今回は、サンプルプログラムを用いて、AtomがTuscanyの中でどのように使われているか説明します。

1 2 3 4 →

はじめに

 この連載では、「オープンソースApache Tuscanyで楽しむSOA」として、オープンソースのSCA準拠製品である「Apache Tuscany」を取り上げ、SOA(サービス指向アーキテクチャ)の開発について説明していきたいと思います。第4回目の今回は、前回のJSONRPC編の続編として、サンプルプログラムを用いて、AtomがTuscanyの中でどのように使われているかを紹介していきます。

これまでの連載

Atomを使用して買い物かごを実現する

Atomとは

 一般に買い物かごは商品を入れたり、出したりします。同じ商品を1本から2本に増やしたり、買い物の途中で何を買ったのか確認したいこともあります。このように、商品を追加したり、もとの棚に戻したり、本数などを変更したり、買い物かごに入れたものの確認をしたい場合があります。ネットショッピングも同様にショッピングカードや買い物かごが用意されていて、同じようなことができます。買い物の例を、少し情報処理的に言うと「検索」「登録」「変更」「削除」になります。まさしくこれは、データストアに対する命令と等価と言えるでしょう。これをHTTPのメソッドに置き換えると、getpostputdeleteになります。皆さんご存じのRESTな作りにぴったりはまります。

 Tuscanyでこれを実現するにはAtomを使用します。Atomと言えば、コンテンツシンジケーションの技術です。コンテンツシンジケーションというと難しく聞こえますが、インターネットのサイトで提供されるフィードをクライアント側にダウンロードし、サイトとクライアントで情報を共有するためのものです。使用目的は多岐にわたりますが、最近ではそのサイトでコンテンツが更新された場合、教えてくれたりするサービスが多いようです。

 筆者自身もAtomに詳しいわけではなく、Atomは記事や本などのタイトルや要約などを保持するためのものだと思っていましたが、Tuscanyでは少し変わった使い方をします。

 一般的なAtomシンジケーションフォーマットは図1のような構造になっています。entry要素の中にはtitlelinkidupdatesummaryが並んでいます。

図1:Atomシンジケーションフォーマットの一般的な構造(ウィキペディアより抜粋)
図1:Atomシンジケーションフォーマットの一般的な構造(ウィキペディアより抜粋)

TuscanyのAtomの構造は

 Atomのルート要素はfeed要素で、その子要素にentry要素があります。Tuscanyでは、このentry要素の子要素であるcontent要素中にワインなどの実体に呼応した情報を保存します。今回の例では、BasketItemクラス(単なるValue Objectクラス)のメンバー変数に呼応する要素を列挙します。今回のサンプルでは図2のような構造になります。

図2:サンプルにおけるAtomのentry要素
図2:サンプルにおけるAtomのentry要素

 図3がJavaScriptでentry要素の文字列を生成している部分です。Atomを意識した作りになっています。実際、SCAはプレゼンテーション層とデータ層に関する仕様はありません。JSONRPCやAtomはTuscany独自のバインディングで、今のところSCAでJSONRPCやAtomのバインディングを仕様化する動きはありません。Atomに関しては、JavaScript内でAtomのentry要素の文字列を生成しなければなりません。少し面倒ですが、Atomのプログラミングを1から実装することと比較すれば、非常に簡単だと実感できると思います。

図3:JavaScriptにおけるAtomのentry要素
図3:JavaScriptにおけるAtomのentry要素

1 2 3 4
→
INDEX
オープンソースApache Tuscanyで楽しむSOA 第4回「Web2.0から始めましょう(Atom編)」
Page1
はじめに
Atomを使用して買い物かごを実現する
買い物かごを作成する
送料、合計金額はJSONで実装
すべてを組み合わせる
プロフィール
川久保 智晴 カワクボ トモハル

COBOLで13年、Javaを中心としたWeb開発で11年。2つしか言語知らないのかというとそうでもなく、sed/awk、Perl、Pythonなども一時期は業務で使えるレベルまで達したと思っています(自己申告)。

最近はプロジェクトマネージャやソフトウェアアーキテクトという一見相容れない仕事を繰り返してきましたが、実は両者の技術は密接に絡んでいるというのが最近考えていることです。プロジェクトマネージャがあまりにも技術に疎かったり、ソフトウェアアーキテクトがあまりにもコストに鈍感であったりするのを見るにつけ思いが深まっています。

そういう会社員生活も2010年10月でピリオドを打ち、長年構想中のビジネスモデルをシステム化するために独立。2年後のビジネス化を目指しています。それまでの2年間はJavaを含めたプログラミング教室(http://www.programclass.com)で食いつなぐつもりです。2010年末時点で20名のJava教室の生徒さんがいます。Skypeを使っているので全国から問い合わせがあります。まだまだ募集していますので、気軽にメールを頂ければと思います。

以前はお酒が大好きでいろんなところに出没していましたが、今はおとなしく家飲みに徹しています。土日は20キロ近くジョギングしたりして爽やかなIT起業家となり雇用の創出に貢献できればと思っています。


記事へのコメント・トラックバック機能は2011年6月に廃止させていただきました。記事に対する反響はTwitterやFacebook、ソーシャルブックマークサービスのコメントなどでぜひお寄せください。

スポンサーサイト