いまさらGAE/Goに入門してみる
最近周囲がGAEづいていて、やったこともなかったので入門してみた。 今の状況的にはやっぱりGoかなと思うので、GAE/Goで。
GCPに登録
まずは登録
https://console.cloud.google.com
初めての人は、60日間有効な$300クレジットがあるのでそれで遊ぶどいいよ (2016/05/21) 登録時にクレカの登録を求められるけど、無料期間が終わっていきなり請求されるわけではないらしい。
プロジェクトを作る
何故か最初からAPI Project
ができていたがApp Engineがほしいので、新しいプロジェクトを作る。特に選択肢なくせずにGAEのプロジェクトができた。
プロジェクト名はご自由に。
AppEngineのページに行くと、言語ごとのチュートリアルも読むことができる。 すごく良く出来てて基本的な使い方を理解できるので、正直やっとくといいよ。
自分はGoのチュートリアルをやった。 チュートリアルを実行すると、リポジトリにサンプルアプリが配置されるので、実行テストにはそれを使いまわすと楽。
App Engine SDK のセットアップ
ちょっと前のドキュメントだとGoogle Platform SDK の gcloudコマンドが統合管理するよ!って感じだったけど、どうやらGAEのSDKはそこからstandaloneになった様子。
https://cloud.google.com/appengine/downloads
ここからpackageを取ってくる。
% curl -O https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_darwin_amd64-1.9.37.zip % unzip go_appengine_sdk_darwin_amd64-1.9.37.zip
.*shrc
的なものにPATHを通す。
export PATH="/path/to/go_appengine:$PATH"
.*shrc
を読みなおしてgoapp
コマンドにパスが通っている事が確認できればOK。
ローカルでサンプルを動作させてみる
この辺は作りたいものを作ってく感じだけど、とりあえずまずGAEの操作を覚えるのでサンプルのまま。
gae-sample ├── app.yaml └── hello └── hello.go
package hello import ( "fmt" "net/http" ) func init() { http.HandleFunc("/", handler) } func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World!") }
version: 1 runtime: go api_version: go1 handlers: - url: /.* script: _go_app
上記を作成し、対象ディレクトリをgoapp serve
する。
% goapp serve gae-sample INFO 2016-05-21 04:45:56,681 devappserver2.py:769] Skipping SDK update check. WARNING 2016-05-21 04:45:56,885 simple_search_stub.py:1146] Could not read search indexes from /var/folders/r8/gnn5k3_j4qq1rjmd3k3x1b4r0000gn/T/appengine.None.yudoufu/search_indexes INFO 2016-05-21 04:45:56,891 api_server.py:205] Starting API server at: http://localhost:58354 INFO 2016-05-21 04:45:56,897 dispatcher.py:197] Starting module "default" running at: http://localhost:8080 INFO 2016-05-21 04:45:56,901 admin_server.py:116] Starting admin server at: http://localhost:8000
これでローカルにアプリが起動するので、http://localhost:8080/
で動作をチェックできたら完了。
http://localhost:8000/
でアプリケーションの状況もチェックできる。
余談だが、最初yamlを書く際にGCP上のサンプルを真似してversion: 1
無しで作ったら、GAEにdeployする際に A version or backend parameter is required.
と怒られてしまった。
その辺、参考にしたサンプル次第で色々エラーに見舞われると思うのでご注意をば。
GAE上に配置する
今のサンプルをGAE上に配置してみる。
% goapp deploy -application [project id] gae-sample
project id
は、作成したGAEプロジェクトのダッシュボード左上あたりに書かれてるので、それを引っ張ってくる。
実行すると、ブラウザ上で認証を求められるので許可すると、デプロイされる。
完了したらhttp://[project id].appspot.com
にアクセスすると、動作が確認できる。
これでひとまず、GAEアプリケーションを開発してく準備が整った感じ。