sgykfjsm.github.com

GoでJSON APIを書く Part2

前回の続き。全体的にちょっとアレなところが多いので、もう少しリファクタリングを行なう。今回のリファクタリングの元ネタは以下。元ネタのほうが説明が簡潔だしコードが綺麗なので、元ネタを読めばコレを読む必要は無い。

Goでfunctionが実行された順番を追いかける

Goはgo routineを使って並行処理を容易に書くことができるが、下手に書くと色々なfunctionが相互に入り乱れて処理が追いづらいときがある。ここではGoでfunctionをトレースする方法をメモしておく。

ベンダリングのためのgomvpkgとgbについて考えてみる

GO言語には多言語にあるようなパッケージマネジメントの仕組みが(公式には)サポートされていない。GOv1.5では実験的に導入されているが、例えばJavaで言うmaven、Pythonで言うpipなどのような共通として用いられているツールなどは無く、基本的には以下の3つのやり方が主流だと思われる。

  • 依存するパッケージを自分のリポジトリに取り込むVendoring
  • 3rd partyツールによるRevison指定などといった擬似的なパッケージマネジメント
  • そもそもパッケージマネジメントをしない

自分の開発では、業務も含めて、あまり外部パッケージに依存するようなことはあまり無いが、もしやるなら1つ目のVendoringになると思う。で、今回はVendoringを行なう際に便利だと思われる2つのツール、gomvpkggbを試してみる。

Ginkgo 基本的な使い方編

最近、golangでプログラムを書く機会が増えてきた。golangでTDDをする場合、標準のtestingパッケージを使うのが一般的なようだ。ただし、標準パッケージだけだとちょっとテストが書きづらいので、stretchr/testifyを使っている人も多いと思う。

関数のテストをしたいときは標準パッケージなりtestifyを使うなりで良いのだけど、振る舞いをテストしたい、つまりBDDをしたいなーと思った時にちょっと調べらたらGinkgoというのが良さ気だったので、ちょっと試してみる。

Sonatype Nexusの始め方

自前でmavenリポジトリを運用する場合に、リポジトリ運用を楽にしてくれるソフトウェアがいくつかある。 今回はおそらく良く使われているであろうSonatype NexusのOSS版でmavenリポジトリを始める方法をメモする。