AppEngine/Go で dep を使って vendoring する時の構造

について、雑にメモ。

結論から先に書く

と、おおよそ、今の構造はこんな感じになっている:

{appname}/    → アプリケーションの root directory
dist/         → deploy する際の directroy
assets/       → 静的 assets 
gopath/       → env GOPATH=/path/to/gopath する為の directory
  src         → ../../vendor への symlink
  app.yaml    → appengine の app.yaml
  main.go     → AppEngine/Go の main.go
src/
  {sources}   → AppEngine/Go で使う実装の中身
vendor/
  {appname}   → ../src への symlink
  {deps}      → github 等から dep で取ってきたファイル類

それで実際に開発している最中では、

  • {appname}/dist/gopathGOPATH として指定した上で、各種コマンドを実行
    • これには dep ensure -update含まない
    • direnv みたいなのを使う場合、GOPATH を自動設定する様にした方が便利かもしれない(要検証
  • {appname}/vendor/{appname}{appname}/src への symlink としている
    • こうすると、アプリケーションのコードから import "{appname}/path/to/component" で参照できる
    • あと、アプリケーション依存のファイルをすっきりとまとめられて便利
  • 各種コマンドの実行の際には、npm + node-saku を使っている
    • 基本的には saku.md を書いて、そのコマンドの実行を npm で行うというスタイル
    • この辺りの toolchain は割と好みで選べば良いと思う

とりあえず、僕は今、こういうディレクトリ構造で開発しているけど、これで困った事が今のところ無いので、 割と良い感じの構造になっているのでは? と個人的に思っています。

ただ、Application の source code の割り振り方については、とりあえず DDDドメイン駆動開発)とか、 そういう感じのヤツを参照した方が良いかもしれないじゃね? と思ってはいますが、僕がその辺り詳しくないので、

なんとなく、こういう感じで良いんじゃね?

的な構造でやっています。まぁ今現在の開発の進み具合から言って、MVC の内の View と Controller を事始めしたぐらいで、 Model のところまで辿り付いてないっつーのも有るのですけれどもね、この辺りについては。

あとはまぁ、僕は今回、 GopherJSReact + Redux っぽい何かを自前で実装していたりもしており、 かつ HTML は Golang 側の DSL でなんとかする、という方針を取っているため、 HTML とか JavaSscript とかを、 まったくもって直接は書いてない、と言う感じになっています。ただ、 CSS については、その SCSS で書いていたりもしますが。


まぁ、最近の 開発 している感じだと、そういう感じだよって話でした。はい。

nyarlaが大体

Scrapbox.io でコメントや意見を書く