ブラウザ間直接双方向通信とは何ぞ?

pdfにも書いているのですが、簡単につらつらと。そもそも、このお話自体はちょっと前にはてダでも実は書きました。

ブラウザというプラットフォームの為の基礎技術〜ブラウザ間通信〜 - Yet Another Ranha

実はこれは結構ネタでやったのですが、ちょと考えてみると色々と面白かったのでその後もポツポツと続けていて、そんな所に未踏ユースの話もあったので出してみたという感じです。


話を戻して。ブラウザ間直接双方向通信とは、ブラウザとブラウザで、直接お互いにデータのやり取りをするという事です。まんまですね。


コイツが出来ると何が嬉しいか・・・という話に成ると、Webブラウザをプラットフォームにする、という事を少し考えに入れなければ成りません。
Webブラウザをプラットフォーム(これはWebアプリケーションのプラットフォームという意味を大きくしめますが、それ以外でも問題は有りません)とするというのは、少し前までは、ダウンロードしてインストールして単なるネイティブなアプリケーションとして動かしていた様なプログラムがWebブラウザ上で動く様に成って来たという事を考えると想像が付き易いと思います。


また、それらが実際に台頭して来つつある例としては
http://journal.mycom.co.jp/news/2008/12/02/008/index.html
というWebブラウザを中心に考えるOS Cloud

それに、本当につい先日にリリースされたGoogle Native Clientがそうだと言えるでしょう。あれなんか通常のアプリケーションプラットフォームをWebブラウザに注入したっていう感じですね。
Issues - nativeclient - Native code for web apps - Monorail

Webブラウザをアプリケーションプラットフォームにすると何が嬉しいのか

私の考えとしては、エンドユーザがWebページにアクセスした次の瞬間、アプリケーションが動き始めるという事にあると思います。
このダイナミックな感じは、言い換えると次の様にも成ります。

何を言っているのか分からないと思うが、俺はWebページにアクセスしたと思ったら勝手にアプリケーションをrunしている事になっていた・・・。

気付かない所で、マシンリソースを提供する事が出来る・・・という事になりますね。


マシンリソースを提供すると何が嬉しいのか・・・という話ですが、ちょっと逆に考えてみて「マシンリソースが提供出来る様に成って来た。」と考えるべきだと思います。


以前"ブラウザというプラットフォームの為の基礎技術"にも書いたのですが、これはクライアントサイドスケーラブルっていうやつですね。
確かにサーバとして使うサーバマシンを強化していくというのも1つの手では有りますが、クライアントサイドのマシンも、案外安いにも関わらず中々なスペックに成ってきましたよねーという所に着目した感じの発想です。


で、マシンリソースを提供すると嬉しい様なタイプのアプリケーションていうのは、まぁ分散アプリケーション、特に広域分散に成ります。
なんでWebブラウザでやると嬉しいのかっていうのは、多くのエンドユーザは一々ダウンロードしてくれないって事ですね!!あの人達はインストールはしてくれないんだけど、空いているマシンリソースがある。それを利用出来ないかなーとかいう感じです。


後、私の考えている広域分散なソフトウェアっていうのは、誰しもが簡単に使い始める事が出来る・・・という事だと思うんです。その為にはちょうどWebブラウザが良いのではないか・・・という気がしてならないんですね。


おまけにNaClなんていうのが出て来て、おっググる先生も・・・なんていう事を考えていました。

なんでブラウザ間双方向通信が出来ると嬉しいの??

簡単に言うとP2Pが出来る様になるっていう事ですね。


機能別に分けられたWebページにアクセスした瞬間に、勝手にアプリケーションが走って分散システムを作ろうとする。広域分散な感じなので、ホスト同士で通信したい。
となると、必然的にブラウザ同士で、直接双方向で通信出来ると嬉しくなる訳です。


直接を強調したのは、擬似的に(グローバルIPを持つ)Relay Serverを立てて、そいつを介して双方向で通信する、という事をやればなんとか成るわけです。
が、そもそも直接通信出来るならばRelay Serverを立てる必要も無い、とそういう話になるわけですね。

そもそもこのテーマでやろうと思ったのは => 広域分散システム!

ブラウザの上で動く広域分散システム・・・という事でした。
エンドユーザが何かの機能を持たせたWebページにアクセスした瞬間、分散システムに加担する事に成る。


それはエンドユーザの知る所では無い・・・が事実として動いている。後でネタばらしか何かして・・・おお!こんな事に成っていたのか・・・!!という話に成るんですよね。


Plan9後継Infernoはまさにその側面を持っていると思います。実際に、InfernoはIEの上で動く様にもなっていますね。
http://www.vitanuova.com/inferno/plugin.html


こういう試みがこの先必要になってくるのではないか、なんて考えて、たまらなくなったのでやっぱりブラウザ間双方向通信だろうと。