JSP/Servlet | GAEアプリケーション作成 | プロジェクト構成を理解する
プロジェクトを作成すると、ウィンドウ左側の縦長の領域に「MyGaeApp」というフォルダーが作成される。このフォルダーの左にある三角マークをクリックして展開すると、その中にさまざまなファイルやフォルダーが作成されていることを確認できる。この「MyGaeApp」フォルダーが作成したプロジェクトである。このフォルダーにあるファイルなどが、今回作成するGAE用Webアプリケーションに必要なすべての機能である。
左側の細長い領域は「Project Explorer」というビューである。「ビュー」とは、Eclipseの画面内に配置される部品のようなものだ。Eclipseの画面を見ると、いくつかの四角い領域の組み合わせで構成されていることがわかる。この一つ一つの領域が「ビュー」である。Eclipseでは、開発内容や状況に応じて必要なビューを画面に配置しながら作業を進める。基本的には、一般的なサーバーサイドJava開発に必要なビューが利用できるように配置されている。
左側にあるProject Explorerビューは、プロジェクト内のファイルやライブラリなどの内容を表示し、管理するためのものである。ここでファイルやフォルダーを整理し、ダブルクリックしてファイルを開いて編集できる。
それではまず、このProject Explorerで「MyGaeApp」フォルダーを開き、中にある項目を見てみよう。次のようなものがあるはずだ。

-
srcフォルダー: Javaソースコードファイルを配置する場所である。これを展開すると「com.devkuma.mygaeapp」というフォルダーが現れ、さらに展開すると「MyGaeAppServlet.java」というJavaソースコードファイルがあるはずだ。これは基本的に自動生成されたサンプルコードである。今は使わないが、「Javaクラスを作るときはここにソースコードを配置する」ということだけは覚えておこう。
-
App Engine SDK: これはプロジェクトで使用するGAE SDKのライブラリである。GAEにはGoogleサービスを利用するために独自に提供されているクラスが多数ある。それらを使用できるように準備されたライブラリである。これ自体を何か操作して利用することはない。GAEプロジェクトであれば自動的に含まれるので、特に触らない。
-
JRE System Library: これはJavaシステムライブラリである。Javaの基本となるライブラリであり、これが準備されていないとJavaの主要機能は使えない。Javaベースのプロジェクトに自動的に含まれるため、これも特に触らない。
-
warフォルダー: これが実際にサーバーへ展開されるフォルダーである。HTML、スタイルシート、画像、スクリプトなどWebで使用するファイルはこのフォルダーに入れておく。
プロジェクトで最初に使うのは「war」フォルダーである。ここにHTMLファイルなどを配置し、サーバーへ接続する。続いてJavaプログラムを書くようになったら「src」フォルダーを利用する。他の2つのライブラリは本当に何も操作しない。
warフォルダー
実際にWebアプリケーションとしてサーバーにインストールされるのは「war」フォルダーである。ここには基本的にさまざまなフォルダーやファイルが作成されている。これらの役割を整理しておく。
-
index.html: 基本的にサンプルファイルとして生成されるHTMLファイルである。Webアプリケーションのアドレスへアクセスすると、このファイルが最初に表示される。このファイルの内容を修正して最初のページを作成できる。
-
favicon.ico: アプリケーションのアイコンファイルである。基本的にはGAEの小さなマークが保存されている。自分で作成した画像に差し替えてもよい。
-
WEB-INFフォルダー: これはWebアプリケーションフォルダー内の「公開されないフォルダー」である。この中に入れたファイルはサーバーに公開されず、アクセスできない。ここにはWebアプリケーションの重要な情報が保存される。
-
libフォルダー: WEB-INF内にあるフォルダーである。この中にはWebアプリケーションで使用するさまざまなライブラリファイルが保存されている。基本的にはGAE関連ライブラリが含まれる。もちろん、何かライブラリが必要なら、ここにファイルを追加して利用できる。
-
appengine-web.xml: GAEのWebアプリケーションに関するすべての設定を記述したXMLファイルである。このファイルはGAE固有のもので、他の一般的なJava Webアプリケーションには存在しない。ここでさまざまな設定を行える。
-
logging.properties: このファイルにはGAEのログ設定情報を記述する。このファイルもGAE以外の一般的なWebアプリケーションには存在しない。編集することはほとんどないだろう。
-
web.xml: Webアプリケーションに関する各種情報を記述するXMLファイルである。このファイルはGAEだけでなく、一般的なJava Webアプリケーションでも使用できる。
大まかに整理すると、サーバーサイドJavaによるWebアプリケーションは次のように構成されている。
-
デプロイするアプリケーションフォルダーにHTMLファイルが通常どおり配置される。これは一般的なWebと同じである。
-
その中に「WEB-INF」というフォルダーがある。これはサーバーサイドJavaの特徴で、このフォルダーは外部からアクセスできない。
-
WEB-INFの中には、Webアプリケーションの情報を記述した「web.xml」と、ライブラリを配置する「lib」というフォルダーがある。一般的なJava Webアプリケーションでは、Javaプログラムであるクラスファイルもここに保存される。