GoogleはApp Engineという無料で使えるクラウド・システムを提供しています。最近までPythonしか使えませんでしたが、Javaもサポートするようになりました。サーブレットやJSPが動くので非常に便利なクラウドです。月間500万ページビュー程度までは無料でいけるようです。さらにリソースが必要だったり、パフォーマンスを上げたい場合は課金設定をしてGoogleに多少お金を払う仕組みです。いずれにしても個人営業のサイトだと、無料の範囲でほぼ問題なさそうです。

しかしこんな夢のようなシステムですが、現在稼動しているJavaのWebアプリケーションをそのまま使えるかというとそうは問屋が卸しません。次のような大きな制約があります。

1. SQLデータベースが使えない。
2. ファイルが書き出せない。
3. SwingやAWTなどのJavaのグラフィック関連のクラスが全滅。

1のSQLデータベースがそのまま使えないというのは、多くの業務用Webアプリケーションにとってそうとう痛いでしょう。これはBigtableというNon-SQLデータベースに置き換わります。これだけのクラウド・リソースを不特定多数のユーザーに無料で提供するには、やはりSQLデータベースは制限せざるを得ないようです。僕はまだあまり詳しくありませんが、BigtableはGoogleの様々なアプリケーションに応用されている高速データベースです。要はSQLデータベースで作ったものはそのままでは動かないということです。

2もセキュリティーの問題から制限せざるを得なかったようです。ファイルはもちろんアップロードできるのですが、App Engine上のプログラムからファイルを作ることはできません。データを動的にストアする必要があればBigtableを使うことになります。

3ですが、これはけっこう痛かったりします。というのも、JavaにはJFreeChartのようにフリーのグラフを作ったりするライブラリがたくさんあって、それらが全く使えなくなるからです。GoogleはSwingやAWTの代わりのクラス・ライブラリを提供していますが、長年使い込まれてきたライブラリが使えないのは痛いでしょう。その他にもグラフィックがなくても実はSwingやAWTのクラスを使っているライブラリはいろいろあって、ほぼ全滅状態です。

しかし、これらの制約を回避できるならば、Google App Engine for Javaは極めてパワフルなクラウド環境を無料、もしくは非常に安価に提供してくれます。個人で面白サイトを作ったりする場合なんかは非常にいいサービスですね。ただJavaの業務用アプリケーションを移植するのは結構大変そうです。

ここでは僕の備忘録も兼ねて、Google App Engineのはじめかたを簡単にまとめておきます。

I. Google App Engineのアカウント登録

とりあえずGmailアカウントが必ず必要なのでひとつ用意してください。それからGoogleサイトにわかりやすい説明があるのでひと通り読みます。

Google App Engine スタート ガイド

読み終わったらいよいよ登録しましょう。しかしここで携帯電話のメルアドがひとつ必要になります。ロボットによる大量アカウント取得を避けるために携帯電話のメルアドにパスワードを送って認証しています。Googleにまたひとつ個人情報を取られるわけですが、しょうがないので登録しましょう。あとは指示に従っていけば簡単にアカウントを作れます。ここでアプリケーションの名前を決めますが、URLは次のようになります。

    http://アプリケーション名.appspot.com

このアプリケーション名は10個までひとつのアカウントで作れますし、それぞれのアプリケーションが複数のバージョンを持つことができます。リリースするときは普通ドメインを取るでしょうから、これだけたくさん使えれば十分でしょう。もちろん独自ドメインを使うこともできます。

II. GoogleプラグインをEclipseにインストール

これもGoogleのサイトにわかりやすく書いてあります。

Google Plugin for Eclipse の使用

ツールバーの[Help]の[Install New Software...]にいって、"http://dl.google.com/eclipse/plugin/3.6"を[Add...]します。最後の数字がEclipseのバージョンに対応しています。僕は最新の3.6を使っているのでこのようになります。[Google App Engine Java SDK]と[Google Web Toolkit SDK]を選択してあとは指示に従っていけばインストールできます。

III. Google App Engineで"Hello World!"

それではいよいよ最初のプログラムをデプロイ(deploy)してみましょう。ちなみにWebプログラミングの世界ではプログラムをサーバーに上げることをデプロイといいます。もともとは英語の戦争用語で部隊を配備するというような意味です。

Eclipseのツールバーの[File]の[New]で[Web Application Project]を選択します。プロジェクト名とパッケージ名を決めましょう。それからUse Google Web Toolkitのチェックを外します。

Google App Engine のプロジェクトを作る


このプロジェクトにアプリケーション名を教えてやる必要があります。Project Explorerのプロジェクトの上で右クリックして[Properties]を選択します。[Google] > [App Engine]のApplication IDのところで最初に登録したアプリケーション名をいれてください。

それではデプロイしてみましょう。デプロイは飛行機ボタンです。ここでGoogle App Engineを登録したGmailアドレスとパスワードが必要になります。どうですか? うまくいきましたか? ブラウザで"http://xxx.appspot.com/"を見てみましょう。"Hello App Engine!"と出てくれば成功です。

これでJavaのサーブレットやJSPが動くようになりましたね。JSPで注意しないといけないのは、Google App EngineはコンパイラにJDKを指定しないとうまく動かないことです。Project ExplorerのJRE System Libraryを右クリックしてAlternate JREで最新のJDKを選択してください。JDKが登録されていなかったら登録してしてください。なぜかJSPはJDKじゃないとうまくコンパイルできませんでした。

以下に使えそうな参考書をリストしておきます。

プログラミング Google App Engine、Dan Sanderson、玉川竜司(翻訳)
オープンソース徹底活用 Slim3 on Google App Engine for Java、ひが やすを、小川信一
すっきりわかるGoogle App Engine for Javaクラウドプログラミング、中田秀基
Google App Engine for Java実践クラウド・プログラミング、清野克行
Google App Engine for Java [実践]クラウドシステム構築 (WEB+DB PRESS plus) グルージェント