Tender Surrender

百式の中の人がやっているIDEAxIDEAというブログで募集があった「OpenSocialとかどうよ?的な勉強会」に行ってきました。場所は汐留のMySpaceジャパンオフィス。本国からエンジニアが来日しているとのことで、聞きたいことリストを用意しての参加です。

MDPとOpenSocialの関係

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をどうやって実装したのか?という疑問が解決しました。

OpenSocialの拡張に当たる部分とは?

  • フォトアルバム
  • ヒーロー
  • 好みの映画

等々が既に存在する独自拡張で、最も利用されているのがフォトアルバム。確かにフォトアルバムはSNSによってあったりなかったりしつつも、使われそうな機能ですね。

また、個別送信可能なメッセージ機能は?と聞いたところ、今まさに開発中だそうです。(今見たら、OpenSocialにもうあるような、、、)他にも、音楽やコメディなど、様々な分野のAPIを作っていきたいとのことでした。

アプリケーションの登録について

アプリ開発者はSandboxのアカウントを取得すればすぐに開発を始めることが出来ますが、実際にアプリを公開するためには審査を通る必要があります。審査はコードのレビューやリーガルチェック(著作権侵害等)を経て、だいたい24時間〜48時間で公開されますが、権利関係が微妙な場合はもっとかかることもあるとのこと。

聞きそびれてしまいましたが、アプリをXMLでリモートサーバーに置いた場合でも、一度アプリが審査を通過してしまうと、GoogleGadgetのようにそれ以降のサーバー上のXMLの変更は反映されないと思われます。

メモ

  • Install Callback URL、Uninstall Callback URLはそれぞれ、ユーザーがアプリをインストール、アンインストールした直後にリダイレクトされるページのURLを指定できる。デフォルトはアプリのキャンバスページ。
  • OAuthの認可用にキーとシークレットが発行される。

マネタイズ

当然メインは広告収入になると思われますが、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がもっとしっかりしたものになってから、色々やるんでしょうね。メッセージ機能等による口コミにも期待しているそうです。

escapeStringとunescapeStringについて

パーシステントAPIを使う際、文字列情報しか保存できないため、JSON形式でやりとりされます。その際文字列をエスケープしてから投げたり、受け取った際はアンエスケープする必要があるのですが、Orkutやhi5で使えたgadgets.util.escapeString()とgadgets.util.unescapeString()がMySpaceで使えなかったため質問してみました。

答えはescapeStringとunescapeStringはもう使われていないはずで、今はencodeURIComponentが推奨のはずだよ、とのこと。今OpenSocialの仕様を見てみたところ、まだgadgets.util.scapeString()もgadgets.util.unescapeString()も有効のようですが、、、。

MySpace用のサンプルアプリ

以前作った友達紹介アプリのMySpaceバージョンを公開します。

http://devlab.agektmr.com/OpenSocial/MySpace/FriendIntroducer.xml

別の人がこのアプリを自分のSandboxアカウントに入れることができたか分かりませんが、参考になれば。MySpaceに2つアカウント作って試すところまではまだやっていないため、物好きな方はMySpaceの僕のアカウントに友達申請してください。

感想

  • MySpaceのエンジニアの方はAptanaを使う人が多いみたい。Javaアプリはもっさりしてて嫌いなので基本的に使わないのですが、もう一回チャレンジしてみようかな・・・。
  • 何が驚いたって、参加者10人中パソコン出した人が4人。その全員がMacBook Airユーザーだったこと!
    みんなリッチだなあ。 
  • Ozzieと写真撮ってもらった!
参加者の皆様、お疲れ様でした。

※追記(4/12)

「escapeStringとunescapeStringがもう使われていない」というのは間違いではないか?の件について、当日教えてくれたTerrenceにメールで確認しました。

どうやら「escape」と言ったのを、一般的なJavaScriptのescapeと勘違いしたらしく、彼が言っていた「escapeはもう使われていない」というのは、そちらを指していたとのこと。確かに、今はescapeよりもencodeURIComponentを使うように推奨されてますね。

で、本題のgadgets.util.escpeStringとgadgets.util.unescapeStringについては、確かに、MySpaceでは実装されていないそうです。自分で解決するしかないみたい。

Read on...

最近話題のFriendFeedに対応したMac OS XのDashboardウィジェット、FriendFeeder(仮称)を作ったので公開します。まだいっぱい不具合あると思うんですが、とりあえず動いてるので勢いで。

FriendFeedとは?

FriendFeedTechCrunch辺りで最近話題のウェブサービス。Twitterの次はコレと言われているものです。内容は一言で言うなら、SNSアグリゲータ。数多あるSNSをまとめあげるSNSといったところでしょうか。

SNSと言っても、FacebookのようなSNSそのものではなく、一般的なブログやTwitterやFlickr、Youtube、del.icio.us、Last.fmなど、SNSに類するサービスの最新情報をまとめる、ということに特化しています。エントリにコメントを付けたり、スター的な機能もあります。

なぜFriendFeedがアツいのか?

ずばり、このサービスが明らかにTwitterの存在を意識し、その延長線上にあるためです。

Twitterは今や多くの人のデスクトップ常駐アプリ/サービスになりました(僕はTwitterBoardというDashboardウィジェットを愛用してます)。面白いのは、Twitterという味気ないインターフェースのサービスが、多くのディベロッパーによって開発されたアプリ群によりバラエティを増しているという現象です。FriendFeedの味気ないインターフェースと充実したAPIはTwitterをヒントに、それ以上のものを目指していると思わずにはいられません。

もう一つ、Twitterを意識していると思える点は、コメント機能です。FriendFeedではTwitter上でのReplyを並べ替えて、会話の流れを分かりやすく表示してくれます。また、FriendFeed上でのコメントを、そのままTwitterにUpdateするオプションがあります。

そういう意味ではSNSアグリゲータというよりはむしろ、Twitter+αと言った方が適切かもしれません。少なくとも個人的には、そういう使い方がメインになりそう。

ただのフィードアグリゲータではない

これまでフィードアグリゲータといえばRSSリーダーだったわけですが、FriendFeedは単なるフィードアグリゲータではありません。それは認証認可を取り扱うからです。

通常RSSは一般公開されているものですので、特にプライバシーを気にする必要はありません。同じものを見る人が多数いることも想定されますから、キャッシュを用いることでかなりの効率化を図ることが出来ました。ところが、FriendFeedが扱う外部サービスにはGmailなど、認証を必要とするものも含まれます。これはつまり、ユーザーひとりにつき一回のフィードアクセスを要する、ということです。

これはTwitterの比ではない大仕事に思えます。ユーザーが増えれば増えるほど、どんどんしんどくなっていく。どんなアーキテクチャなんでしょうか?

FriendFeedの今後

Adobe AIRを使ったデスクトップアプリケーションがリリースされる予定とのこと。また、現在は規定されたサービスしか登録できませんが、サービス事業者が自らFriendFeedにAPIを作れる仕組みを用意するとか。

ユーザーインターフェースにバラエティがあって(API)、友達申請が気軽に出来る(Follow)という点を除いて、Facebookの方向性に近いのは偶然ではないでしょう。ソーシャルグラフの集約は既定路線ですが、どのパスを通って行くのが最も集客できるのか、興味深いところです。

FriendFeederのダウンロードと使い方

ようやく本題です(笑)

ダウンロードはこちら
要Mac OS X 10.4.3以降のはず。

既知の不具合

スクロールバーが出ないです!マウスホイール使ってください。

使い方

まずはFriendFeedでアカウントを取得してください。
ウィジェットの裏面(設定画面)で自分のIDとRemote Keyを入力します(パスワードではありません)。Remote Keyはhttp://friendfeed.com/remotekeyで取得できます。

フィードバック

今後コメント機能と、Twitter投稿機能の追加を検討しています。他にも何かあればこのエントリにコメントするか、Twitterで教えてください。

また、僕のFriendFeedアカウントはhttp://friendfeed.com/agektmrにありますので、Follow歓迎です。

Read on...

OrkutとMySpaceで自作アプリを動かしてみたので、そのレポートです。

まだ仕様が固まっていないのでグレーな部分も多いのですが、OpenSocialはGoogleGadgetと相性が良いらしく、OrkutもMySpaceも、hi5もGoogleGadget前提となっています。というわけで、今回はGoogleGadgetの基本的な作り方とOrkutへのアプリケーション追加方法の解説です。

ガジェットとは何か

GoogleGadgetはiGoogleで動くJavaScriptとHTMLで記述された簡単なアプリケーションです。JavaScriptとHTMLはXML上に埋め込み、設定内容もXMLに記述します。

< ?xml version="1.0" encoding="UTF-8" ?>
<module>
 <moduleprefs title="Blah Blah Gadget"
  description="Gadget Example"
  author_email="***@***.com"
 >
 </moduleprefs>
 <content type="html">
.....
 </content>
</module>

XMLはこんな感じ。Contentの中にJavaScriptとHTMLを記述することで、その内容がiGoogle上やMySpace等のOpenSocialアプリケーションとして表示されます。

ガジェットはJavaScriptを許可していることから、XSSなどの脆弱性を回避するため、iframeを使って別ドメインで動作するようになっています(iGoogleの場合、gmodules.com)。Contentの属性であるtypeを”html”から”url”に変更し、hrefでURL指定すると、iframe内に自分の管理するサーバーを表示することも可能です。

GoogleGadget自体の仕様は掘り下げるとキリがないのでこの辺りで。詳細はリファレンスをご覧ください。

OrkutのSandboxアカウントを取得する

OrkutはGoogle直結ということもあり、OpenSocialの仕様が最も早く反映されるようです。そのOrkutのOpenSocial実験環境はSandboxと呼ばれ、通常のOrkutアカウントを拡張したSandboxアカウントを取得することで、利用可能となります。

アカウントを取得するにはコチラから申請を行ってください。申請が受理されるまでには数日を要するようです。

OrkutにOpenSocialアプリを追加する

無事アカウントの取得ができたら、実際にアプリケーションを試すことができるようになります。ちなみに、どこかのサーバーにGoogleGadgetのXMLファイルを置いておく必要がありますので、Geocitiesでも何でもいいはずですので、ファイルをアップできるところを用意しておきましょう。

Orkut1

Sandboxにログインするとこんな感じ。一見通常のログイン画面と変わりませが、一点だけ:

Orkut2

画面左にアプリケーションを追加するリンクがあります。クリックすると・・・

Orkut3

URLでXMLファイルを指定してアプリケーションを追加することが出来ます。(ちなみにアプリケーションディレクトリはいつもほとんどアプリがありません)

ここでは、僕の作ったアプリケーションで試してみましょう。URLに下記を入力します:

http://devlab.agektmr.com/OpenSocial/FriendIntroducer.xml

「アプリケーションを追加」ボタンを押すと、次の画面に遷移します。

Orkut4

ここでも「アプリケーションを追加」ボタンを押すことで、アプリケーションの追加が完了します。

Orkut5

こんな感じの画面が表示されたら成功。Orkut上に友達がいない方は、僕のアカウントに友達申請してくれてもOKです。

ひとまず、第一回はここまで。

Read on...

先日Safari3.1から搭載されたオフライン機能について書きましたが、amachangさんが使い方を詳しく解説されています。

Safari 3.1 に実装された「Client-side database storage (SQL API)」とは何か? – IT戦記

詳しく読んでませんが、HTML5からの仕様らしく、既にFirefox3のβ版にも搭載されているとか。

これで、あんなことやこんなことができそうですね・・・

Read on...