インターネットOSとしてのGoogle Wave
みなさんこんにちは!私はアーキテクチャ宇宙飛行士です。
今日はみなさんを、インターネットOSの旅へとご案内しましょう!
インターネットOSとは
ティム曰く:
次第に我々はウェブサービスの荒野が変わるのを目の当たりにするだろう。開拓段階である第一段階は、スクリーンスクレイピングやバックエンドがデータベースのウェブサイトへの「無許可の」専用インターフェースを特徴とする。第二段階になると、ウェブサイト自身がより効率的で、XML ベースの API を提供するようになる(今これが起こり始めている)。第三段階になると、単一のベンダ(あるいは少数の競合ベンダ)が、インターネットをプログラム呼び出し可能なコンポーネントの膨大なコレクションに変え、それらのコンポーネントを、非技術系の人たちに毎日利用されるアプリケーションに統合する包括的な一連の API を提供することで、個々のサービスの寄せ集めが実際のオペレーティングシステムのレイヤーに統合されることになる。
2010年アーキテクチャ宇宙の旅
- 地上
人々が互いにワープロのドキュメントを送り合っていたり、互いにスプレッドシートを送り合っていたりする。
- レベル1
そこに「ファイルを送る」という一般的なパターンがあることに気づく。
- レベル2
人々がファイルを送るように、WebブラウザもまたWebページの要求を「送る」。
- レベル3
オブジェクトのメソッドを呼び出すのもまた、オブジェクトにメッセージを送るようなものだ!また同じパターンが見つかった!
- 宇宙
すべてはメッセージング・・・宇宙からは、地上のすべてがすっきり見通せるのだ!
惑星Plan9: すべてはファイル
Plan9は、Unixの設計の問題点を改善するためにベル研で開発された新しいOSです。
Unixは、「すべてはバイト列ファイルの読み書き」という設計思想です。
デバイスやソケットもファイルとして抽象化し、さらに、Webサービスもファイルシステムに抽象化できます。(GMailFS、はてなダイアリーFS)
惑星Web2.0: すべてはWebページリクエスト
マッシュアップ, Web API, REST, SOAP, Atom Pub, etc. 上で引用したティムの言葉で"第二段階"です。
さて、"第三段階"へ行く前に少しブラウザの話を。
ブラウザがこの先生きのこるには:半分満たされたコップ?半分空のコップ?
どんな形にせよ、ブラウザはインターネットOSのシェルになるのは間違いありません。
ただ、Unixのシェルにあってブラウザに無いものがあります。対話性です。
対話性とは、双方向性、つまりプル&プッシュです。
ブラウザには「プルがある」。これが、「プルしかない」に認識が変わりつつあります。
例えば、Unixの対話的シェルでバッチ処理を実行すると結果がでたら返ってきますが、
ブラウザだと5秒毎にリロードとかが必要になります。
(Cometでプル&プッシュが実現しましたが、これはハックです。)
ブラウザが対話的シェルになるには、プル&プッシュが必要なのは確定的に明らかです。
惑星Google Wave: すべてはXMLメッセージ
Google Waveは、ブラウザにXMPPというメッセージングのプロトコルを組み込むことで、この問題にチャレンジしています。
また、Google Waveには「すべてはXMLメッセージ」という設計思想があるように見えます。
これが「現在の技術でメールを置き換えるとしたら」という発言の意図ではないでしょうか。
それから、Google Waveでは、Webページが互いにメッセージする。つまり、これは「エージェント指向」です。
そして、エージェント同士がお互いのメッセージの意味を解釈するための仕組みは、いわゆる「セマンティックWeb」です。
系外惑星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"))
まとめ
アーキテクチャ宇宙飛行士と行くインターネットOSの旅、いかがでしたか?
エージェント指向や、セマンティックWebは、長らく研究者たちの夢でした。Google Waveが実現する未来が楽しみです。
参考文献
- Joel on Software 第14章, アーキテクチャ宇宙飛行士たちに脅かされるな
- クラウドでLinuxディストリビューションにあたるものは何になるだろう?
- XMPPはクラウドサービスの将来像か?
- 開発チームが明かす、Google Waveの実装概要 - @IT
- 【詳報】Google Waveとは何なのか? - @IT
- Linuxに勝てなかったPlan 9 - @IT
- Plan9:Unixとの違い
- やたーはてなダイアリーファイルシステムできたよ\(^o^)/
- ブラウザを越えて
- Hop, a Language for Programming the Web 2.0
- Tim Berners-Lee, Weaving the Web