GoogleAppEngine for Java を AndroidStudio + Gradleで開発環境を作る

GoogleAppEngine for Javaを開発する場合の開発環境をいろいろ調べてたんですが、公式はMaven推しだったり、IntelliJ Community版（無償版）ではGAEのFacetが用意されていなかったりなど、以外とこれっていう構成が見つからず、試行錯誤してみました。結論として、`AndroidStudio + Gradle` の構成が一番しっくり来たので、その環境構築手順をまとめておきます。
また、恐らくですが、現時点(2016/2/23)では `IntelliJ Ultimate` もしくは `Eclipse` が一番GAEJを開発するための環境が整っていると思います。お金に不自由しない方であれば素直に `IntelliJ Ultimate`を利用するのがベターだと思います。

# こんな人におすすめ
- IntelliJ Ultimateのライセンスが買えない、もしくは買いたくない人
- IntelliJの開発に慣れてしまっていまさらEclipseに戻りたくない人
- Gradleに慣れてしまっていまさらMavenに戻りたくない人
- IDEのデバッガ使えないとつらい人

# 環境情報
- MacOSX
- AndroidStudio1.5.1
- JDK1.7.0_79

# インストール
## AndroidStudio
http://developer.android.com/sdk/index.html#top

## JDK
http://www.oracle.com/technetwork/jp/java/javase/downloads/jdk7-downloads-1880260.html

# プロジェクトの作成

- File -> New -> New Project からプロジェクトを作成します。

![Create_New_Project_と_MyServlet_java_-_GAESample_-___tmp_GAESample_.png](https://qiita-image-store.s3.amazonaws.com/0/20486/1ef5832e-b184-cb31-04b9-4ae74cf281fb.png "Create_New_Project_と_MyServlet_java_-_GAESample_-___tmp_GAESample_.png")


- いったんここではPhone and Tabletを選択します。

![Create_New_Project_と_MyServlet_java_-_GAESample_-___tmp_GAESample_.png](https://qiita-image-store.s3.amazonaws.com/0/20486/80fcb58a-3c94-3f6b-123a-3d8ad7f81404.png "Create_New_Project_と_MyServlet_java_-_GAESample_-___tmp_GAESample_.png")


- Add No Activityを選択

![Create_New_Project.png](https://qiita-image-store.s3.amazonaws.com/0/20486/27abbea8-6f34-2c80-720c-eba9b0df6c96.png "Create_New_Project.png")

- プロジェクトができたら、今度は、File -> New -> New Module を選択し、 `Google Cloud Module` を選択します。

![Create_New_Module_と_GAEJSample_-____AndroidStudioProjects_GAEJSample_.png](https://qiita-image-store.s3.amazonaws.com/0/20486/bb3194b5-c90d-2730-ccfe-aa377f3677cc.png "Create_New_Module_と_GAEJSample_-____AndroidStudioProjects_GAEJSample_.png")


- Module type に `App Engine Java Servlet Module` を選択します。他は任意です。

![Create_New_Module.png](https://qiita-image-store.s3.amazonaws.com/0/20486/68ac1440-86dc-7e22-b27f-3a77846c2f20.png "Create_New_Module.png")

- 以下の様なディレクトリツリーができます。

![GAEJSample_-____AndroidStudioProjects_GAEJSample_.png](https://qiita-image-store.s3.amazonaws.com/0/20486/fa381869-3a61-ae57-92c4-897beed7f9be.png "GAEJSample_-____AndroidStudioProjects_GAEJSample_.png")

- settings.gradleから'app'を削除して、以下のとおりにします。

```
include ':backend'
```

- app ディレクトリを削除します。これでAndroidに対応する部分がなくなります。
- backendフォルダを Refactor -> rename で `app` にリネームします。結果以下のとおりのツリー構造になります。

![settings_gradle_-_GAEJSample_-____AndroidStudioProjects_GAEJSample_.png](https://qiita-image-store.s3.amazonaws.com/0/20486/9a1ef357-8d39-000d-7283-53370eb15fd9.png "settings_gradle_-_GAEJSample_-____AndroidStudioProjects_GAEJSample_.png")


- Edit Configurationsから、App Engine DevAppServer -> backendを選択し、以下のとおり設定します。また、Andropid Application -> app は利用しないため、削除しても構いません。

![スクリーンショット_2016-02-23_18_24_46_png.png](https://qiita-image-store.s3.amazonaws.com/0/20486/5bb1ea3c-5ced-ef4a-7cc7-82f45b44f1d7.png "スクリーンショット_2016-02-23_18_24_46_png.png")

![Run_Debug_Configurations.png](https://qiita-image-store.s3.amazonaws.com/0/20486/5f6c6007-6ff9-7845-d327-7956b9a2d8ba.png "Run_Debug_Configurations.png")

# ローカルサーバの起動
`Run` を実行し、 `http://localhost:8080/` にアクセスします。ページが表示されれば問題無いです。またデバッガも使えます。

# deploy の実行
`Build -> Deploy Module to App Engine...` を選択し、 適切な値を設定します。Deploy toには、GAEのProjectIDを指定してください。

![Deploy_to_App_Engine_と_settings_gradle_-_GAEJSample_-____AndroidStudioProjects_GAEJSample_.png](https://qiita-image-store.s3.amazonaws.com/0/20486/87924949-a24a-6db8-7e4f-a74456907c5a.png "Deploy_to_App_Engine_と_settings_gradle_-_GAEJSample_-____AndroidStudioProjects_GAEJSample_.png")

これで問題なくAppEngineにDeployされるはずです。


# できないこと
- Cloud Debugging
 - これはIntelliJではプラグイン(Facet?)が用意されているのですが、AndroidStudioでは用意されてないようで。。
- あとなんかAndroioStudio2.0.0 beta5だと、New Module を実行すると、Moduleのimlファイルが作成されず、ただのフォルダ扱いになってしまう。ただのバグであってほしい。