はじめに
GoogleAppEngine上で動くwebサービスをgolangで作りはじめました。
作り始めでつまずくことが多いので自分用の最小構成メモです。
ここで説明するwebサービスは、Ajaxで非同期通信し、Golangが返した文字列を表示するだけのものです。
環境の準備
まずは、GCPの公式ドキュメントを参考にGolang、Cloud SDKをダウンロードします。
以下のようにバージョンが表示されればOKです。
$ goapp version
go version 1.9.4 (appengine-1.9.74) darwin/amd64
ちなみに、開発にはmacOS High Sierra(10.13.6)を使用しています。
構成説明
ディレクトリ構成は以下の通りです。
├── app.yaml
├── hello.go
└── static
├── js
│ └── main.js
├── css
│ └── main.css
└── index.html
この中でGAE特有のファイルはapp.yaml
になります。
app.yamlリファレンスに各パラメータの説明が載ってますが、最低限のパラメータだけ書いておきます。
runtime: go #Golangを使用する場合はgoを指定
api_version: go1 #最新のバージョンを使用する場合はgo1を指定
handlers: #リクエストと実行する処理をURLパターン毎に指定
- url: /
static_files: static/index.html
upload: static/index.html
- url: /js
static_dir: static/js
- url: /css
static_dir: static/css
- url: /.*
script: _go_app
その他のファイルについては、特別なことはしていないので説明は省略します。
各ファイルはGithubに置いてあります。
ローカル環境での実行
ローカル環境にGoogleAppEngineの開発用サーバを立ち上げるには、Cloud SDKに含まれているdev_appserver.py
を実行します。
実行時のオプションはいくつも用意されていますが、サーバを立ち上げるだけならば、以下のようにapp.yaml
を指定して実行すれば問題ありません。
※dev_appserver.py
を実行するにはPython2.xがインストールされている必要があります。
dev_appserver.py app.yaml
サーバが立ち上がったら、ブラウザからhttp://localhost:8080にアクセスすれば、開発サーバ上のwebサービスにアクセスができます。
本番へのデプロイ
GoogleAppEngine上にデプロイする場合は、以下のコマンドを実施します。
gcloud app deploy app.yaml
まとめ
今回、GoogleAppEngine上で動かすことを目的としているので、最低限のオプションしか指定していません。
実際に使用する場合は、セキュリティを高めたり、パフォーマンスの最適化を図ってください。
記事の内容に不備や誤りがありましたら、@foresukecomまでご連絡ください。
その他
最近、Life is Strageというゲームをクリアしました。
後半は感情移入して涙目になりながら遊んでしまいました、ゲームで泣いたのは幻想水滸伝2以来です。
ゲーム自体は短めで、週末だけでクリアできる程度のボリュームなので、是非遊んでみてください。 PS4とSteamで遊ぶことができます(Steamは年に数回75%OFFのセールを実施するので、そこで買っておくのがおすすめです)。
このゲームはストーリーもよいのですが、要所要所で流れるBGMが特に素晴らしいです。
サントラはAmazonPrimeMusicの対象にもなっているので、Amazonプライム会員の方は是非聴いてみて下さい。落ち着いた音楽で、作業用BGMとしても最適です。