OpenSocialとは
SNS(Social Networking Service:ソーシャル・ネットワーキング・サービス)は、その名の通りソーシャルな(≒人間関係の)ネットワークを、インターネット上で構築するサービスです。2005年頃から着実に普及を続け、今や膨大な会員数と、さらに膨大な数の会員同士のネットワーク情報を抱えるようになっています。SNSの基本的な機能としては、次のようなものがあります。
- 人を検索し、自分の友人として登録する機能
- 他の人とメッセージをやり取りする機能
- 自分のプロフィールや日記など、自分についての情報を編集する機能
- 他の人のプロフィールや日記などを閲覧、コメントする機能
- 自分の情報を更新した時に友人に通知する機能
- 何かのテーマに関心を持つ人同士がコミュニケーションを取るためのコミュニティ機能
多くのSNSサービスはこうした基本的な機能を提供しています。
またSNSの中には、SNSの基本的な機能に留まらず、自サイトにユーザーが滞在する時間を長くするため、直接SNSとは関係のないものも含め、ガジェットやウィジェットと呼ばれる小さなWebアプリケーションをページ上に表示するものもあります。ネットワーク上での自分の分身とも言えるアバター機能や無料・有料のゲームを提供するSNSなどもあり、SNS上のアプリケーションは急速に増えています。
例えば日本最大の会員数を持つmixiのポータルページには、「マイミクシィ(mixiでの友人を指す用語)」や「コミュニティ」などのSNSの基本的な機能だけでなく、「mixiニュース」「注目のキーワード」「カレンダー(天気予報付き)」などのガジェットが表示されています。また、ポータルページ以外でも、「フォトアルバム」などのアプリケーションがmixiプラットフォーム上に構築されています。
開発プラットフォームのオープン化がもたらす相乗効果
これまで、こうしたアプリケーションは基本的にSNS運営/開発会社だけが構築してきました。しかし、SNSが成長するにつれ、SNS上のアプリケーションをSNS運営会社だけが提供するクローズドな環境から、さまざまな会社や個人が自由にアプリケーションを構築して公開できるオープンな環境にしていく、という大きな流れができつつあります。
膨大な会員数と、会員相互の友人ネットワーク情報を持つSNSは、外部の企業にとっても非常に魅力的なアプリケーションプラットフォームと言えます。また、外部の企業に自社SNSのプラットフォームを開放し、アプリケーションを開発してもらえるならば、SNSの魅力を増し、SNS運営会社にとっても利益を生むことになります。SNS上のアプリケーション開発プラットフォームのオープン化はこのような流れから進んできたと言えるでしょう。
もちろんプラットフォームがオープン化されても、SNSごとに開発手法が異なってしまうならば、アプリケーション開発は容易ではありません。「複数のSNSサイトで共通に使える開発プラットフォームが欲しい」という開発者の願いに応えるのが、本連載で扱うOpenSocialです。
一度理解すればどのSNSサイトでも動かせる「OpenSocial」
OpenSocialはGoogleによって開発された、SNS上のアプリケーションのための共通API仕様です。Google自身のかかわるOrkutや世界最大の会員数を持つMySpace、そして日本でもmixiやgooなどのサービスが対応しています。
OpenSocialでは、対応するSNSをコンテナと呼んでおり、OpenSocial仕様に沿ってアプリケーションを構築すれば、複数のコンテナ(=SNS)に対応したアプリケーションをリリースすることができます。OpenSocialのキャッチフレーズは「learn once, write anywhere(一度使い方が分かれば、どのサイトでも動作するアプリケーションが書ける)」というものであり、まさしくSNSアプリケーションを作る開発者の期待に沿うものです。
「Containers - OpenSocial」では、現在OpenSocialに対応しているSNSが紹介されていますが、OpenSocialに対応するSNSの会員数は3億人以上とも言われ、対応するサービスの数は40以上にもおよびます。
日本でも8/24にmixiがサービスを正式公開したこともあり、OpenSocialを使ったアプリケーション開発は、今がまさに旬な時期と言えるでしょう。本連載では、実際にmixi上でアプリケーションを作成しながらOpenSocialのさまざまな機能に触れていきます。
なお、OpenSocialの最新版は2009年4月に公開されたv0.9ですが、OpenSocial対応のコンテナの多くは、v0.8.1までの対応となっています。本連載でも、v0.8.1をベースとして解説します。