Google Social Graph APIを徹底解剖

山崎徳之(ゼロスタートコミュニケーションズ)
2008-02-28 14:35:02
  • このエントリーをはてなブックマークに追加

 次にfmeというパラメータですが、これはFollow meの略で、"me"というエッジで辿れる情報を出力します。

 先程、TwitterではXFNは全て"contact"だと書きましたが、これはあくまでも他人についてです。他にも自分に関するエッジというものがあり、これは"me"というXFNによって表現されます(rel="me"となります)。

 クエリーでfme=1と指定すると、Twitter以外の自分に関するサイトの情報が(Googleがインデックスしていれば)見ることができます。試しに下記のURLを叩いてみます。

http://socialgraph.apis.google.com/lookup?q=http://twitter.com/fkoji&pretty=1&fme=1

 すると、下記のような内容が出力されます。

{
 "canonical_mapping": {
  "http://twitter.com/fkoji": "http://twitter.com/fkoji"
 },
 "nodes": {
  "http://blog.fkoji.com/": {
   "attributes": {
   },
   "claimed_nodes": [
    "http://technorati.jp/claim/p8dfqqxbrz"
   ]
  },
  "http://technorati.jp/claim/p8dfqqxbrz": {
   "attributes": {
   },
   "claimed_nodes": [
   ]
  },
  "http://twitter.com/fkoji": {
   "attributes": {
    "url": "http://twitter.com/fkoji",
    "profile": "http://twitter.com/fkoji",
    "rss": "http://twitter.com/statuses/user_timeline/fkoji.rss",
    "atom": "http://twitter.com/statuses/user_timeline/fkoji.atom"
   },
   "claimed_nodes": [
    "http://blog.fkoji.com/",
    "http://technorati.jp/claim/p8dfqqxbrz"
   ]
  }
 }
}

 "nodes"->"http://blog.fkoji.com"->"claimed_nodes"には、http://technorati.jp/claim/p8dfqqxbrz"というURLが、また"nodes"->"http://twitter.com/fkoji"->"claimed_nodes"には、http://blog.fkoji.com/やhttp://technorati.jp/claim/p8dfqqbrzというURLがあります。

 つまり、fme=1と指定すると、そのノードの中でrel="me"と表現されているURLを再帰的に取り出すことができるようになります。claimed_nodesで出力されるのは、rel="me"でマークアップされたURLということです。

 次にcallbackですが、これは結果の出力を処理するJavaScriptの関数名です。JSONフォーマットなので、たいがいGoogle Social Graph APIはJavaScriptで処理されるかと思います(筆者はXMLで出して欲しいと思うところですが)。

 そこで、JavaScriptの関数をcallback=で指定しておくと、その関数によってGoogle Social Graph APIの出力が処理されます。試しに下記のURLを叩いてみます。

http://socialgraph.apis.google.com/lookup?q=http://twitter.com/fkoji&pretty=1&callback=foo

 結果は以下の通りです。

foo({
 "canonical_mapping": {
  "http://twitter.com/fkoji": "http://twitter.com/fkoji"
 },
 "nodes": {
  "http://twitter.com/fkoji": {
   "attributes": {
    "url": "http://twitter.com/fkoji",
    "profile": "http://twitter.com/fkoji",
    "rss": "http://twitter.com/statuses/user_timeline/fkoji.rss",
    "atom": "http://twitter.com/statuses/user_timeline/fkoji.atom"
   }
  }
 }
}
);

 要は、callbackなしのときの出力を、callback=で指定した関数でくくって出力するだけです。

 最後にsgnですが、これはSocial Graph Node MapperというGoogleのprojectがあり、それに準拠した形での出力を行うことを指示するパラメータとなります。

 これは何かというと、例えば同じ人を指し示すたくさんのURLがあったときに、その標準的なURLを決めてそこへのマッピング情報を提供しよう、というものです。例えば下記のURLで試してみます。

http://socialgraph.apis.google.com/lookup?q=http://twitter.com/fkoji&pretty=1&sgn=1

 すると、下記の内容が出力されます。

{
 "canonical_mapping": {
  "http://twitter.com/fkoji": "sgn://twitter.com/?ident\u003dfkoji"
 },
 "nodes": {
  "sgn://twitter.com/?ident\u003dfkoji": {
   "attributes": {
    "url": "http://twitter.com/fkoji",
    "profile": "http://twitter.com/fkoji",
    "rss": "http://twitter.com/statuses/user_timeline/fkoji.rss",
    "atom": "http://twitter.com/statuses/user_timeline/fkoji.atom"
   }
  }
 }
}

 "canonical_mapping"や、"nodes"の先に、sgn://twitter.com/?ident\u003dfkojiという表現があります。これが、Social Graph Node Mapper Projectにおけるhttp://twitter.com/fkojiの標準(Canonicalな)URLということになります。

 今回はGoogle Social Graph APIについて解説してみました。意外と単純であることがわかると思います。

 qパラメータは必ず必須ですが、edo、edi、fmeなどを適宜指定して情報を取り出し、それをcallbackで指定した関数で処理すれば、Twitterのリンク情報などを表現したりすることができるようになります。

 いずれXFNやFOAFでリンク情報を提供するサイトが増えてくれば、面白いことになるかもしれません。

 筆者は、Google Social Graph API情報をFlashで表現するサイトをデモで運用しています。もし良かったら試してみてください。

山崎徳之株式会社ゼロスタートコミュニケーションズ 代表取締役社長

アスキー、So-net、ライブドアなどでシステム設計、構築、運用を行う。2003年9月にシリコンバレーにVoIPの開発会社であるRedSIP Inc.を設立、CEO就任。2006年6月にゼロスタートコミュニケーションズを設立、代表取締役社長就任。Software Designで「レコメンドエンジン開発室」などの連載をしている。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]