Godepについて

less than 1 minute read

この記事はGo(その3)Advent Calendarの6日目の記事です。

GodepとはGo言語の依存パッケージ管理ツールです。
Go言語の依存パッケージ管理ツールとしては以前からあるもので、Go言語を使用しているオープンソースプロジェクトでもよく使用されています。

新しい技術でもありませんが、今まで調べる機会がなかったのでこれを機に簡単にまとめてみました。

インストール

インストールはとても簡単でgoコマンドを使用してインストールするだけです。

$ go get github.com/tools/godep

使い方

依存関係を保存する

godep saveでアプリケーションが依存するすべてのソースコードをカレントディレクトリ直下にvendorディレクトリを作成してコピーします。
また、同様にカレントディレクトリ直下にGodepフォルダを作成して、その中に依存関係を記載したGodep.jsonを配置します。 ただし、vendorディレクトリを使用するのはGo言語のバージョンが1.6以上の場合で、そうでない場合はGodep/_wordspaceフォルダを使用します。

# パッケージ構成例
$GOPATH
  |_src
     |_testproject
        |_Godeps
        |  |_Godeps.json
        |
        |_ hello.go
        |
        |_vendor

依存関係をリポジトリから取得する

依存関係にあるパッケージを取得していない場合、godep restoreを実行することでGodep/Godep.jsonの内容をもとに依存関係のパッケージを取得します。 ただ、これはパッケージがGithubなどパブリックに取得できる場合に限るようです。

依存関係をvendorフォルダより解決する

通常go rungo buildをした時は依存パッケージを$GOPATHの配下から解決しようとしますが、godep go rungodep go buildのようにgoコマンドの前にgodepをつける事で依存パッケージをvendorフォルダ(あるいはGodep/_workspace)より解決しようとします。

番外編

godep diffコマンドを使用すれば、前回のgo saveした内容と現在のGodep/Godep.jsonの差分を表示してくれます。 下記はその表示例です。(あまりよくない例ですが…)

--- Godeps/Godeps.json
+++ $GOPATH
@@ -1,7 +1,7 @@
{
  "ImportPath": "testproject",
  "GoVersion": "go1.6",
  "GodepVersion": "v75",
  -   "Deps": []
  +   "Deps": null
}

まとめ

簡単にですがGodepの基本的な機能についてまとめてみました。 他にも便利なツールがあるのかもしれませんが、これはこれで便利なのかと思います。

参考サイト

Github tools/godep
DRYな備忘録

Tags:

Categories:

Updated: