2008.04.10
Google App Engine - これこそ「Google OS」だ
Google App Engine
http://code.google.com/appengine/

すでにあちこちで騒がれているGoogle App Engine。
PythonでWebアプリケーションを書けば、すぐに設置して動かせる環境を提供するものだ。

<Google App Engine enables you to build web applications on the same scalable systems that power Google applications.>

(大意:Google App Engineを使えば、Googleのアプリケーションで用いられているのと同じスケーラブルなシステムを用いて、Webアプリケーションを作ることができます。)

この「環境」には、Pythonの実行環境、Python標準ライブラリの大部分に加えて、(PythonのWeb技術である)WSGI、DjangoなどをベースにしたGoogle独自のフレームワークが入っている。そのAPIを通じて、Google自身が使っているBigTableやGoogleのアカウント情報などにもアクセスできる。

Google App Engine - Developer's Guide
http://code.google.com/appengine/docs/

この開発者向けガイドを見れば、Pythonのエンジニアでなくても、IT技術者であれば、Google App Engineで何ができるのかが大体わかるだろう。

Google App Engineは、アプリケーションのホスティングという観点のみで見れば、AmazonのEC2などの競合と見ることもできるかもしれない。しかし上記のような全体像を見れば、これはホスティングサービスというよりも、「Webアプリケーション環境」以外の何ものでもない。

つまりこれは、RailsDjangoなどの「Webアプリケーションフレームワーク」に近いものだ。ただし、それがRailsやDjangoのようにオープンソース・ソフトウェアとして提供されているのではなく、ホスティング環境と一体のものとして提供されているところが新しい。

Googleは自社のサービス開発や内部システムなどで、Pythonを多く用いていることは以前から知られていた。しかし、このGoogle App Engineの充実した仕組みから推測するに、ここ2~3年くらいでGoogleから出てきたサービスは大部分、単にPythonで書かれているだけでなく、ほぼこれと同じ仕組みでできているのではないだろうか。

つまりGoogle App Engineとは、公開用に多少手直ししてはいるものの、基本的にはGoogleの自社用フレームワークであり、アプリケーション環境なのだという気がする。

High Scalability」というブログで、Google App Engineについて鋭い分析が書かれている。

Google AppEngine - A First Look
http://highscalability.com/google-appengine-first-look

公式チュートリアルのサンプルコードを使った解説なども含む長いエントリだが、以下のような記述は注目に値する。

<The model is pure abstraction. The implementation is pure pragmatism. Your application exists in the cloud and is in no way tied to any single machine or cluster of machines.>

(大意:モデルは純粋な抽象だ。実装は純粋なプラグマティズム(実用主義)だ。あなたのアプリケーションはクラウドのなかにあるのであって、単一のマシンやマシンのクラスタにはまったく結びついていない。)

<Also I wonder if this is meant to compete with Facebook more than Amazon?>

(大意:これはAmazonというよりも、Facebookの競合になるんじゃないか?)

環境が抽象化され、アプリが物理的なマシンから切断されている点を強調しているのは、さすがスケーラビリティの専門家だ。<Amazonというよりも、Facebookの競合>というのも、その通りだろう。Facebookは開発者に対してAPIを開放することでプラットフォーム化を進めているが、Google App Engineもこのアプローチに近い。

この「プラットフォーム化」とは、まさに「インターネットOS」に他ならない。
Google App Engineは、Google流の「インターネットOS」、つまり「Google OS」なのだ。

Google App Engineによって、「Webアプリケーション」の意味が変わる。
最初から稼働環境があるので、まるでブログを書くような気軽さで、プログラムを書く人が大量発生してくるのではないか。
そして、このGoogle App Engineが有力になればなるほど、これが「Webアプリケーションの標準環境」になるのだ。

WindowsというOSは、世界じゅうの無数のPCにインストールされているが、「Google OS」というインターネットOSは、Googleの無数のサーバにまたがって、1つだけ存在する。

Google App Engineとは、その「Google OS」の上で動くアプリケーションを開発できる仕組みなのだ。
これにより、「インターネットOS」という次のパラダイムが一気に具体化し、わかりやすくなった気がする。

関連エントリ:
Googleに入ったPython作者、Guidoからの報告
http://mojix.org/2006/01/12/003705
CNET Japan 「オライリーのインターネットOS論」
http://mojix.org/2004/01/20/120400