トップ » 技術記事 » OpenSocialを始めよう(8) - OpenSocialの現状を把握する

OpenSocialを始めよう(8) - OpenSocialの現状を把握する

タグ: Ajax Google javascript OpenSocial

前回は、アクティビティの追加方法について、現在Orkutが対応していないAPIも含めてお話ししました。
今回はAPIの使用方法の続きをお話ししようと思ったのですが、前回から今回の間にAPIのバージョン0.8がリリースされると言う大きな変化がありました。また周辺技術やコンテナの対応状況等、様々な点でもこの連載を始めたときとは様々な状況が変わっています。
そこで今回は、一旦OpenSocialの現状をまとめておきたいと思います。また、この原稿を書いているのは、Google Developer Day 2008が終わった次の日と言う事もありまして、タイミング的にもぴったりなんじゃないかと思います(筆者によるDeveloper Day 2008のレポートはこちら)。

OpenSocial API 0.8の相違点

OpenSocial 0.8が、2008年5月27日にリリースされています。今回のリリースで最も大きな変更点はなんと言ってもRESTful APIが正式に導入された」事でしょう。
RESTful APIは0.7でも規定されていたのですが、あくまで「ドラフト版」と言う扱いであり、コンテナにとっては実装の必要がないものでした。それが今回、正式に仕様の一部として取り入れられた事で、JavaScriptを利用できないモバイルブラウザや、クライアントアプリ等からもOpenSocial APIを呼び出す事が確実に可能になりました。

RESTful APIについて簡単に紹介すると、以下のようになります。

  • URLを指定するだけで、ソーシャルデータにアクセスする事が可能
  • レスポンスはJSON、もしくはXML(Atom)形式で取得できる
  • 人、グループ、アクティビティ、アプリケーションデータ等にアクセス可能
  • APIの認証にはOAuthが用いられる(OAuthに関しては、こちらのページが参考になります)。

以下に、RESTfulなURLの例をいくつか示します。@selfは「そのリソース自身」、@allは「そのリソースに繋がる全てのリソース」、@friendsは「リソースの『友達』」を表します。また、guidとはコンテナがグローバルにユーザを識別するためのユーザIDです。

  • /people/{guid}/@all –ユーザ「{guid}」に関連する全てのユーザ
  • /people/{guid}/@friends –ユーザ「{guid}」の友人
  • /people/{guid}/{groupid} –ユーザ「{guid}」に関連する、グループ「{groupid}」のユーザ
  • /people/{guid}/@self –ユーザ「{guid}」の情報
  • /people/@me/@self –リクエストを行ったユーザ自身の情報
  • /groups/{guid} –ユーザ「{guid}」に関連するグループ
  • /activities/{guid}/@self –ユーザ「{guid}」自身のアクティビティ
  • /appdata/{guid}/@self/{appid} –ユーザ「{guid}」自身が持つ、アプリケーション「{appid}」のデータ

その他大きな変更としては、ユーザの友達情報を取得するためのリクエストを作成するAPI、「opensocial.DataRequest.newFetchPeopleRequest()」メソッドのシグネチャが変更になりました。
VIEWER_FRIENDS」や「OWNER_FRIENDS」と言った指定ができなくなり、新しく導入されたopensocial.IdSpecクラスを用いる必要があります(以下のコードは正確ではなく、あくまでイメージです)。

// データをフェッチするためのリクエストを作成
var req = opensocial.newDataRequest();

// IdSpecのインスタンスを作成
var idSpec = new opensocial.IdSpec();

// ユーザIDにビューアを指定
idSpec.setField(opensocial.IdSpec.Field.USER_ID, opensocial.IdSpec.PersonId.VIEWER);
// 「ビューアの友達の友達」までを取得。
// NETWORK_DISTANCEフィールドは、指定したユーザからの距離を表す
idSpec.setField(opensocial.IdSpec.Field.NETWORK_DISTANCE, 2);

// リクエストを追加
req.add("viewerFriends", req.newFetchPeopleRequest(idSpec));

req.send(callback);

0.8での変更点は、ここで挙げた以外にもたくさんあります。差分を全てご覧になりたい場合は、リリースノートを参照してください。

Series Navigation«アクティビティ応用プログラミングApache Shindigでさくさく開発!»

1 2

執筆者紹介

shiraishi

shiraishi

最近書いてばっかりいます。 眠いとおんなじことばかり書きます。 そして、大概眠いです。

TrackBack URL :