IntelliJ IDEAでGAE/Goの開発環境をつくる

GAEを使ってみようと思います。
Googleのアカウントを持っているだけで、
WEBアプリが作れてしまいます。

GAEプロジェクト作成~SDKインストール

チュートリアルにしたがって進めてみます。
https://cloud.google.com/appengine/docs
の「try it now」ボタンより

SDKをダウンロードします。
次のコマンドを使って Go 用 App Engine パッケージをインストールします:

1
gcloud components update gae-go

言語別のSDK単体もありますが、
管理ツールがついてくるこちらからインストールしたほうがよいです。
SDKはそのままのパスでProgram Filesにインストールすると
半角スペースが原因でgoapp serveが動かないので注意です。

GAE用のプロジェクトも作成します。ここで割り振られた
プロジェクトIDをデプロイ時に使用します。

あとは
SDKをインストールしたフォルダの中の\platform\google_appengine
にツール類があるのでパスを通します

IntelliJ IDEAの設定

プロジェクトを作成します。
Create New Project > Go App Engine を選択します。

newproject.jpg

適当に名前をつけて作成します。

次にFile > ProjectStructure > SDKの+ボタンよりSDKを追加します。
SDKのpathは SDKをインストールしたフォルダの中の\platform\google_appengineを指定します。

SDK.jpg

追加したSDKを ProjectStructure > Project より選択します。

projectSDK.jpg

ひな形のプロジェクトが作成されます。

gaeproject.jpg

app.yamlを編集してapplicationの部分をGAEのコンソールのプロジェクトIDにしておきます。

app.yaml
1
2
3
4
5
6
7
8
application: your prject id
version: 1
runtime: go
api_version: go1
handlers:
- url: /.*
script: _go_app

ローカルで動かしてみる

右上の下矢印よりEdit Configurations > 「+」ボタン > Go Local AppEngine Serverを選択

editConfigration.jpg

特に設定は変更せず、適当にNameをつけて保存します。

editConfiguration1.jpg

作成した実行プロファイルを選択して、緑色の「▽」ボタンを押して実行します。

runlocalserver.jpg

localhost:8000 にアクセスしてみると開発用の管理画面が表示されます。

localserver.jpg

「default」を押すと動いているのが確認できます。

localserver1.jpg

GAEにデプロイしてみます

まずgoapp deployしてみましたが、認証がうまく通りませんでした。
SDKにGoogle App Engine Launcherというのがついているのでこれを使ってみます。

File > Add Existing Application で作ったプロジェクトを選択します。
sdklauncher.jpg

あとは「Deploy」ボタンをおしてGoogleアカウントのID・パスワードを入力すると
デプロイすることができました。

http://{your project id}.appspot.com/
にアクセスすると動いているのを確認することができます。

気になったところ

IntelliJ IDEA上でgo fmt等のツールがエラーになるようになっていました。

fmterror.jpg

SDKをみてみるとgorootというフォルダがあり、基本パッケージやツール類が入っています。
どうやらSDK内にGOそのものを内包しており、GAEではこちらがGOROOTになるようです。

IntelliJ IDEA の Setting > Tools > Google Goで
GOROOTにplatform\google_appengine\gorootを選択しようとしましたが
エラーになり選択できませんでした。

荒業ですが、
IntelliJ IDEAはplatform\google_appengine\の直下を見に行ってるようなので
platform\google_appengine\goroot\binのツール類(go fmt等)を
platform\google_appengine\にコピーしてやれば動きました。