Google Chrome OS考

Google Chrome OSが発表され、ニュースやブログで大きく取り上げられて話題になっている。まだ、詳細な内容は公表されていないが、どんなものが登場するのだろうかと、いろいろ妄想すると楽しくなる。

従来からいくつも登場し、そして消えていったWebOSとの基本的な違いは何であろうか?従来のWebOSは、一般のブラウザ上にHTML+JavaScript(+Flash)でデスクトップ風のGUIを提供している。HTML+JavaScriptでよくここまで作りこんだな、と関心することはあっても、日常のツールとして使ってみたいと思えるようなものにはお目にかかれていない。Googleから出てくるからには、これらのWebOSとは明らかに違う何かがあるのだろう。従来のWebOSは見かけはマルチウィンドウ/マルチタスクに見えても、ブラウザの中の一つのページで動作しているのだから、基本的にはシングルスレッドである。サーバへのアクセスにAjaxを使ったり、JavaScriptのタイマで分割処理することにより、ある程度擬似的に同時動作することはできても、限界がある。Chromeは各タブが1つのプロセスになっているから、それぞれのタブを1つのウィンドウ(ルートのデスクトップ)の中に表示してしまえば、正真正銘のマルチウィンドウ/マルチタスクになる。ウィンドウ間でのドラッグ&ドロップもクライアント側のAPIHTML5の仕様範囲で可能になるだろう。そして、なによりも、ShellやLinuxカーネルサービスがJavaScriptから利用できるようなものであることを期待したい。全体がHTMLとJavaScriptだけで構成され、シンプルで一貫したシステムは美しくもあり、技術的にも興味あるところである。

しかし、そのようなものは過去にも存在していた。JavaOSをベースにしたネットワーク端末である。OS自体の大部分をJavaで実装し、GUIもJavaで実装されたブラウザをベースに、アプリケーションはサーバからAppletとしてダウンロードして利用するシンクライアントである。アプリケーションのインストール不要、メンテナンス不要、軽量で簡単に使える端末であり、企業内イントラネットをターゲットとした製品であったが、ほとんど陽の目を見ずに終わっている。その頃と大きく時代は変わっており、技術も格段に進歩したが、基本的な考え方は同じだと思う。

JavaOSを搭載したネットワーク端末は何が問題であったか?一言で言えば、パフォーマンスの低さとアプリケーションの量と質である。シンクライアントであるから、コストを下げるためたいしたCPUは載せられない。その上、ネイティブアプリより重いJavaVMが走るのである。当時はまだJIT(Just-in-time compiler)が登場したばかりで、それほど高速化はされていなかった。アプリケーションもGUIはSwing登場前のAWTで実装するレベルであり、本格的に使えるようなものは少なかった。そして、Java自身の進化にJavaOSがついていけず、時代に取り残されたのである。

Chrome OSは軽量と謳っているが、いくらHTMLのレンダリングJavaScriptが高速化されていても、ネイティブに実装されたアプリケーションには、速度の面でもメモリフットプリントの面でもかなわないだろう。JavaScriptからOpenGLを利用できるO3Dは使えるようになるだろうが、高速になるのはグラフィックスだけである。それだけに、JavaScriptの高速化は重要である。また、ターゲットは仕事のほとんどをWeb上で行うような人、ということであるが、ブラウザ機能以外のツールにはどう対応するのだろうか。いろいろ批判はあっても、MSのWord, PowerPoint, Excel等(もちろんOpenOfficeでもよいが)は仕事をする上では必要であろう。Googleが提供するGmailやDocumentなどのオフィス系ツールがあっても、これらを機密情報を伴う仕事に使うのは向かない。企業内プライベートネット向けにサーバも必要であろう。当然ここには、Google Waveなどが含まれてくることが予想される。

従来から存在するものに対して、中身を替えて新しく作っただけでは、最初は興味を持たれるものの、ユーザはなかなか付いて来てくれない。Flashで書けば簡単でより高速に実現できるものを、HTML+JavaScriptだけで実装すると、驚きとともにクールと賞賛される。Flashは何でもできて当たり前で、HTML+JavaScriptは機能が低いので、そんなことはできないと思っていたという心理が働くのだろうか。Googleのエンジニアは、しばしば、車輪の再発明(Reinvent the wheel)ではなく、Re-implement the wheelという言い方をする。他からの借り物ではできないようなことが、自分たちが作ったものでやれば、自由に、そしてよりエレガントに再構築できるのは確かである。Googleにとって、FlashWindowsなどは邪悪なものであり、それらに依存していることが我慢できない屈辱なのであろう。

Google Chrome OSが成功するためには、HTML5の成功が鍵となる。HTML5W3Cから勧告されるのは2012年とも言われているが、Google Chrome OSの基礎は明らかにHTML5である。CanvasやVideoタグといったもの以外に、WebSocketやWebWorkerなどが重要になる。これまで、誰も実現できなかった、どんなパラダイムシフトを起こしてくれるのか、非常に楽しみである。