From Tokyo, Japan. Web-Developer. Write some codes by Go/Scala And thanks everything around my self.

2016年にgoを使ったのでまとめ

あ、怖いな怖いな、穴埋めたいなーと思っていたのでつらつら書いて埋めたいと思います。

 

はじめに

 

この記事はGo Advent Calendar 2016の10日目であるべき投稿だったようです。

 

2015年からgoやりたいなーと思っていましたが、今年の4月に転職してから思いがけずgoでWebAPIなどを書く仕事を色々やらせていただけたので、良かったもの/こと、仕事をする上で自分でつくったもの、などについて書きます。

 

 

良かったもの

 

仕事で作ったものはWebのAPIだったり社内の他のシステムにキューイングするライブラリだったりと、そんな小難しいものは作っていないので箇条書きに

 

この辺のライブラリやWAFには非常に助けられました。最初はgojiを利用して、それをechoでまるっと書き直したりしていたのですが、ドキュメントを書くのが面倒なのがきっかけで今年後半に新しいものを作るときはgoaを利用してみて、非常に良かったです。最初にDSLで設計を書くのが大変ですが、慣れれば設計の楽しさみたいなものも感じられる良いフレームワークではないかと思います。

 

テストは最初conveyを使っていましたが、もうちょっとSpecに近いテスト記述をしたかったので途中からはginkgoに切り替えています。Ωは使わずに、Expectで書いています。conveyはブラウザでテストがグルグル回るので楽しいです。自動でぶん回してほしい人はconvey使ってみてください。

 

最後のgo-bindataとzgokは両方共静的ファイルをバイナリに含めるためのライブラリで、少しアプローチが違います。

 

  • go-bindata → 静的ファイル群を.goのファイルに変換する
  • zgok → ビルド後のバイナリに静的ファイル群をZIPアーカイブとして追加する

go-bindataだと変換後のファイルをcommit資材に入れるかどうか迷ったりして、ちょっと迷ったりするのですが、テスト用のファイルだけcommitしておいてその後はビルド直前に再度変換をかけたりするようにjenkinsなどでシェルを書くことで対応しています。

ビルド前後に何か書く前提であれば、zgokのほうがcommitとしては悩まなくて良いので個人的には好みです。

 

 

自分で作ったもの

 

  • github.com/deadcheat/echorequid : echoでrequestごとにユニークなIDを振りたかったので作ったミドルウェア
  • github.com/deadcheat/configurin : 設定ファイルを固めておいて社内とかに置いておいて、コマンドにしておくことで引っ張りやすくするためのもの。作ったものの社内のgitlabからgo installなどで引っ張れなくて今のところすごくイマイチな状態。そのうちetcdか何かに置き換えられればいいのですが。
  • github.com/deadcheat/echologrusrequestlogger : echoのrequestログをlogrusで吐き出したかったので作った
  • github.com/deadcheat/echologruslogger 上記を差し替えてもエラーなどのログがlogrusに置き換わらなかったので作った
  • github.com/deadcheat/goacors : goaでCORSヘッダのハンドリングをしたいと思ったときに、DSLに登録しておかないと処理に入ってくれないのが使いづらかったのでechoのcorsミドルウェアを移植した

 

 

こういうのばっかり作ってました。

goはこういうのが作りやすいので非常に良いなーとgoの良さも改めて感じました。

 

さて、いい感じの分量に達したのでここまでとします。

 

ここまで読んでくださりありがとうございました。

 

 

エンジニアの妻になってしまった我が妻には感謝している

echoのロギングでlogrusを利用するための何かを更新した