Firefoxと融合するインスタントメッセンジャー「Musubi」をリリースしました

Google Waveは、電子メールを置き換える可能性を秘めたWebサービスと言われています。
Musubiは、インスタントメッセージ(IM)を置き換える可能性を秘めたFirefoxアドオンです。

このアドオンで目指したのは、ブラウザとIMの融合です。
それは、Webアプリケーションに、HTTPを越えた更なる力、IMによるリアルタイム性を与えることです。

HTTPは、必要なときだけサーバに接続するので、更新があってもこちらからリクエストするまでわかりません。BBSやTwitterを何度もリロードするのはそのためです。

逆に、IMが使うXMPPは、サーバと接続を保って相互にやりとりするので、更新があればリアルタイムにメッセージが飛んできます。もうリロードはいりません。

Musubiでは、Webアプリケーションが自由にメッセージの内容を操作できるので、例えば以下のようなものが作れます。

チャット

  • テキストをメッセージ

おえかきチャット

  • 画像データをメッセージ

http://eva-lu-ator.net/~gemma/geocities/musubi/whiteboard.png

チェス

  • 棋譜データをメッセージ

http://eva-lu-ator.net/~gemma/geocities/musubi/chess.png

IMに似ているTwitterでいうと、例えば、Twitterでみんなとチェスをするというのは可能なわけです。
チェスの盤面は8x8の64文字で、140文字の制限に納まるから、みんなで棋譜データをつぶやけばいい。
だけど、Twitterを何度もリロードしなくちゃいけないし、棋譜データの解読が面倒くさいから何かWebアプリケーションが必要になる。
そこで、ブラウザとIMの融合が必要になってきます。

WWWは、3つの柱からなります。URI、HTTP、HTMLです。そこにIMがどう融合するか。

xmpp: URI

Musubiでは、新しくxmpp:というURIを定義しました。

人にリンクを張る(ブックマークすると、Twitterでいうフォローになるようにしてある)。
xmpp:teruakigemma@gmail.com
その人とチャットをするリンク
xmpp:teruakigemma@gmail.com#http://musubi.im/chat/
ジュリエットがロミオとチャットをするURI
xmpp://juliet@localhost/Musubi/romeo@localhost#http://musubi.im/chat/

HTTPとXMPP

http://eva-lu-ator.net/~gemma/geocities/musubi/archi.png
HTTPと別に、XMPPサーバとの接続を持ちます。
HTTPで静的なデータを、XMPPで動的なメッセージを、と住み分けることができます。
Google Waveは、Comet(HTTP long-polling)という技術で、HTTPの上でリアルタイム性を実現していますが、
スケーラビリティに不安があります。HTTPで無理をせず、専用に設計されたXMPPを使うのがMusubiです。

HTML

さきほど紹介したチェスなどは、誰でもHTMLとJavascriptで簡単に作れます。
musubi.jsを読み込んで、関数を2つ覚えるだけです!

// 初期化(メッセージを処理するrecv関数を渡す)
Musubi.init(recv);
// メッセージを送る。こんにちはこんにちは!
Musubi.send(<message><body>こんにちはこんにちは!</body></message>);

弱点

Firefoxに依存することと、Google Talkがあまり使われていないことです。