ひつじのにっき

mhidakaのにっきです。たまに長文、気が向いたとき更新。

【SC-2】OpenSocial in Japan - Google Developer Day 2009

今回、GDDに参加してOpenSocialに初めて注目しました。
いままでは単語だけ聞いたことあるな、という曖昧な印象しかなかったけど
アイディア次第で楽しみが何倍にも広がりそうです。


ひとつ思いついたのでGoogleフォンで作ってみたい。

OpenSocial in Japan
株式会社ミクシィ 田中洋一郎 氏

OpenSocialとは?
	ソーシャルグラフを利用したアプリケーション

	SNSの原動力は?
		ユーザ間の関係(ソーシャルグラフ)
		バイラル効果(新しいコンテンツの発見)
		
	いままでのSNSにはユーザと運営者の2つの関係しかなかった

	そこに一般開発者を加えるとどうなるか。
	SNSのもつソーシャルグラフを解放することでユーザにメリットがでる?

	ただし、SNSそれぞれがAPIを策定してしまうと互換性が著しく低下
	→ OpenSocialを提案
	   ソーシャルアプリケーションのための共通仕様
	
	Write ones, Deploy anywhere

ソーシャルアプリケーション
	他の人とコラボレーションしながら使えるアプリ
	
	海外での成功例
		Mobsters:月間アクティブユーザ数1300万人(比較としてmixiのユーザは1600万人)
	
	シェア・コミュニケーションに重点
	
OpenSocial API Specification(仕様)
	API内部の仕組み
	
	二つの形態がある。
		JavaScript API		画面の中で動く
		RESTful Protocol	専用のアプリとして動く
	
OpenSocial JavaScriptAPI
	XML + HTML + JavaScript (+Flashなど)
	つまりAJAXと同じ感覚
	
OwnerとViewerの関係
	オーナーがアプリをインストールすると、そのアプリケーションは自分の持ち物になる。
	
	たとえばインストールの結果、
	プロフィールページにアプリが埋め込まれる。
	そのアプリを実際に使う人がViewer。
	
	OwnerとViewerの関係を分離して考える事が重要
	
	Viewer Friend	アプリケーションを使っている人の友達
	Owner Friend	持ち主の友達
	
Views
	アプリケーションの置く場所を指定する
	Canvas View:アプリケーションを画面フルに使う
	Profile、Home Viewなど。	
	Viewによって利用目的が異なる。
	
Gadget XML & Views
	基本はXMLで記述。
	簡単に言うとルート要素にmoduleがあり、modulePrefsとContentに分かれている。
	

OpenSocial JavaScript APIの紹介

Person API
	使用者の情報を取得する(世界各SNSの最大公約数的なデータ)
	SNSごとにとれる情報の項目が異なってくる。名前や性別、年齢など。
	→ 利用できる情報はSNSごとに異なる
		
Friends API
	他ユーザーの集合。3つの視点で使い分ける
		USER_ID:起点となるユーザ
		GROUP_ID:友達の種類、ビジネスなど
		NETWORK_DISTANCE:友達の距離。友達の友達など。
	
	例)友達の一覧を取得するなどが可能
	
Activities API
	誰かのFeedを取得する。
	日記の更新情報などを取得できる
	
Persistence API
	あとでログインしたときに改めて情報を使いたいなど永続化のためのAPI。
	自分の情報ではなくて、自分が貯めた情報を他の人も共有できる

gadgets.io.makeRequest
	他のコンテンツとのマッシュアップをするための関数
	はてブのRSSフィードを読み込んで表示するなど。
	ただし、直接サーバーに取りに行ける訳ではなくて
	オープンソーシャルコンテナという専用サーバーを経由して取得(XSS予防)
	
OpenSocial RESTFul Protocol
	デスクトップアプリケーションなどソーシャルグラフをから使いたいとき。
	データの取得が可能ですが専用言語なのでパースが大変。
	Java,PHP,Python,Rubyなどオブジェクトへの変換するライブラリがあります
	
基本的な開発手法
	コーディングはテキストエディタ、Ajax対応のIDE
	デバッグは各SNSのSandBoxなどが中心
	
OpenSocial Dev App
	その場でコードを書いて実行できます
	
OSDE(OpenSocialDevelopment Environment)
	ローカルマシンでソーシャルグラフを仮想的に提供(Eclipce)
	
OpenSocial-jQuery
	XMLでかくのは長くてしんどいので短くするために書き方を工夫できる

キャッシュ
	人気が出たアプリケーションは膨大なアクセスが発生
	リクエスト処理は持たなくなってしまう・・・
	
	OpenSocialサーバーにキャッシュ機構でカバーする
	外部サーバーへ負荷を軽減
	アプリケーション作っているときは邪魔者(修正が反映されない)
		URLのあとにnocache=1をいれるとキャッシュ機構は無効に。
		
OpenSocialのオープン性
	コミュニティでAPI策定が行われている
		個人レベルでの参加が可能
	策定された仕様に基づいてSNSが1から実装するのは大変
		Apache Shindigで実装を提供する
	開発者のためのコミュニティ
		OpenSocial-Japan
		
日本におけるOpenSocial
	gooホーム 2009/5/21 一般公開
	サービスをマッシュアップしたGadgetを体験できます
	
	mixiアプリ 2009/4/8 オープンβ
	mixiのソーシャルグラフを利用可能、モバイル版は明日からリリース(企業向け)
	課金API、広告プログラムなどビジネス的な展開もあります
	
Javascript libraries for jQuery
	jOpenSocial
	opensocial jQuery
	いずれも日本人が作成
	
OpenSocial
	日本語ドキュメントが用意されています
	日本がOpenSocialをリードしている

OpenSocial Hackathon
	毎月開催しています。主催はGoogleやOpenSocial Japanなど
	
OpenSocial v0.9
	v0.6が初版
	v0.9ではテンプレート的なものが採用(OSML)
	Lightweght JavaScript APIに対応。開発をできるだけ簡単にする。
	AlbumAPIで画像が使えたりします