インターネットOSとしてのGoogle Wave

http://eva-lu-ator.net/~gemma/geocities/wave/astro0.jpg
みなさんこんにちは!私はアーキテクチャ宇宙飛行士です。
今日はみなさんを、インターネットOSの旅へとご案内しましょう!

インターネットOSとは

ティム曰く:

次第に我々はウェブサービスの荒野が変わるのを目の当たりにするだろう。開拓段階である第一段階は、スクリーンスクレイピングやバックエンドがデータベースのウェブサイトへの「無許可の」専用インターフェースを特徴とする。第二段階になると、ウェブサイト自身がより効率的で、XML ベースの API を提供するようになる(今これが起こり始めている)。第三段階になると、単一のベンダ(あるいは少数の競合ベンダ)が、インターネットをプログラム呼び出し可能なコンポーネントの膨大なコレクションに変え、それらのコンポーネントを、非技術系の人たちに毎日利用されるアプリケーションに統合する包括的な一連の API を提供することで、個々のサービスの寄せ集めが実際のオペレーティングシステムのレイヤーに統合されることになる。

from クラウドでLinuxディストリビューションにあたるものは何になるだろう?

2010年アーキテクチャ宇宙の旅

  • 地上

人々が互いにワープロのドキュメントを送り合っていたり、互いにスプレッドシートを送り合っていたりする。
http://eva-lu-ator.net/~gemma/geocities/wave/astro.jpg

  • レベル1

そこに「ファイルを送る」という一般的なパターンがあることに気づく。

  • レベル2

人々がファイルを送るように、WebブラウザもまたWebページの要求を「送る」

  • レベル3

オブジェクトのメソッドを呼び出すのもまた、オブジェクトにメッセージを送るようなものだ!また同じパターンが見つかった!

  • 宇宙

すべてはメッセージング・・・宇宙からは、地上のすべてがすっきり見通せるのだ!

http://eva-lu-ator.net/~gemma/geocities/wave/archi.png

惑星Plan9: すべてはファイル

Plan9は、Unixの設計の問題点を改善するためにベル研で開発された新しいOSです。
Unixは、「すべてはバイト列ファイルの読み書き」という設計思想です。
バイスやソケットもファイルとして抽象化し、さらに、Webサービスファイルシステムに抽象化できます。(GMailFSはてなダイアリーFS

Plan9は死んだ。何故だ!?

・・・バイト列だからさ。
インターネットOSとしては、「すべてはXMLファイルの読み書き」という設計思想が必要だったと私は思います。

惑星Web2.0: すべてはWebページリクエス

マッシュアップ, Web API, REST, SOAP, Atom Pub, etc. 上で引用したティムの言葉で"第二段階"です。

さて、"第三段階"へ行く前に少しブラウザの話を。

ブラウザがこの先生きのこるには:半分満たされたコップ?半分空のコップ?

http://eva-lu-ator.net/~gemma/geocities/wave/glass.jpg

どんな形にせよ、ブラウザはインターネットOSのシェルになるのは間違いありません。
ただ、Unixのシェルにあってブラウザに無いものがあります。対話性です。

対話性とは、双方向性、つまりプル&プッシュです。
ブラウザには「プルがある」。これが、「プルしかない」に認識が変わりつつあります。

例えば、Unixの対話的シェルでバッチ処理を実行すると結果がでたら返ってきますが、
ブラウザだと5秒毎にリロードとかが必要になります。
(Cometでプル&プッシュが実現しましたが、これはハックです。)

ブラウザが対話的シェルになるには、プル&プッシュが必要なのは確定的に明らかです。

惑星Google Wave: すべてはXMLメッセージ

Google Waveは、ブラウザにXMPPというメッセージングのプロトコルを組み込むことで、この問題にチャレンジしています。

http://eva-lu-ator.net/~gemma/geocities/wave/xmpp0.png

また、Google Waveには「すべてはXMLメッセージ」という設計思想があるように見えます。
これが「現在の技術でメールを置き換えるとしたら」という発言の意図ではないでしょうか。

それから、Google Waveでは、Webページが互いにメッセージする。つまり、これは「エージェント指向」です。
そして、エージェント同士がお互いのメッセージの意味を解釈するための仕組みは、いわゆるセマンティックWebです。

http://eva-lu-ator.net/~gemma/geocities/wave/xmpp.png

系外惑星Hop: すべてはクロージャ

INRIA大で開発されたHopは、「Web2.0のためのプログラミング言語」です。

例えば、”現在の日付を返すWebサービス”へのAjaxを、以下のように記述できます。

(define-service (server-date)
    (current-date))
 
 (<HTML>
   (<BUTTON>
      :onclick ~(with-hop ($server-date) (lambda (h) (alert h)))
       "Server time"))

つまり、Webページリクエストを、クロージャの関数適用のように扱える言語です。