本連載ではgooホームを取り上げていますが,先週は日本のOpenSocialにとって嬉しいニュースがありました。かねてからクローズドβ版として一部企業向けに提供されていたmixiのOpenSocial対応「mixiアプリ」が,4月8日に一般デベロッパー向けにオープンβ版として公開されたのです。
「mixiアプリ」を試すための情報は,「mixi Developer Center」に掲載されていますので,ぜひご覧になってみてください。今後,夏頃の一般公開に向けて,多くのガジェット開発者の意見を聞きながら,品質の向上と新APIの提供を目指していくとのことです。
早速,本連載で題材にしている,はてブチェッカーガジェットをmixiアプリとして公開しています。
残念ながらまだサポートされない機能がいくつかあったため,gooホーム用のコードをそのまま使うことはできませんでしたが,一部修正するのみで利用可能になった辺りは,まさにOpenSocialの真骨頂ですね。mixiアプリでの修正点は追々解説します。
さて,今回題材にしているはてブチェッカーですが,OpenSocialのおいしい部分がギュッと詰まった模範的なガジェットになっています。まずは特徴的なhomeビューについて,構造と動作内容を解説します。
homeビューの動作概要
はてブチェッカーのhomeビューでは,「友達の新着ブックマーク」を時系列に表示します。また,「設定」タブではユーザーのはてなIDを設定することができます。
homeビューは特に,OpenSocial的な内容が盛りだくさんですので,何回かに分けて解説していきます。以下は,homeビューにて行われている動作を示したものです。順に説明していきましょう。
- オーナーの「友達一覧」,「プロフィール情報」,「アプリデータ(※1)に保存されたはてなID」,オーナーの友達の「アプリデータに保存したはてなID」を取得。
- 友達が「アプリデータに保存したはてなID」を元に,各ブックマークのRSSフィードを,はてなのAPIから取得。
- 取得したフィードをマージしてブックマークを時系列に並べ替え。
- 「友達一覧」で取得した情報を元に,各ブックマークの横に持ち主のサムネイル画像を添えてブックマークを表示。
- 友達にはてブチェッカーガジェットを持っている人がおらず,フィードがひとつも取得できなかった場合は,はてブチェッカーガジェットを友達に紹介するためのリンクを表示。
- オーナーの「アプリデータに保存されたはてなID」を元に,「設定」タブの内容を表示。
- オーナーのはてなIDがまだ設定されていない場合は,プロフィール情報にはてなブックマークのURLが含まれているかを確認。含まれていればそのURLからはてなIDを抽出して自動設定する。
- ※1
- OpenSocialでは永続化情報と訳されたりもします。アプリデータはgooホーム上での名称です。
オーナー/ビューアーとは
細かい解説に入る前に,オーナー(OWNER)とビューアー(VIEWER)という概念について説明します。これは少々ややこしい概念ですが,OpenSocialを理解する上で非常に重要です。
前回,ビューについて解説しました。homeビューのガジェットは自分が見る,いわばマイページに貼られる前提で,profileビューは他人が見る,いわばプロフィールページに貼られる前提でした。では,ここで言う「自分が見る」「他人が見る」は何を意味するのでしょうか?
OpenSocialガジェットには所有者/オーナー(OWNER)という考え方があります。オーナーとは,ガジェットをページに貼付けた人を指します。もちろん,ガジェットは自分のページに貼ることが前提ですので,貼付けた人はそのページの持ち主でもあると言えます。反対に,ガジェットを見る人を閲覧者/ビューアー(VIEWER)と呼びます。
つまり,homeビューで「自分が見る」というのは,オーナーであるガジェットの所有者が自分で見ている,と解釈することができます。言い換えれば,homeビューで表示しているガジェットでは,あなたはオーナーであり,同時にビューアーでもあるのです。逆に,profileビューで「他人が見る」場合,ページを見ている人はビューアーであり,ページの持ち主がオーナーになります。もちろん,プロフィールページをオーナー自身が見ているケースでは,オーナーとビューアーは同一人物になります。同様のことはcanvasビューでも成立しますので,覚えておいてください。
各種リクエストの生成
さて,はてブチェッカーのhomeビューでは,オーナー(=ビューアー)の「友達一覧」,「プロフィール情報」,「アプリデータに保存されたはてなID」,オーナーの友達の「アプリデータに保存したはてなID」取得して利用することになりますので,これらの情報を取得するための各種リクエストの生成について解説していきましょう。
個別のリクエストの説明に入る前に,まずは共通で必要なopensocial.IdSpec,opt_params,opensocial.DataRequestについて知っておく必要があります。

