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

サンプルコード 18.94 KB
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開発で10年。2つしか言語知らないのかというとそうでもなく、sed/awk、Perl、Pythonなども一時期は業務で使えるレベルまで達したと思っています(自己申告)。

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

以前はお酒が大好きでいろんなところに出没していましたが、今はおとなしく家飲みに徹しています。土日は20キロ近くジョギングしたりして爽やかなIT技術者を目指しています。2度と徹夜の日々がなくなることを祈りつつ生活しています。


注目の求人情報
技術営業・マーケティング/老舗の独立系SIer
顧客企業のニーズをヒアリングし、システム開発やIT関連商品の提案などを行ないます...
システムエンジニア/証券向け開発・運用管理
株式・投資信託等、インターネットトレーディングシステムやC/S型業務システムの企画・設計・開発・運用...
コンサルタント/ITコンサルティングファーム
公官庁を中心とした業務改善、内部統制などを行う。

(最新日付順)
名前(ゲストの方もコメントをどうぞ):*
アイコン:
なし

内容(テキストのみ1200文字まで):*

投稿規定に同意して

スポンサーサイト

この記事のトラックバックURL: