ちょっと硬派なコンピュータフリークのBlogです。

カスタム検索

2009-07-15

Chrome OSアーキテクチャ大予想!

Chrome OSが出るぞ!というニュースを聞いたとき、ある種の衝撃が走った。というよりとても腑に落ちたと言った方がより正確に俺の心情を表しているかも知れない。そう、まるで心の鍵穴にChrome OS発表のニュースが鍵となって、今まで開くことが出来なかった心の奥底にある謎の扉を開いたような感覚だった。世間的には「ChromeブラウザがのっかったLinuxの1ディストリビューション」だという見方が趨勢であるように思うが、俺はChrome OSが断じてそのような安易で在り来たりなものとして登場するのではないと予感している。そしてまだ見ぬChrome OSにワクワクしながら、そのアーキテクチャを想像してニヤニヤしたりしているのである。まだChrome OSのアーキテクチャについては詳細が公表されていないが、以下のようなものになるんじゃーないだろうか。

この図はあくまでも個人的な予想というか妄想によるものなのでその点は了承して欲しい。公式にGoogleからChrome OSの詳細が発表されたとき「全然違うじゃないか!」となったら、笑いぐさにでもして頂ければ幸いである。



さて、この図(俺の心の中で想像しているChrome OSのアーキテクチャ)を解説しよう。

1. UIはChromeのみ。


一つ確信していることがある。それは、Chrome OSにおいてユーザーが触れることができるUIはChromeブラウザだけになるだろうということだ。Linuxだからといって、UNIXユーザーが慣れ親しんだシェルが搭載されることはないだろう。ギークなユーザーにとっては「なにー?!そんなものはLinuxではない!言語道断!!」と激高してしまう仕様かも知れないが、そもそもChrome OSはそのようなギークをターゲットにしていないだろうと思われる。全ての操作はChromeを通じて行われることになるだろう。

2. Webサーバを搭載

上記の仮説が正しければ、Chrome OSにはWebサーバが搭載されるはずである。lighttpdやApacheのような。何故かって?それは、そのコンピュータ自身を操作するためである。おそらくはコンピュータの電源を切る操作すら、ブラウザを通じて行うことになるだろうが、その場合ブラウザでクリックした操作を誰が実際に実行するのかと言えば、HTTPリクエストを処理するWebサーバーでなければいけない。コンピュータの管理や設定は、そのWebサーバー上で動くアプリケーションとして実装されることになるだろう。

3. ユーザーアプリケーションはサーバープログラム

Chrome OSはGoogleのサービスやその他Web上にあるリソースを活用するOSであるのは言うまでもない。しかし本当に全ての処理(電卓アプリのようなネットを一切必要としない)アプリケーションまで、Googleのクラウド上で実行するとしたらそれは愚かなことであり、Googleのデータセンターは大量のリクエストによって飽和してしまうことになるだろう。従って、いくらブラウザだけで操作するChrome OSとて、ローカルにアプリケーションが一切必要ないというわけではないだろう。そうすると、アプリケーションはJavascriptによって実装されるか、ローカルのWebサーバー上でWebアプリとして実装されることになるのではないだろうか。今、巷にはWebアプリを得意とするプログラマが溢れているので、彼らはきっとChrome OS用アプリの開発も活発に行ってくれるに違いない。

4. ファイル管理からの解放

おそらくここがChrome OSの最も革新的な側面になると思われるが、Chromeブラウザから自身のコンピュータ上の「ファイル」へアクセスする手段はないだろう。WindowsのExplorerのようなファイルマネージャーっぽいアプリケーションは、おそらく存在しない。そもそもであるが、静止画像や動画、音声、プレゼンテーション、文書、テキストなどの各種データを「ファイル名」で識別して、それをツリー状のファイルシステムで管理するというやり方は如何にも古典的であり、本来の人間の要求であるはずの「データを整理し、確実に保存し、必要なときに素早く検索する」ということからはかけ離れた方法であると言えよう。その代わり、Chrome OSではデータは全てデータベースへ格納され、Webサーバー上で動くアプリケーションがデータベースからの検索や保存を肩代わりしてくれることだろう。その結果、人間は「ファイル名と中身を紐付けて覚える」という無駄な行為から解放されることになる。

ここで一つ疑問が生じる。Chromeがデータベースを搭載するとしたら、どのデータベースソフトウェアを搭載するのだろうか?ということだ。これまでにGoogleがsqliteを(AndroidやGoogle Gearsなどで)採用してきたことを考えると、sqliteのような気がしなくもない。しかし、もし上記のような使い方を本気で考えるのであれば、sqliteではスケーラビリティの問題に直面することが容易に予測できる。そうするとやはり、MySQLやPostgreSQLのように大規模なデータを扱えるRDBMSを搭載して欲しいところであり、MySQLerとしてはぜひMySQLを薦めたい。もし、MySQLのライセンスがGPLv2であることがFOSS Exceptionを適用するといいだろう。そうすれば、GPLv2であるMySQLを搭載しつつ、Chrome OS全体のライセンスを例えばApache 2.0ライセンスにすることができる。

5. 強固なセキュリティ

Chrome OSでは恐らくユーザーが直接コマンドを実行することはないし、システム的にそれは出来なくなっているだろう。実際、ユーザーが起動することができるプログラムは何もなくても良い。もちろんブラウザプロセスでさえ。じゃあ誰がブラウザを起動するんだ?!と思うかも知れないが、起動するプログラムがブラウザだけで良いならば、Chrome OS自身が事前にブラウザのプロセスを起動しておけば良い。そうすれば、Chromeブラウザの実行ファイルの所有者をrootにすることによってrootだけがコマンドを実行可能に出来るように出来るし、rootが起動したChromeブラウザのプロセスは、自身が起動後にsetuid()をして実効ユーザーを切り替えれば良い。このようにすれば、ユーザー自身の手によってブラウザを起動せずともブラウザを利用することが可能になるわけである。

極端に言えば一般ユーザーは通常ファイルへのアクセス権限が一切なくても良い。(ただしブラウザはバックグランドで動くプロセスにはアクセスするかも知れない。)この場合、ブラウザがバッファオーバーフローなどによっていくらクラッキングの被害にあったとしても、クラッカーが実行出来るコマンドは存在しないので被害は最小限にとどめることが出来るだろう。クラッカーが何か悪事を働くには、さらにそこからroot権限を奪取するか、Chromeを操ってローカルのWebサーバーで動くアプリケーションにアクセスするように仕向けるかである。だが、そのような場合もローカルのWebサーバーで不正なアクセスをブロックする仕組みを実装しておけば、いくらChromeブラウザを乗っ取ったところでクラッカーは何もすることが出来ないだろう。(せいぜい他の悪事を働くための踏み台=ボットとして利用する程度であろう。)

このように、実行可能なコマンドが存在しなければ「ウィルススキャン」という煩わしい行為から解放されることになる。なぜなら、スキャンする対象の「プログラムファイル」が一切存在しないから。

・・・


このような「Chrome OS」が本当に実装されれば、確かにGoogleが言うように「OSの再考」であると言えるだろう。こんな具合に俺の妄想は広がっているわけであるが、果たしてこの予想はどれほど当たっているのだろうか?一つだけ言える事は、もし俺の予想が当たっていたら、俺は確実にChrome OSのファンになるだろうということである。

2 コメント:

hito さんのコメント...

なかなか興味深い大胆な予想ですが、いったいどうやって、そのOS上で、「ローカルのWebサーバー上でWebアプリ」なるものをプログラミングするのでしょうか。
PerlやPythonならできるかもしれません。ではCやC++といったネイティブコード(あるいはJavaのような中間言語でも可)を吐く言語はどうするのでしょうか。
Chrome上に実装されたエディタでコーディングして、コンパイルして、デバッグするのは、果たして万人に受け入れられるでしょうか。

それとも、そのような言語の開発は、別のOSで行い、完成品を予想したOSに持ってくるのでしょうか。

あるいは、そもそもC/C++のような言語は、元から一般ユーザーに予想したOS上で使わせることを想定していないのでしょうか。

Mikiya Okuno さんのコメント...

hitoさん、

コメントありがとうございます。

ご意見に対してですが、

> それとも、そのような言語の開発は、別のOSで行い、完成品を予想したOSに持ってくるのでしょうか。

これが最も私の予想に近いですね。恐らく開発環境としては適さないものになる可能性が高いと考えています。ローカルのWebサーバー上にインストールして動かす必要があるので、少なくともApacheモジュールのようにリンクしないといけないものにはならないでしょう。(セキュリティの懸念もありますし。)そうすると、予めコンパイルした実行ファイルをインストールするか、スクリプト系の言語で記述されたものをインストールするかだと思います。ただし、スクリプトならChrome OS上でも編集できるかも知れません。

私の考えでは、Chrome OSは別に開発者に受ける・・・もっと正確に言うと開発用途に利用出来る必要はないと思っています。開発には既存のマシンが有効ですから。

まあ、まだ現物に関する情報が出てきていないので、あくまでも全ては想像上の話なんですけどね ;)

コメントを投稿