SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

オープンソースApache Tuscanyで楽しむSOA

オープンソースApache Tuscanyで楽しむSOA
第4回「Web2.0から始めましょう(Atom編)」

トスカーナワイン店の買い物かごにワインを追加します


  • このエントリーをはてなブックマークに追加

ダウンロード サンプルコード (18.5 KB)

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

  • このエントリーをはてなブックマークに追加

はじめに

 この連載では、「オープンソース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要素

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
買い物かごを作成する

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
オープンソースApache Tuscanyで楽しむSOA連載記事一覧

もっと読む

この記事の著者

川久保 智晴(カワクボ トモハル)

haruプログラミング教室(https://haru-idea.jp/)主宰。COBOL、FORTRANで13年、Javaを中心としたWeb開発で11年。3つしか言語知らないのかというとそうでもなく、sed/awk、Perl、Python, PHP,  C#, JavaScriptなども一時期は業...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4332 2009/11/25 14:06

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング