近年, インターネット上で, 様々なサービスが開発されている. 中でもこの数年で急成長したのが, SNS(ソーシャルネットワーキングサービス)である. これは, インターネット上でも現実の友達などと交友を深め, また, 同じものに興味を持つ新しい友達などと出会えるサービスである.
今, SNS上でアプリケーションを開発し, 公開することが話題となっている. そこで, SNS上でアプリケーションの開発を行うためにAPIを一般のユーザに公開しているFacebook APIとGoogleのOpenSocialについて述べる.
Facebookとは, アメリカ合衆国の学生向けのSNSであり, 発表当初は大学のメールアドレスを有する者のみに参加が限られていた. しかし, 2006年9月より一般にも公開され, 2007年5月にFacebook上で動作するアプリケーションを開発するためのFacebook APIが公開された. 以降Facebookのユーザ数は6800万人を超え, 現在, 世界で2番目にアカウント数が多いSNSである.
また, Facebookでは, ユーザは自分の好きなアプリケーションを選択し, 自分のページのアプリケーションディレクトリに追加することが可能となる. このアプリケーションは, Facebookが提供しているものもあるが, 多くは一般のユーザやデベロッパーによって開発されたものである. 現在, 作成されたアプリケーションの数は2万を超えている.
Fig.1はFacebookのアプリケーションの例であるSuper Wall[1]である. Super Wallによって, 友人に写真やビデオ等を送ることが可能となる. 追加されたアプリケーションはホームページ左上のリストに追加される.
開発されたアプリケーションは, Facebook内で公開され, 一般ユーザが使用可能となる. また、アプリケーションの開発は, Facebookの開発プラットフォームであるFacebook Platformにて行うことが可能である.
Facebok APIとは, Facebook Platformでアプリケーションを開発する際に使用する命令や規約のことであり, Facebookでは, 以下の用途のためのAPIを提供している.
最新のFacebook Platformでは, Facebookユーザの情報のみならず, その友達や所属するネットワークの情報にも全面的にアクセスすることが可能となった. これにより, ユーザー情報などを利用したサービスを提供することが可能になった. また, アプリケーション側から通知を出すなど, ユーザに働きかけることも可能となった.
Facebookでは, プログラミング言語のライブラリが用意されており, 公式には, PHPとJavaが用意されている. また非公式ライブラリを使用すればC++, Python, Ruby, Perlなどの言語にも対応可能である. これらの一般的な言語に加え, Facebookで使用可能となる独自言語として, FBML(Facebookマークアップ言語)がある, これはFacebookにてHTMLに変換されるHTMLに似た言語である.
この言語のタグを使用する事で, 動的情報タグ, プライバシ条件タグ, イメージ・キャッシング, Flashといった機能に対応している.[2]FBML のメリットは, 便利な独自タグの存在である. 例えば, ユーザー名を表示する作業を他の言語で行うと, API をコールしてユーザー情報を取得する必要があるが, FBMLを使用すると ”fb:name”というタグだけで手軽にキャンバス画面上に名前を表示することが可能となる. この他にも条件分岐を含む多くの専用タグが用意されている. さらにJavaScriptを使いたいユーザーのためにベータ扱いのFBJSというFacebook用のJavaScriptも用意されている. しかし, このFBJSでは, セキュリティの関係のために使える命令が制限されている. また, SQLに良く似た言語であるFQL(Facebook Query Language)がある. これを使う事によって, 必要な情報のみを取得でき, 複数のリクエストを組み合わせることが可能となる. [2]
これらの言語は, Facebook Platformのドキュメントに説明や使用方法の記述があり, それを参考にする事で初心者でもある程度使用する事が可能である.
Facebook Platformでの開発環境は整えられており, Facebookのアカウントを所有し, Facebook APIを身につけ, サーバを持つ者なら, ドキュメントを参考にしてアプリケーションの開発が可能となっている. Facebookでのアプリケーション開発における開発環境上の問題点は, FBMLのドキュメント不足, 外部のCSSが読めない, 文字化け, タイムゾーン絡みのバグなどが挙げられている.
現在Facebook Platformによって開発可能となるアプリケーションは, 以下の3種類である.
まず, Facebook内のアプリケーションであるが, Facebook内のアプリケーションは, FBMLモードで開発が行われる. FBML モードではフレームは使われず, Facebook のアプリケーションディレクトリにアプリケーションの実行結果が埋め込まれる. アプリサーバが生成した FBML を Facebook サーバが中継し, ヘッダ・フッタのついた HTML に変換して, ブラウザに返すという手順をで実行される. レスポンスはFacebook Canvaspageに反映される. この動作シーケンスをFig.2に示す.
次に, Web アプリケーションについて述べる. Webアプリケーション本体は, 外部のWebサーバ上で動作する. そのため, Facebook上でそのアプリケーションを使用するためには, FacebookからこちらのWebサーバにリクエストが送られ, それに対するレスポンスがFacebookを通してユーザに返される. 認証やセッション管理はすべてFacebook側で行われるため, アプリケーションはユーザリストを管理したり, 認証を実装する必要はない. アプリケーションのレスポンスの形式は, HTMLとFBMLである. アプリケーション自体は外部のサーバ上で動作させるため, 自由度は高いが, ユーザ情報を外部のサーバで保持することは禁止されている. Webアプリケーションの開発はIFRAMEモードで行われ, その動作シーケンスはFig.3に示すようなものになる.
次に, DeskTopアプリケーションについて述べる. これは, ユーザのPC上で動作するアプリケーションを開発する事ができる. DeskTopアプリケーションの作成には, Visual Studioと連携して Facebook アプリケーションを作ることができる Facebook Developer Toolkitを使用すると便利である.
作成されたアプリケーションは, FacebookのApplication Directoryや, Facebook Canvaspage, ProfileBox, MiniFeed, Notificationなどに統合される. また, Facebookでのアプリケーション開発では, マッシュアップにも対応しており, その例としてFlickrやPicasaの画像を取り込んで編集する「Splashup」というアプリケーションが開発されている.
Facebookではアプリケーションを開発する際便利なTool機能が提供されている. このToolでは, メソッドのテンプレートが用意されており, それを利用する事でメソッドを簡単に作成することが可能となる. また, Web上でテストを行い, すぐに動作が確認できるため, テストも容易に行うことが可能となっている. なお, 対応しているデータフォーマットはXML, JSONである.
アプリケーションの開発は, 以下に示す流れで行われる.
OpenSocialとは, Googleが, 2007年11月に発表したSNSに関する共通のAPI, つまりSNS上で動作するアプリケーションを開発する際に利用可能となる共通の機能セットである. また, SNSのユーザにアプリケーションが動作可能となる場所を提供する入れ物としての振る舞いを行う. 現在バージョン0.7であり, 未だ開発段階である. 参加企業は, 世界No.1のユーザ数を誇るMySpaceをはじめ, mixiなど200以上の企業が参加を表明している.
OpenSocialのAPIは, HTMLとJavaScriptといった既存のWeb標準で構成されており, 導入が容易となっている. まず, JavaScript APIでは, 各SNSに対して次の3つの一時領域へのアクセスを提供している.
People and FriendsデータAPIは, ユーザプロファイルと友人関係の表示と更新をクライアントアプリケーションで行えるようにするものである. ユーザの友人リストをリクエストしたり, 既存のプロファイルのコンテンツを検索したりすることが可能となる.
ActivitiesデータAPIは, OpenSocial Platform内で「アクション」の表示と公開をクライアントアプリケーションで行えるようにするものである. このAPIをクライアントアプリケーションで使用することで, エントリの新規作成や既存エントリの編集, 削除, およびエントリリストの表示が実行可能となる.
PersistenceデータAPIは, データを保存・取得するためのAPIである. このAPIを使用することでアプリケーションが利用するデータ全体をGoogleに保存させることが可能となる. また既存のアプリケーション, ユーザ, ガジェットのインスタンスについて, コンテンツの編集や削除, 既存のフィールド内でコンテンツを検索することも可能となる.
参加ホストは, 以上のAPIを利用したコールに対して, 適切なデータを返すことを約束している. また, 独自のマークアップ言語を持たないため, デベロッパーは既存のJavaScriptによるフロントエンドのコード資源をそのまま, あるいは簡単な手直しをするだけで, OpenSocialを使用することが可能となる. 実際にアプリケーションを作成するには, 各SNSが提供している開発ツールを使用する事が可能となる. [5]
Fig.4はOpenSocialでアプリケーションを作成した場合のWebサイト上での動作シーケンス図である.

他にも, サーバからデータにアクセスするためのAPIとしてRESTfull APIが用意されている. これを使用する事で, サーバ間のデータ取り扱いを行う事が可能となる. 現在, 開発中であるが, 完成すればマッシュアップでの利用の他, 携帯サイトなどへ対応される予定である.
OpenSocialの開発環境は, 発表当初非常に機能が限定されており, 思うようなアプリケーションを開発することが困難であった. しかし, バージョンアップを重ね, 開発環境は整いつつある. 現在, GoogleのSNSであるOrkutや世界一のユーザ数を誇るMySpaceなど大手SNSでしかPlatformが用意されていないが, OpenSocialがこのまま普及して行けば, 多くのSNSでアプリケーションの開発が可能になると考えられている. また, OpenSocialでは, 外部サーバを立ち上げ, そこでアプリケーションの開発が行えるため, 自由度が大きいと考えられる. これは, 企業などサービスを提供する側から見た場合, 大きなメリットとなる.
さらに, OpenSocialではアプリケーションをホストするJavaベースのサーバであるコンテナサーバ(shindig)が, オープンソースプロジェクトとして公開されている. ここにアプリケーションで使用するユーザ情報等が収められており, RESTfull APIを提供している. デベロッパーは, その情報を扱えるアプリケーションの開発を行う事が可能となる.
例えば, あるSNS内でこのサーバを動作させておく事でOpenSocialアプリを動かす事ができ, 他のSNSやサービスへRESTfull APIでデータをフィードする事が可能となる. また, このサーバを利用すると, OpenSocialに参加するSNSサイトでアカウントを作れば, 他の参加しているSNSサイトにもログインでき, コメントを付けることが可能となる.
Fig.5はOpenSocialで作成されたアプリケーションの例である Last.fmである. コンピュータに Last.fm を設定すると, ユーザの聴いたトラックが Scrobble(スクロブル)され, そこからユーザの音楽情報が自動的に集計されてアップロードされる. 他にも, 音楽テイストや, チャートをみんなとシェアする, パーソナルラジオを聴く, 新しい音楽や仲間に出会うなどの機能が提供されている.
FacebookとOpenSocialの最大の違いは, Facebook は独自のPlatformを採用しており, 使われているアプリケーション, 独自言語, API は Facebook の中でしか機能しない. 一方のOpenSocial は, 「一度学べば, どこでも書ける」をコンセプトに, 完全にオープンかつ汎用性のあるAPIであることが最も革新的な特徴であり, 理念に掲げるオープン性を Web 全体に敷き詰めていくことを目標としている. また, Facebookでは, Facebook自身や提携企業とユーザがアプリケーション開発を行っているのに対し, OpenSocialでは, 多くの提携企業やSNSと, 一般ユーザによって開発が行われるため, 開発者数が多くなり, 開発されるアプリケーションに幅ができる.
使用できる言語の面でもFacebookとOpenSocialでは異なる. Facebookでは, ライブラリを使用する事により, 様々なプログラミング言語とFBML, FQLで記述されることに対し, OpenSocialでは, JavaScriptとHTMLを基準とするプログラムング言語で構成されている. 要するに, Facebookの方が言語の面では自由度が高いように考えられる. しかし, Facebookでは, FBMLやFQLのような独自言語を使用するため, 既存のアプリケーションをそのまま使用する事ができない. 一方, OpenSocialはJavaScriptなどの既存のプログラミング言語を使用しているため, 簡単な手直しで既存のアプリケーションを使用できる.
FacebookのPlatformは2007年5月に公開され, これまで開発環境が整えられてきた. 一方OpenSocialは, 2007年11月に発表され, 2008年2月に一般公開されたものの, Platformが用意されているSNSもまだ少なく, 開発環境は整えられていない. したがって, Facebookの方がOpenSocialよりも開発環境が整えられている. また, FacebookでもOpenSocialでも外部サーバの開設が必要であるが, Facebookの場合, 認証や, セッション管理をすべてFacebook側が行う事に対し, OpenSocialでは, これらを開発者が管理する必要がある. そのため, OpenSocialでアプリケーションの開発を行う際には, サーバ側の対応が必要となり, SNS以外のぺージでもOpenSocialを使用する場合, サーバの認証が必要となる. そのため, 手続きが少々面倒になる.
また, Facebookのアプリケーションが携帯電話に対応しているのに対し, OpenSocialは携帯電話に未対応である. OpenSocialは今後FlashLightを使用する事によって, この問題を解決する予定である.
FacebookもOpenSocialもSNS上で動作するアプリケーションを一般のユーザが開発できる環境を作り, 開発者が4億人のSNSユーザに向けて, よりリーチの大きなアプリケーションを開発可能となるように支援するために開発されているというという目的は同じである. この先Facebookは, 他のSNSと提携こそしないと思われるが, ソフトウェアデベロッパーやアプリケーションデベロッパーと提携し, さらに多くのアプリケーションが開発されていくであろう. また, OpenSocialは開発段階を終え, 環境が整えば, SNS用のアプリケーションを提供するデベロッパーにとって, 各SNS毎に何種類も作成する必要がなく, OpenSocialに賛同するすべてのSNSで動作するアプリケーションを開発する事が可能になる. この考え方が多くの企業やSNS等に賛同され, 参加企業が増えれば, 数年後にはOpenSocialがSNS向けのアプリケーションを開発する上での共通プロトコルとなるであろうと考えられる.
Copyright (C) 2008 Tomoyuki Hiroyasu, All rights reserved. Copyright (C) 2008 Mitsunori Miki, All rights reserved. Copyright (C) 2008 Yusuke Kobayashi, All rights reserved. No part of this document may be reproduced, copied, distributed, transferred, modified, or transmitted, in any form or by any means, without the prior written permission of the authors. In no event shall the authors be liable for any damages caused in any way out of the use of this document.