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

読了まで:約2分


について、雑にメモ。

結論から先に書く

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

{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 で取ってきたファイル類

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

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

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

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

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

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

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


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

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。
次に備えて待機中。

今は趣味でプログラミングをして
生活しています。