はじめに

最近は、自分のPCに開発のための環境を直接インストールしないようにしていて、できるだけDockerで済ませようとしている。
ただ、自分が使っているIntelliJ IDEAだとDocker越しにGolangを扱うのが面倒なので、結局Homeディレクトリ配下にインストールして、開発している。
最初の頃は、goenvとか使っていたのだけど、なんだか大げさだなと思って、現在は公式バイナリとdirenvで完結するようにした。

具体的なやり方

至ってシンプルで、以下のような感じ。

  • ~/.goroots ディレクトリを作成
  • ~/.goroots 配下に公式サイトからダウンロードして展開したディレクトリを配置
  • 結果的に ~/.goroots/gox.yy.zz/ みたいな感じで配置する
  • direnv を使いたいプロジェクト配下に設置

.envrc は例えばこんな感じ。

PATH_add ~/.goroots/go1.11.13/bin
export GOROOT=~/.goroots/go1.11.13
export GOPATH=~/work
export GO111MODULE=on
export GOCACHE=${GOPATH}/src/github.com/longkey1/foo

bin ディレクトリにPATHを通したり、 GOROOT を設定したりって感じ。
自分の場合は、作業ディレクトリを ~/work にしているので、そこを GOPATH に設定していたりもする。

あと、毎回毎回やるのも面倒なので、 dotfiles に管理対象にもしたので、毎回公式サイトからダウンロードして・・・みたいなのは自動化してある。

おわりに

Golangは後方互換がちゃんとしているので、複数バージョンをわざわざ入れなくても良いのだけども、GAE/GO等を利用する際に環境とバージョンを揃えておいたほうが安心かなってことで、一応複数バージョンを切り替えれるようにしてあるって感じ。
兎にも角にも、アーカイブされたファイルを展開するだけで動くってのが、やっぱりポータビリティ高くて素晴らしいなと思う。