Google App Engine/Goのディレクトリ構成
Google App Engine/Goを実装するときは次のようにするのがよい。
- GOPATHをひとつにする
- コードはsrc配下
- importはフルパス
- app.go, app.yamlはsrc直下
前提
goコマンドの代わりにgoappコマンドを使う。
▶Google Cloud SDK — Google Cloud Platform
https://cloud.google.com/sdk/
GOPATHをひとつにする
デプロイ時に関連ファイルを含める必要があるため。
コードはsrc配下
自分の書いたコードはsrcディレクトリ配下に置く。
goapp getしたファイルも自分が書いたコードもsrc配下にまとまっているということになる。
importはフルパス
import文はフルパスで書く。
GOPATHはひとつにまとめているし、これで困ることはない。
それと、goapp testしたときにもうまく解決される。
app.go, app.yamlはsrc直下
app.goとapp.yamlはsrcディレクトリに保存する。
src
├── app.go
├── app.yaml
├── myproject
├── github.com
└── code.google.com
まとめ
この構成にする前はapp.goとapp.yamlをmyprojectの下に置いていたのでうまく動かなかった。
App Engineで動かしたいものはmyprojectだし…と思っていたのだが、app.goから見たらmyprojectも複数プロジェクトのうちのひとつでしかないということで納得。
もう少し丁寧に書いておきたいけど、忘れないうちに構成だけメモ。
#golang で #appengine のアプリを作るときはプロジェクトにGOPATHに含めるべきなのか?含める場合、conflict with save file importedが表示されるし、含めない場合はgoapp testで相対パスのimportでうまくいかないし…。
— Ken (@teaplanet) 2015, 3月 8
このツイートの返信でいろいろと教えてくださった @mattn_jp さんに感謝!!
▶GAE/Go でのGOPATH設定 - The Round
http://knightso.hateblo.jp/entry/2014/11/26/103637
ここの構成と違うからちょっと気になる…もう少し確認した方がいいかもしれない。