Go言語は年に何回か必要に迫られてちょっとだけ触る程度の使用頻度だったりするのだが、若い言語ということもあってツールやら環境まわりは調べる度に状況が変わっててちょっと戸惑ったりする。
いつの間にやら$GOPATHを明示的に指定しなくても良くなったり、ソースの配置が$GOPATH/src配下じゃなくても良くなったり・・・
最近も仕事で使う機会ができたので今一度知識をアップデートしておこうということでMacでの今どきっぽい開発環境構築を調べてみた備忘録。
goenvの導入
他の言語同様にランタイムのバージョンは切り替えできるようにしておいた方が良いだろうということで、以前にpyenvの回でも使ったanyenv越しにgoenvを導入。
# ひとまずアップデート $ anyenv update # goenvをインストール $ anyenv install goenv Install goenv succeeded! Please reload your profile (exec $SHELL -l) or open a new session. $ exec $SHELL -l $ goenv --version goenv 2.0.0beta1
これでgoenvの導入完了。
golang 1.11.4
ひとまず最新の安定版1.11.4を入れる。
$ goenv install --list Available versions: 1.2.2 1.3.0 ~~略~~ 1.11.3 1.11.4 1.12beta1 $ goenv install 1.11.4 Installed Go Darwin 64bit 1.11.4 to /Users/***/.anyenv/envs/goenv/versions/1.11.4
作業ディレクトリに移動した上で切り替え。
$ goenv local 1.11.4 $ goenv local 1.11.4 $ go version go version go1.11.4 darwin/amd64
ちゃんと先程インストールしておいた1.11.4が使用されていることが確認できる。
go modによるモジュール管理
Goのモジュールの管理だと、かつては「glideを使うべし」だったのが「これからはdepだ」なんて言われてたところまでは薄っすら認識していたのだけど、これからはサブコマンドとして組み込まれたgo mod
を使っていくべしという流れなようだ。
ディレクトリ上で
$ go mod init test/hello go: creating new go.mod: module test/hello
とモジュール名を指定した上でコマンドを実行すると、go.mod
ファイルが出力される。
$ cat go.mod module test/hello
そして、go build
などをするとこのファイルに↓みたいに使用しているモジュールが追記&go.sumファイルが作成されるという寸法だ。
$ cat go.mod module test/hello require github.com/spf13/viper v1.3.1
で、これらのファイルを含めてリポジトリで管理した上で、受け取った側は環境変数でModules機能を有効にした上で
$ export GO111MODULE=on
go mod download
で明示的にダウンロードしたり、普通にgo build
したりすれば良いらしい。気軽で良いですな。
これでひとまずコード書ける状態まで。順調に色々と便利になってますなー。
- 作者: Katherine Cox-Buday,山口能迪
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/10/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る