Google App EngineがJavaをサポート

Google App EngineはGoogleが提供するクラウドサービスで、制限はあるものの無償でアプリケーションのホスティングを行っている。当初はPythonを使ったWebアプリケーションのみがサポートされていたが2009年4月、ついにJavaのサポートを発表した(以降GAE/Jと表記する)。

GAE/Jは現状ではEarly Lookという扱いで別途サインアップの必要はあるものの、Google Plugin for EclipseというEclipseプラグインを利用することでEclipse上でWebアプリケーションを開発することが可能となっている。

Google Plugin for EclipseはGoogle App EngineおよびGoogle Web Toolkit(GWT)をサポートするための機能をEclipseに追加するプラグインで、更新サイトよりインストールすることができる。

今回はこのGoogle Plugin for Eclipseを使用してGAE/Jでのアプリケーションの開発手順を紹介しよう。

Google App Engineへの登録

まずはGoogle App Engineへの登録と、GAE/Jを利用するためのサインアップが必要となる。Google App Engineへの登録はこちらのサイトから行うことが可能だ。登録には確認コードを受け取るために携帯電話のメールアドレスが必要になる。

Javaはオンラインでのサインアップ後、確認のメールが届いてから利用可能となる。それまではデプロイしようとするとエラーになるので注意してほしい。

また、作成したアプリケーションをデプロイするためにはGoogle App Engineの管理画面であらかじめアプリケーションを作成しておく必要がある。アプリケーション名はhttp://アプリケーション名.appspot.com/のようにサブドメインになり、10個まで作成することが可能だ。

図1 アプリケーションを作成したところ

プロジェクトの作成からデプロイまで

Web Application Project作成ウィザードでGAE/J用のプロジェクトを作成することができる。このウィザードではGAE/JおよびGWTを利用するWebアプリケーションプロジェクトを作成することが可能だ。

図2 プロジェクト作成ウィザード

作成されたプロジェクトはServlet/JSPベースの通常のWebアプリケーションそのものだ。JavaによるWebアプリケーションの開発経験があればそのノウハウを活かしてGAE/Jで動作するアプリケーションの開発を行うことができる。

ただし、利用可能なAPIやファイルシステムへの書き込みなどに制限があるほか、データの保存にはJPAやJDOのAPI経由でBigTableを利用するなどGAE/J固有の点もある。GAE/Jでの開発についてはこちらのドキュメントを参照するといいだろう。

プロジェクトの作成後、プロジェクトのプロパティーダイアログでデプロイするアプリケーションIDを入力しておこう(設定していない場合はデプロイ時に設定することもできる)。

図3 プロジェクトの設定

ローカルでの動作確認を行う場合はプロジェクトを右クリック→「実行」→「Web Application」で開発用サーバが起動する。Webブラウザからhttp://localhost:8080/にアクセスすることで動作を確認することができる。また、「デバッグ」メニューから実行することでアプリケーションのデバッグを行うことも可能だ。

開発したアプリケーションをGAE/Jにデプロイするにはプロジェクトを右クリック→「Deploy to App Engine」を選択する。すると以下のようなダイアログが表示されるのでGoogleアカウントのメールアドレスとパスワードを入力する。

図4 アプリケーションのデプロイ

Google Plugin for Eclipseを用いたGAE/J開発はEclipse上での通常のWebアプリケーション開発となんら変わりなく行うことができ、デプロイも簡単に行えることがおわかりいただけたのではないだろうか。

まとめ

Google App EngineでのJavaのサポートは多くのJava開発者にとって待ち望んでいたものだといえるだろう。Google Plugin for Eclipseによって使い慣れた開発環境で手軽にGAE/J上で動作するアプリケーションを開発することができるのも大きなメリットだ。

現在は有志の手によってJRubyなどJavaVM上で動作するスクリプト言語やさまざまなJavaフレームワーク/ライブラリをGAE/J上で動作させる試みが活発に行われており、GAE/Jの注目度の高さを表している。Java開発者であればGAE/Jを試さない手はないだろう。