今回のアプリケーションは,ユーザーのプロフィールを表示するビューを想定したもので,現在プロフィールを見ているユーザーと,見られている(そのプロフィールを所有している)ユーザーの情報を表示します。このサンプルを通じて,MySpaceアプリケーション/OpenSocialガジェットでの基本的な「お作法」を説明します。

 では,サンプルのコードです。

List1●サンプル・アプリケーション
List1●サンプル・アプリケーション (テキストはこちらから)
[画像のクリックで拡大表示]

 今回のサンプルはオブジェクト構造になっています。(1)のloaderがオブジェクトです。このような構造にするのは,OpenSocial/MySpaceアプリケーションとして必須ではないのですが,オブジェクト化を行っておいた方が保守性などで何かと便利です。loaderというオブジェクトがOpenSocialのデータを取得してデータを表示します。

 (1)のすぐ下のStart:の部分を見てください。ここがリクエスト部分です。(2)では,取得するフィールド種類を指定しています。(3)(4)(5)(6)については後ほど説明しますが,今回はリクエストを二つ指定しています。(7)はそのリクエストを送信しているコードで,引数にはCallBackファンクション(onLoadRequestファンクション)を指定しています。

 onLoadRequestファンクションを見てみましょう。(8)(9)はリクエスト結果を取り出しているところです。リクエストを二つ指定しているので,結果もそれぞれ取り出しています。(10)では見ている人,見られている人の情報をHTMLに表示しています。

 ではそれぞれ詳しく見てみましょう。

ViewerとOwner

 OpenSocialの重要な概念にViewerとOwnerというものがあります。Viewerとはすなわち「そのページを見ている人」,Ownerは「そのページの所有者」「見られている側」です。前回,OpenSocialガジェットには三つのView(「ユーザーホーム・ページ」「プロフィール・ページ」「キャンバス・ページ」)があることを説明しました。ユーザーホーム・ページは登録ユーザー専用のページ,プロフィール・ページは誰もが閲覧可能なページ,キャンバス・ページはアプリケーションごとに一つ用意される専用ページです。

 プロフィール・ページの場合,Ownerは所有しているユーザー,Viewerは訪問したユーザー,ということになります。ユーザーホーム・ページとキャンバス・ページでは,ViewerとOwnerは結果的に同一になります。ユーザーホーム・ページの場合,所有ユーザー自身しか見られないページなので当然のこととして理解してもらえるかと思います。キャンバス・ページの場合は奇異に思えるかもしれませんが,ログインしているユーザーによってOwnerが代わり得るという性質を持っている,ちょっと特殊なページになっています。

 サンプルでは(3)でViewerを,(4)でOwnerの情報を取得するように指定しています。

バルク・リクエスト

 サンプルでは(5)(6)で,リクエスト・オブジェクト(dataReqObj)に複数のリクエストを割り当てています。そしてその複数リクエストを(7)で実際に一度に送信しています。このように複数のリクエストをまとめて送信するのを「バルク・リクエスト」と呼びます。レスポンス(dataResponse)からそれぞれのリクエスト結果を取り出しているのが(8)(9)です。

 アプリケーションによってはリクエストを複数回行いたい場合があります。そのようなコードは長くなってしまいがちですが,OpenSocialでは一回のリクエストでまとめて書けます。実は内部では,このようなリクエストは複数回の通信に変換されています。