写真1●Google App Engineのロゴ
写真1●Google App Engineのロゴ
[画像のクリックで拡大表示]
写真2●GoogleのTechnical LeadであるKevin Gibbs氏
写真2●GoogleのTechnical LeadであるKevin Gibbs氏
[画像のクリックで拡大表示]
写真3●Google App Engineの管理コンソール
写真3●Google App Engineの管理コンソール
[画像のクリックで拡大表示]
写真4●とにかく大きなテーブルだ,と強調
写真4●とにかく大きなテーブルだ,と強調
[画像のクリックで拡大表示]
写真5●BigTableで使用するクエリ言語「GQL Query」
写真5●BigTableで使用するクエリ言語「GQL Query」
[画像のクリックで拡大表示]

 「Google App Engineとは,“Googleスケール”のインフラで,あなたのアプリケーションを動かすことができるサービスだ」--そう語るのは米GoogleのTechnical LeadであるKevin Gibbs氏。同社は2008年4月24日(米国時間)にサンフランシスコで行われた「Web 2.0 Expo」の講演で,Google App Engineの強みがそのインフラにあると強調した。

「技術的にも金銭的にも簡単で拡張性が高い」

 Google App Engine(写真1)は,2008年4月7日(米国時間)に公表されたWebアプリケーションのホスティング・サービス。このサービスの特徴は,同社CEOのEric Schmidt氏が「クラウド・コンピューティング」と表現する同社の巨大なサーバー群の上で,利用者が開発したWebアプリケーションを実行できることにある。Web 2.0 Expoで講演を行ったGibbs氏(写真2)も,「われわれが使用しているのと同じスケールのインフラを,あなた方が利用できる」と,自社の強みがインフラにあることを隠さない。

 「われわれがGoogle App Engineを始めたのは,現在,Webアプリケーションを開発するのが,非常に面倒だからだ。残念ながら,コードを書くことだけがWebアプリケーション開発ではない。Linux,Apache,MySQL,PHPといったソフトウエアをセットアップして,データベースのテーブルやスキーマを定義したり,パスワードを決めたりする必要もあるし,さらにアプリケーションを使用する間はずっと,これらの環境を管理する必要がある。サービスが落ちたら,サーバーを再起動する必要があるし,これらの作業を自動化するために,スクリプトを書いたりしなければならない。これらを全部,あなたがやらなければならないのが現状だ」--Gibbs氏は,Webアプリケーションを開発する上で「技術的な課題」がこれだけあると列挙する。

 もちろん,Webアプリケーションを開発する上でのハードルは,技術的なものだけではない。「アプリケーションを実行するためには,物理的なマシンが必要だ。つまり,金銭的な問題も開発者にのしかかる。サーバーがクラッシュしたら,それに対応しなければならないし,アプリケーションが大きくなったら,ハードウエアを増やしたり,SQLデータベースを強化したりしなければならない。」(Gibbs氏)。その上でGibbs氏は,Google App Engineの最大のメリットが,技術的にも金銭的にも「Easy to use, easy to scale」であると強調した。

Googleの内部技術が利用できる,将来はPython以外の言語も

 Gibbs氏は,Google App Engineにはインフラ面以外での強みもあると強調するが,それも「Googleと同じテクノロジが利用できることだ」と臆面なく言い切る。「(Googleが開発した分散ファイル・システムである)GFSや,(Googleが開発した大規模分散データベースである)BigTableといった,Google内部のテクノロジを,開発者は利用できる。また,(現在Google App Engineで唯一利用できるプログラミング言語である)Python用のランタイムやライブラリも,API(アプリケーション・プログラミング・インターフェース)も,われわれが提供する」(Gibbs氏)。なお,プログラミング言語に関しては,「将来的には他の言語も提供する」(同)と述べている。

 GoogleではGoogle App Engine用のSDK(ソフトウエア開発キット)も提供しており「Webアプリケーションをアップロードする前に,ユーザーのLinux,Mac,Windowsマシン上で,コードをテストできる」(Gibbs氏)。またGoogleが開発したWebベースのアプリケーション管理コンソールも用意されている(写真3)。

 Google App Engineで開発したアプリケーションが使用するデータベースは,クエリ言語にSQLを使用するリレーショナル・データベースではなく,Googleが開発した独自の分散データベース「BigTable」である。BigTableでは,データ型やデータの大きさといったスキーマの定義が不要で(Gibbs氏は「スキーマレス・データ・オブジェクト」と語る),非常に拡張性が高いという。「本当に大きなテーブルに見えるので,BigTableと名付けられた。BigTableを使えば,何百台,何千台というディスク上で動くアプリケーションが開発できる」(Gibbs氏)とそのメリットを強調する(写真4)。

 BigTableにデータを格納したり取り出したりするには,Googleが用意するPython用のAPIを使用する。「GQL Query」と呼ばれる独自のクエリ言語も用意しており(写真5),アプリケーション開発の容易性をアピールしている。