GAE/SE go111 + datastore emulator とりあえず動かす

これはメモです.

ディレクトリ配置

go1.11 以降かつ go modules を利用するので,これまでのように GOPATH に縛られない場所にプロジェクトディレクトリを作成できる.

様子

$ tree ./
./
├── datastore
│   ├── WEB-INF
│   │   ├── appengine-generated
│   │   │   └── local_db.bin
│   │   └── index.yaml
│   └── env.yaml
├── go.mod
├── go.sum
└── server
    ├── app.yaml
    └── main.go

go.mod の位置ここでいいの...? みたいな些細な疑問がありませんか? 私はあります.

Datastore Emulator

↑の tree の結果からもわかるように,プロジェクトルート/datastore をdatastore emulator用のスペースとして切っている.

$ gcloud beta emulators datastore start --project=YOUR_PROJECT_NAME --data-dir=./datastore

サーバの起動

環境変数の設定

起動まえに Datastore Emulator に向くよう環境変数を設定する.

$ cloud beta emulators datastore env-init --project=YOUR_PROJECT_NAME --data-dir=./datastore

アプリケーションサーバの起動

go run でもいいし, dev_appserver.py でもいいと思う. dev_appserver.py は余分なものが色々起動するけど自動でビルドが走るし再起動もしてくれるからありがたい.が,初期起動に時間かかりすぎるのでいい方法探したい.

dev_appserver.py ./server