go installを使え -- QCon London 2016
2016年版Goのベストプラクティス
日本語訳(POSTD)
6年間におけるGoのベストプラクティス | プログラミング | POSTD
原著
Go best practices, six years in
こんな記事を見つけて読んでいた。
内容は15項目にもわたるプラクティスの紹介なのだが、今回、特に興味を持ったのが以下だった。
1. $GOPATH/binを$PATHに追加しましょう。インストールしたバイナリが扱いやすくなります。
2. リポジトリfooが主にバイナリ用なら、ライブラリコードはサブディレクトリlib/に置き、fooパッケージと名付けましょう。
3. リポジトリが主にライブラリ用なら、バイナリはcmd/配下の個別のサブディレクトリに置きましょう。
15. go buildよりもgo installを使いましょう。
GOPATH/binにPATHを通し、go installでビルドする
まず、15番の「$GOPATH/binを$PATHに追加 & go buildよりもgo installを使いましょう」という話に興味を持った。
今まで「go build」を実行するとバイナリが生成されることは知っていたが、「go install」というコマンドの存在を知らなかった。
「go install」を実行すると$GOPATH/binの下にバイナリが配置されるので、PATHを通しておけばいつでも実行できて便利ですよ、という意図らしい。
リポジトリ構成はgo getに対応を心がける
以下、バイナリとライブラリを作る場合でリポジトリ構成を変えた方が良いらしい。
[引用] バイナリを作る場合
github.com/peterbourgon/foo/ main.go // package main main_test.go // package main lib/ foo.go // package foo foo_test.go // package foo
[引用] ライブラリを作る場合
github.com/peterbourgon/foo foo.go // package foo foo_test.go // package foo cmd/ foo/ main.go // package main main_test.go // package main
この構成案は既に過去の記事で調べていたが、出典はこのカンファレンスだったのかという感想。
go getに対応したリポジトリ構成に、go installを加えることでシンプルに開発環境を構築することができそうだ。
go installを使えば、bin/の下にバイナリが配置されるので、go buildで生成したバイナリを誤ってコミットしてしまうミスも減ると思った。