そんな今日この頃の技術ネタ

本家側に書くほどでもない小ネタ用

golangの開発環境を整える

Go言語は年に何回か必要に迫られてちょっとだけ触る程度の使用頻度だったりするのだが、若い言語ということもあってツールやら環境まわりは調べる度に状況が変わっててちょっと戸惑ったりする。

いつの間にやら$GOPATHを明示的に指定しなくても良くなったり、ソースの配置が$GOPATH/src配下じゃなくても良くなったり・・・

最近も仕事で使う機会ができたので今一度知識をアップデートしておこうということでMacでの今どきっぽい開発環境構築を調べてみた備忘録。

goenvの導入

他の言語同様にランタイムのバージョンは切り替えできるようにしておいた方が良いだろうということで、以前にpyenvの回でも使ったanyenv越しにgoenvを導入。

blue1st-tech.hateblo.jp

# ひとまずアップデート
$ 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したりすれば良いらしい。気軽で良いですな。


これでひとまずコード書ける状態まで。順調に色々と便利になってますなー。

Go言語による並行処理

Go言語による並行処理

  • 作者: Katherine Cox-Buday,山口能迪
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2018/10/26
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る