OpenSocialを利用してガジェットを作ろう!

第5回 アプリデータによる情報の永続化と共有

この記事を読むのに必要な時間:およそ 3.5 分

OpenSocial v0.9仕様策定が完了しました

かなり長い時間がかかっていたOpenSocialの次期バージョンであるv0.9の仕様策定作業が,先月の4月16日に完了したことが,OpenSocial Communityより発表されました。v0.9により,ガジェットの開発が今までよりも容易になるだけでなく,パフォーマンスの面でも改善されています。特に,Lightweight JavaScript APIや,OSML & OpenSocial Templatesなどを使うことで,今まで数十行の記述が必要だった箇所が,たった2,3行の記述で同じことを実現できるようになります。ガジェット開発者にとって,v0.9は非常に魅力的な内容となっています。

しかし,OpenSocialガジェット開発者がv0.9を利用するためには,OpenSocialに対応した各SNSがv0.9対応の実装を追加しなければならないため,しばらく待つ必要がありそうです。OrkutによるAlbum APIの一部対応など,v0.9を先取りしたSNSもいくつか登場しています。v0.9に興味のある方は,各SNSの動向をウォッチしておくと良いでしょう。

今回のテーマは「アプリデータ」

さて,第3回第4回の2回分を使って,DataRequestオブジェクトを使ったOpenSocial APIの使い方を見てきました。その中で,はてなIDを扱う箇所がありました。はてブチェッカーガジェットでは,自分のはてなIDの他にも,友達のはてなIDも扱うことが必要になります。

どのガジェットでも,ちょっと凝ったことをしたい場合に,ある情報をどこかに記憶しておきたくなります。はてブチェッカーガジェットの場合,このガジェットを使うユーザのはてなIDが,それにあたります。ガジェットを利用するたびにはてなIDの入力を迫られるのは不便ですので,ユーザに入力してもらったはてなIDは,はてブチェッカーガジェットの次回利用時にそれを入力することなくガジェットが利用できるように記憶しておきたい情報となります。

OpenSocialで提供される2つの記憶方法

普通のアプリケーションであれば,ファイルやデータベースなどを使うことで,こういった情報を記憶させておき,あとで再度利用することができます。OpenSocialによるガジェットでは,2つの選択肢があります。

  • ユーザ設定を使う
    • UserPrefタグとgadgets.Prefsクラスを使用
    • 設定値はガジェットのOwnerによって入力,記憶される
    • Owner以外のユーザは設定値を入手できない
  • アプリデータを使う
    • Persistence APIを使用
    • 設定値はガジェットのViewerによって入力,記憶される
    • 他のユーザの設定値を入手可能

ユーザ設定は,あるガジェットをインストールしたユーザが,そのガジェットの動作をカスタマイズするために使用される機構です。ガジェットXMLファイルにUserPrefタグを使ってユーザ設定項目を記述しておくことにより,gooホームSandboxでは自動的に設定値の入力画面を作ってくれます。入力画面で入力された設定値は,gadgets.Prefsクラスを通じてガジェット内で取得し処理することができます。

しかし,ユーザ設定項目は,あくまでOwner固有の設定値であり,ガジェットの実行時に他のユーザの設定値を入手することはできません。つまり,情報の記憶はできても,その情報を他のユーザと共有する目的で使えるものではないということです。

はてブチェッカーガジェットが扱うはてなIDの記憶については,アプリデータが適しています。ユーザ設定のように入力画面を自動的に作ってくれるような機構はありませんが,Viewerがガジェットの実行時に入力した設定値は,他のユーザがそのガジェットを使った際に,取り出すことができます。つまり,設定値の共有が可能ということです。同じガジェットをインストールしているユーザ間であれば,他のユーザの設定値をPersistence APIによって取得することが許可されています。

ユーザ設定とアプリデータでは,このように実現できることに差があります。扱いたい情報によって,どちらを使うか判断することが開発者に求められます。

Persistence APIと,はてブチェッカーガジェットでの利用箇所

では,具体的にアプリデータを扱うためのAPIとその利用箇所について見ていきましょう。アプリデータに関する操作は「作成(更新含む),削除,取得」の3つであり,それぞれAPIが提供されています。各APIはDataRequestの形式で提供されていますので,第3回第4回で解説したバッチリクエストの形態で利用することになります。

  • 作成:opensocial.DataRequest.newUpdatePersonAppDataRequest
  • 削除:opensocial.DataRequest.newRemovePersonAppDataRequest
  • 取得:opensocial.DataRequest.newFetchPersonAppDataRequest

はてブチェッカーガジェットのHomeビューでは,はてなIDについて2つの機能がユーザに提供されます。1つ目は,Ownerが自分のはてなIDを設定するためのUIの提供です。ここでは,入力されたはてなIDを記憶するために,newUpdatePersonAppDataRequestが使われます。

2つ目は,Ownerの友達のはてブ一覧を表示します。そのために,Ownerの友達のはてなIDを取得することが必要です。はてなIDの取得には,newFetchPersonAppDataRequestが使われます。

一方,Profileビューでは,プロフィールページをOwner自身のはてブ一覧で飾ることになります。そのために,Homeビューと同じく,newFetchPersonAppDataRequestが使われます。

著者プロフィール

田中洋一郎(たなかよういちろう)

株式会社ミクシィ所属。Google API Expert (OpenSocial)。Mash up Award 3rd 3部門同時受賞。書籍「OpenSocial入門」を出版。

URL:http://www.eisbahn.jp/yoichiro

著書

コメント

コメントの記入