“私たちが今日提供するものにはすべて,2つの重要なテーマがあります。”,サンフランシスコの f8 カンファレンスで先日行われた発表に関して,Facebook のプラットフォームプロダクト責任者である Bret Taylor 氏は facebook development blog に 記している。Facebook はプラットフォームの次なる展開として,Open Graph プロトコルと Graph API を導入した。
第1に,Web は人々と,彼らが関心を持つすべてのものとのコネクションをベースとしたモデルに移行しつつあります。第2に,このコネクションベース Web の構築は順調に進んでいて,ユーザと開発者の双方に対して価値をもたらしています。このコネクションの基本となるグラフを扱いやすく,相互運用性のある形式でマップする手段が必要とされているのです。
Facebook はそのプラットフォームに3つの新しいコンポーネントを導入した。その中の2つが Open Graph Protocol と Graph API だ。Graph API は人々 (people) や写真 (photo),イベント (event) などの Facebook のオブジェクト,あるいは友だち (friend) やタグ (tag),共有コンテント (shared content) といったオブジェクト間のコネクションへのアクセス手段を提供するものだ。アクセスには統一性,一貫性のある URI が使用されていて,https://graph.facebook.com/ID という形式の URL (ID には Social Graph 上のオブジェクトのユニーク ID を指定する)ですべてのオブジェクトにアクセスできる。また,Facebook の各オブジェクトでサポートされるコネクションのタイプ (CONNECTION_TYPE)についても https://graph.facebook.com/ID/CONNECTION_TYPE から確認可能だ。
以下は Graph API ページ から抜粋した,識別子を使って Facebook オブジェクト(リソース) にアクセスするための URI の例である。上位レベルで見れば,これらは API の使用方法の実例でもある。
Facebook のどのオブジェクトに対しても,同じ方法でアクセスすることができます。
- ページ: https://graph.facebook.com/cocacola (Coca-Cola のページ)
- イベント: https://graph.facebook.com/251906384206 (Facebook Developer Garage Austin)
- グループ: https://graph.facebook.com/2204501798 (Emacs ユーザグループ)
- アプリケーション: https://graph.facebook.com/2439131959 (Graffiti アプリケーション)
[…]
Facebook social graph 内のすべてのオブジェクトは関連 (relationship) によって相互に接続されています。Bret Taylor は Coca-Cola ページのファンである,Bret Taylor と Arjun Banker は友人である,というような具合です。API では,このような関連を コネクション(connection) と呼んでいます。オブジェクト間のコネクションは
https://graph.facebook.com/ID/CONNECTION_TYPE
という構成の URL で確認できます。
- 友人(Friends): https://graph.facebook.com/me/friends
- 映画(Movies): https://graph.facebook.com/me/movies
- 本(Books): https://graph.facebook.com/me/books
URI としてはさらに,現在のユーザを参照するための特別な識別子 me
がある。Graph API の認証には OAuth 2.0 が使用されている (Facebook の OAuth 2.0 実装に関する詳細は authentication guide に紹介されている)。
OAuth 2.0 は OAuth の複雑な URL シグネチャスキームとトークン交換に代えて,API 通信に SSL を使用した簡略化バージョンです。高位レベルでは,OAuth 2.0 は,Facebook へのリダイレクトを通じて,Facebook ユーザの アクセストークン (access token) の取得を要求します。アクセストークンが取得できれば,Graph API 要求にそのアクセストークンを含めることによって,そのユーザとして認証要求を行うことが可能です。
Web での反応は総じて好意的なようだ。Subbu Allamaraju 氏は “Uncomplicated Hypermedia (分かりやすいハイパーメディア)” と題されたポストで,次のように評している。
Facebook Graph API は,よくできていると思います。業界のメジャープレイヤ達が提供する web サービスで問題になっている数多くのトラップをうまく回避できています。Facebook の API は シンプルで一貫性があり,さらに相互に接続 されていて,Web の精神そのものです。
氏は,この Open Graph プロトコルと Graph API がハイパーメディアの力を活用できていること自体,リンクされたリソースによる単純な表現 (ここでは Facebook のオブジェクトグラフ) を複雑化する必要性がないことの証明である,と指摘している。例えば Web で利用可能な API のいくつかは,AtomPub プロトコルや GData,OData などの拡張をベースとしているが,リソースのタイプ毎に別々のサービスを使用している。
Ars Technica はオープンスタンダードに向けた動きとして,今回の発表を歓迎している。
Facebook が行ったオープンスタンダード化活動と API の改善は,ここ数年の間に同社に参画した人々を中心として社内的に進められたものです。Facebook は,著名なStandardista(標準推進者)である David Recordon 氏を雇用しました。氏は OAuth と Atom Activity Extension の著者のひとりでもあります。さらに 昨年の買収 によって Facebook に参加した FriendFeed のエンジニアたちも,Facebook の開発の進行を支援しました。
現在は Facebook の社員である David Recordon 氏は O’Riely Radar において,これらの API がなぜオープンweb に寄与するかについて述べた上で,彼が感銘を受けた変更点を取り上げている。リアルタイム API などの機能,OAuth 2.0 のサポート,そして開発者に対して 24 時間というキャッシング時間の制限を課さなくなったこと,などだ。氏によれば,
オープン性を技術的観点だけで考えるのであれば,技術者としてそれは難しいことではありません。しかしオープン性というのは,もっと広範な概念なのです。技術がオープンであるというのは,誰もが同じツールを使って同じように構築できることを意味します。データがオープンであるというのは,それまでは利用できなかった API をベースとした革新的なプロダクトが構築できることを意味します。そして,人々の関係がオープンであるというのは,これらすべてが一体となり,情報共有のより良い方法をもたらした時に達成されるものなのです。
ReadWriteWeb のあるアーティクル によると,これはセマンティックウェブにおいて,巨大なインパクトを持つ可能性がある。
Facebook の発表で個人的にもっとも興奮を覚える部分は,それがセマンティックウェブにおけるブレークスルーとなる可能性です
API を活用するための情報は 開発者用 API 資料 に詳しい。