「むすび」に費やした大学院の1年間
昨年の12月ごろ、つまりちょうど1年前に、XMPPとFirefox拡張の勉強を始めました。正月はずっとFirefox3 Hacksを読んでいました。
Firefox 3 Hacks ―Mozillaテクノロジ徹底活用テクニック
- 作者: 江村秀之,池田譲治,下田洋志,松澤太郎,dynamis
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/08/27
- メディア: 単行本(ソフトカバー)
- 購入: 4人 クリック: 489回
- この商品を含むブログ (54件) を見る
今年の5月15日に、構想をまとめて、2009年度上期未踏本体クリエータに応募したPDFです。結果は落選でしたが、めげずに実装を行いました。
7月4日にShibuya.lisp TT#3で途中経過を発表しました。
9月17日にJSSST第26回大会で登壇発表したときのスライドです。初めての論文投稿、発表で緊張しました。
11月20日、バージョン1.0をリリース。
12月7日に修士論文の中間報告としてプレゼンをしました。
学生生活の締めくくりとして1年間かけて、自分で構想から実装、公開までこぎつけることができて、満足しています。
ご指導いただいているジャック・ガリグ先生にも、とても感謝しています。
むすびのチャットとチェスがGoogleガジェットになりました
※むすびが必要です。
むすびを使って、このページを開いてから、ブラウザのブックマークから遊びたい相手を選んでください。
それでブラウザのアドレスバーがこのようなxmpp URIになっていればOKです。
romeoとjulietが遊ぶURI xmpp://romeo@gmail.com/Musubi/juliet@gmail.com#http://d.hatena.ne.jp/Gemma/20091206/1260094125
- 私と遊ぶリンクは xmpp:teruakigemma@gmail.com#http://d.hatena.ne.jp/Gemma/20091206/1260094125
むすび v1.1.0でTwitterをリダイレクション、パイプしよう!
むすびがバージョンアップして、リダイレクションとパイプ機能がつきました。
さて、WWW、特にURIは、世界規模のファイルシステムを実現しました。
しかし、今のWebには、ファイルとして表現できないものが生まれています。
それは、Twitterなどからリアルタイムに流れてくるメッセージのストリームです。
ところで、Unixでは、行指向のテキストストリームを扱うために、リダイレクションやパイプといった便利な機能があります。
catやgrepってすごく便利ですよね。
そこで、むすびでも、メッセージ指向のXMLストリームを扱うために、それらを真似してみました。
これで、例えばTwitterなどからのメッセージをcatして、
grep.htmlに通ったものだけ読むといったことが簡単にできるようになります。
従来は以下のxmpp URIでロードしたページは、juliet@localhostにしかメッセージできませんでした。
xmpp://romeo@localhost/Musubi/juliet@localhost#http://musubi.im/chat/
これからはリダイレクションとして、chan/0にもメッセージできます。
chanはチャンネルの略です。0はチャンネル名で、好きな名前を付けられます。
ページのスクリプトで、例えばこのようにしてください。
Musubi.send(<message to="chan/0">
<body>このメッセージはchan/0にリダイレクションします</body>
</message>);
catするには、複数のページから1つのチャンネルにリダイレクションするわけです。
chan/0にリダイレクションしたメッセージは、以下のようなxmpp URIに届きます。
xmpp://romeo@localhost/Musubi/chan/0
xmpp://chan/0/juliet@localhost
xmpp://chan/0/chan/foobar
ちなみに、ちょっとまぎらわしいですが、以下のURIにはjuliet@localhostやchan/foobarからのメッセージは届きません。
パイプは以下のようにします。chan/0 -> alice@localhost の向きのパイプです。
例えばgrepするページを挟むとよいでしょう。
xmpp://chan/0/alice@localhost#http://musubi.im/grep/
リダイレクションするページ
パイプの例: grepするページ
まとめ
julietからのloveを含むメッセージをaliceに転送します。
xmpp://romeo@localhost/Musubi/juliet@localhost#http://musubi.im/rdr/ (julietのメッセージをchan/0にリダイレクション) xmpp://chan/0/alice@localhost/#http://musubi.im/grep/ (パイプでgrepしてaliceへ)
Unixのシェルコマンドと見比べてみてください。
romeo$ <juliet > chan/0 romeo$ <chan/0 grep love > alice
「むすび」でリアルタイム・ウェブなお買い物ページを作ってみた
ロビン・ミルナー△
対話するWebというと、マルチエージェント、アクターモデル、並行計算、も気になるので、
ロビン・ミルナーの本をちょっとかじってみる。
Communicating and Mobile Systems: The Pi-Calculus
- 作者: Robin Milner
- 出版社/メーカー: Cambridge University Press
- 発売日: 1999/06/15
- メディア: ペーパーバック
- 購入: 2人 クリック: 29回
- この商品を含むブログ (6件) を見る
まだ全然理解できてないけど、巻末の言葉に感動したので訳してみる。
At the present time we cannot expect a theoretical model such as that which is provided by this book to be definitive; the new developments are too immature for that. But as we seriously address the problem of modelling mobile communicating systems we get a sense of completing a model which was previously incomplete; for we can now begin to describe what goes on outside a computer in the same terms as what goes on inside - i.e. in terms of interaction. Turning this observation inside-out, we may say that we inhabit a global computer, an informatic world which demand to be understood just as fundamentally as physicists understand the material world.
現時点では、本書が提示するような理論モデルが決定的なものになるかはわからない。それには新しい展開が未成熟にすぎる。しかし、モバイル通信システムをモデル化する問題に真剣に取り組み、不完全であった既存のモデルをより精密なものにできたと思う。それにより、コンピュータが外に何を発しているか、を、内で何を行っているか、と同じ言葉で語れるようになった - すなわち、相互作用という言葉で。この裏返した観点は、我々のグローバルコンピュータ、情報世界の、真髄を知ることと言えるのかもしれない。ちょうど物理学者にとっての物質世界のように。
コンピュータが内で何を行っているか、から、コンピュータが外に何を発しているか、へ。
アラン・ケイの、コンピュータはメタメディアだ、にもつながりそう。
情報世界と、物質世界での原子の相互作用との関わりは、石井裕のRadical Atomsにもつながるかも。
Musubi開発の経緯
ここ5年くらい、いくつかのWebサービスを組み合わせて新しいものを作るという、マッシュアップがさかんです。
私も、クラウドでLinuxディストリビューションにあたるものは何になるだろう?にあるようなことを夢想していました。
Webサービス同士の糊になるのは何だろう? と悩んでいたある日、先生と四色定理の話をしていて、問題をグラフに置き換えるというアイディアを教えてもらいました。
見方が変われば発想も変わり、私の中に、糊(境界)ではなく対話(辺)という発想が生まれました。
Webサービス同士が対話する。あるいは、人とWebサービス、人と人、が対話する。
それなら、人とWebが対話するとは何だろう。
人とOSが対話するときに使うのは、対話的シェルです。
テキストシェルを、ブラウザ上でハイパーテキストシェルなWebアプリケーションとして実現するために必要なのは何か。
こうして、ブラウザとIMとの融合という考えに至りました。
セマンティック・ウェブは、コンピュータがWebを理解できるようにXMLで記述するという理想です。お互いを理解するのに必要なのは対話ではないでしょうか。そしてXMPPは、まさにそのXMLに基づいたIMプロトコルです。だから多分、方向性は正しいと思います。
Firefoxと融合するインスタントメッセンジャー「Musubi」をリリースしました
Google Waveは、電子メールを置き換える可能性を秘めたWebサービスと言われています。
Musubiは、インスタントメッセージ(IM)を置き換える可能性を秘めたFirefoxアドオンです。
- リアルタイムWebコミュニケーター「Musubi」 1.0.0
- Google Talk(Jabber, XMPP)用のインスタントメッセンジャーです。
- インストール方法はMusubi Wikiにあります。
- 使い方はユーザーガイドにあります。
このアドオンで目指したのは、ブラウザとIMの融合です。
それは、Webアプリケーションに、HTTPを越えた更なる力、IMによるリアルタイム性を与えることです。
HTTPは、必要なときだけサーバに接続するので、更新があってもこちらからリクエストするまでわかりません。BBSやTwitterを何度もリロードするのはそのためです。
逆に、IMが使うXMPPは、サーバと接続を保って相互にやりとりするので、更新があればリアルタイムにメッセージが飛んできます。もうリロードはいりません。
Musubiでは、Webアプリケーションが自由にメッセージの内容を操作できるので、例えば以下のようなものが作れます。
続きを読む