4 月 16 2008
OpenSocial API仕様を翻訳しました
OpenSocial API仕様 (v0.7)を翻訳しました。
4 月 08 2008
百式の中の人がやっているIDEAxIDEAというブログで募集があった「OpenSocialとかどうよ?的な勉強会」に行ってきました。場所は汐留のMySpaceジャパンオフィス。本国からエンジニアが来日しているとのことで、聞きたいことリストを用意しての参加です。
MDPとはMySpace Development Platformの略。MDPはOpenSocialより広い範囲のAPIです。言い換えると、OpenSocialはMDP上に作られている、とのこと。

OpenSocialではJavaScriptが先行して仕様決定されていっていますが、コンテナプロバイダはAjaxを受け付けるREST APIを作らないとRequestに対して応答を返すことが出来ません。そこでMySpaceの開発した仕様がMySpace REST APIでした。(当然、Orkutやhi5にもこれに類するものがありますが、仕様は未公開です。hi5はあったかな?)
MySpaceにはOpenSocialとは別にMyOpenSpaceという拡張があり、opensocialreference.jsとMyOpenSpace.jsとして区別されています。位置付けとしてはMyOpenSpaceがまずあり、それをラッピングする形でOpenSocialが存在する、と言った方が正確でしょう。OpenSocialは様々なSNSの持つAPIの最大公約数を取る形でデザインされているため、独自のAPIをラッピングすれば十分な訳です。確かにこれなら、他社SNSからアプリを持ってきたとしても、OpenSocialに対応したJavaScriptでさえあれば、互換性が保てますね。
また、RESTful APIについてはOpenSocial版が登場したときにどうするつもりか?という質問をしてみたのですが、「APIを増やすだけだよ」という回答。なるほど。そりゃそうだ。現行バージョンでアプリを開発した人向けに、古いバージョン用のAPIも残していくようです。
これで、以前から気になっていたMySpaceはまだ仕様が固まっていないはずのOpenSocial RESTful APIをどうやって実装したのか?という疑問が解決しました。
等々が既に存在する独自拡張で、最も利用されているのがフォトアルバム。確かにフォトアルバムはSNSによってあったりなかったりしつつも、使われそうな機能ですね。
また、個別送信可能なメッセージ機能は?と聞いたところ、今まさに開発中だそうです。(今見たら、OpenSocialにもうあるような、、、)他にも、音楽やコメディなど、様々な分野のAPIを作っていきたいとのことでした。
アプリ開発者はSandboxのアカウントを取得すればすぐに開発を始めることが出来ますが、実際にアプリを公開するためには審査を通る必要があります。審査はコードのレビューやリーガルチェック(著作権侵害等)を経て、だいたい24時間〜48時間で公開されますが、権利関係が微妙な場合はもっとかかることもあるとのこと。
聞きそびれてしまいましたが、アプリをXMLでリモートサーバーに置いた場合でも、一度アプリが審査を通過してしまうと、GoogleGadgetのようにそれ以降のサーバー上のXMLの変更は反映されないと思われます。
当然メインは広告収入になると思われますが、Facebookのようにある種のレコメンド広告で収益を得る方法もありえます。他にも、アプリ開発者に対して課金することで表示位置を優遇したり、といったことも考えられます。
今のところアプリ開発者は、自社サービスの会員獲得を目的としてアプリを提供するケースが多いようですが、キャンバスビューで全画面を使うことができますので、ここに好きなように広告を入れて収益を上げてよいとのこと。将来的にはアプリを使って物販や課金する方法の提供も検討しているとのことで、夢が広がります。
以前から疑問だったOpenSocialアプリケーションのSNS間の互換性について。実は自分の中では答えが出てたのですが一応聞いてみました。
まず、MySpace独自拡張の部分を利用しなければ、当然他のSNSに持って行っても使うことが出来ます。まあ、そりゃそうですよね。でも、viewやcssはサイトごとに切り替える必要があるはず。例えばOrkutではcanvas、profileという2つのviewしかありませんが、MySpaceにはhome,canvas,profile.left,profile.rightの4つが、hi5にはhomepage,canvas,profileという3つがあります。この時点で、うーん、ですね。
ただ、やり方として、コンテナのメソッドにアプリが動いているコンテナの名前を取得するAPIがあるので、それによって動作を切り替える方法もあるよ、と教えてもらいました。なるほど。
RESTful APIを使えば当然外部サイトでもアプリを使えるのですが、ここではGoogleGadgetのContent type=’html’をtype=’url’にできるか?という話です。
答えは、イエス。
当然、同じドメイン配下にプロキシを作って、OAuthでMySpaceのAPIを叩く仕組みを作らなければならない訳ですが、サーバー用ライブラリも用意(準備中?)されているそうです。
Facebookはアプリケーション機能公開後に急激な伸びを示した訳ですが、MySpaceについてはどうか?聞いてみたところ、今のところ目立って急激な伸びは見られないとのこと。サイト上にもあまり誘導を貼っていないことから、まだその段階に達していないとの判断と伺えます。今後APIがもっとしっかりしたものになってから、色々やるんでしょうね。メッセージ機能等による口コミにも期待しているそうです。
パーシステントAPIを使う際、文字列情報しか保存できないため、JSON形式でやりとりされます。その際文字列をエスケープしてから投げたり、受け取った際はアンエスケープする必要があるのですが、Orkutやhi5で使えたgadgets.util.escapeString()とgadgets.util.unescapeString()がMySpaceで使えなかったため質問してみました。
答えはescapeStringとunescapeStringはもう使われていないはずで、今はencodeURIComponentが推奨のはずだよ、とのこと。今OpenSocialの仕様を見てみたところ、まだgadgets.util.scapeString()もgadgets.util.unescapeString()も有効のようですが、、、。
以前作った友達紹介アプリのMySpaceバージョンを公開します。
http://devlab.agektmr.com/OpenSocial/MySpace/FriendIntroducer.xml
別の人がこのアプリを自分のSandboxアカウントに入れることができたか分かりませんが、参考になれば。MySpaceに2つアカウント作って試すところまではまだやっていないため、物好きな方はMySpaceの僕のアカウントに友達申請してください。
「escapeStringとunescapeStringがもう使われていない」というのは間違いではないか?の件について、当日教えてくれたTerrenceにメールで確認しました。
どうやら「escape」と言ったのを、一般的なJavaScriptのescapeと勘違いしたらしく、彼が言っていた「escapeはもう使われていない」というのは、そちらを指していたとのこと。確かに、今はescapeよりもencodeURIComponentを使うように推奨されてますね。
で、本題のgadgets.util.escpeStringとgadgets.util.unescapeStringについては、確かに、MySpaceでは実装されていないそうです。自分で解決するしかないみたい。
4 月 03 2008
最近話題のFriendFeedに対応したMac OS XのDashboardウィジェット、FriendFeeder(仮称)を作ったので公開します。まだいっぱい不具合あると思うんですが、とりあえず動いてるので勢いで。

FriendFeedはTechCrunch辺りで最近話題のウェブサービス。Twitterの次はコレと言われているものです。内容は一言で言うなら、SNSアグリゲータ。数多あるSNSをまとめあげるSNSといったところでしょうか。
SNSと言っても、FacebookのようなSNSそのものではなく、一般的なブログやTwitterやFlickr、Youtube、del.icio.us、Last.fmなど、SNSに類するサービスの最新情報をまとめる、ということに特化しています。エントリにコメントを付けたり、スター的な機能もあります。
ずばり、このサービスが明らかにTwitterの存在を意識し、その延長線上にあるためです。
Twitterは今や多くの人のデスクトップ常駐アプリ/サービスになりました(僕はTwitterBoardというDashboardウィジェットを愛用してます)。面白いのは、Twitterという味気ないインターフェースのサービスが、多くのディベロッパーによって開発されたアプリ群によりバラエティを増しているという現象です。FriendFeedの味気ないインターフェースと充実したAPIはTwitterをヒントに、それ以上のものを目指していると思わずにはいられません。
もう一つ、Twitterを意識していると思える点は、コメント機能です。FriendFeedではTwitter上でのReplyを並べ替えて、会話の流れを分かりやすく表示してくれます。また、FriendFeed上でのコメントを、そのままTwitterにUpdateするオプションがあります。
そういう意味ではSNSアグリゲータというよりはむしろ、Twitter+αと言った方が適切かもしれません。少なくとも個人的には、そういう使い方がメインになりそう。
これまでフィードアグリゲータといえばRSSリーダーだったわけですが、FriendFeedは単なるフィードアグリゲータではありません。それは認証認可を取り扱うからです。
通常RSSは一般公開されているものですので、特にプライバシーを気にする必要はありません。同じものを見る人が多数いることも想定されますから、キャッシュを用いることでかなりの効率化を図ることが出来ました。ところが、FriendFeedが扱う外部サービスにはGmailなど、認証を必要とするものも含まれます。これはつまり、ユーザーひとりにつき一回のフィードアクセスを要する、ということです。
これはTwitterの比ではない大仕事に思えます。ユーザーが増えれば増えるほど、どんどんしんどくなっていく。どんなアーキテクチャなんでしょうか?
Adobe AIRを使ったデスクトップアプリケーションがリリースされる予定とのこと。また、現在は規定されたサービスしか登録できませんが、サービス事業者が自らFriendFeedにAPIを作れる仕組みを用意するとか。
ユーザーインターフェースにバラエティがあって(API)、友達申請が気軽に出来る(Follow)という点を除いて、Facebookの方向性に近いのは偶然ではないでしょう。ソーシャルグラフの集約は既定路線ですが、どのパスを通って行くのが最も集客できるのか、興味深いところです。
ようやく本題です(笑)
ダウンロードはこちら
要Mac OS X 10.4.3以降のはず。
スクロールバーが出ないです!マウスホイール使ってください。
まずはFriendFeedでアカウントを取得してください。
ウィジェットの裏面(設定画面)で自分のIDとRemote Keyを入力します(パスワードではありません)。Remote Keyはhttp://friendfeed.com/remotekeyで取得できます。
今後コメント機能と、Twitter投稿機能の追加を検討しています。他にも何かあればこのエントリにコメントするか、Twitterで教えてください。
また、僕のFriendFeedアカウントはhttp://friendfeed.com/agektmrにありますので、Follow歓迎です。