Goのバージョン管理:miseとgoenvの使い方
はじめに
バージョン管理ツールを使えば、プロジェクトごとにGoのバージョンを自動で切り替えられます。この記事ではよく使われる goenv と、最近人気の mise の使い方を解説します。
バージョン確認コマンドは「Goのバージョン確認方法まとめ」を参照してください。
mise(推奨)
miseはRust製のバージョン管理ツールで、Go・Node.js・Python・Rubyなど複数言語を1つのツールで管理できます。
インストール
# macOS(Homebrew) brew install mise # シェルに設定を追加 echo 'eval "$(mise activate zsh)"' >> ~/.zshrc source ~/.zshrc
Goをインストールする
# インストール可能なバージョンを確認 mise ls-remote go # 特定バージョンをインストール mise install go@1.23 # 最新バージョンをインストール mise install go@latest
バージョンを切り替える
# グローバル(デフォルト)に設定 mise use --global go@1.23 # プロジェクトごとに設定(.mise.tomlを作成) mise use go@1.22
プロジェクトディレクトリに .mise.toml が作成されます。
[tools] go = "1.22"
このファイルをgitで管理することで、チームで同じバージョンを使えます。
バージョンを確認する
go version # go version go1.23.2 darwin/arm64 mise list go # go 1.23.2 ~/dev/myproject/.mise.toml
goenv
goenvはGo専用のバージョン管理ツールです。rbenv・pyenvと同じ仕組みで動作します。
インストール
# goenvをインストール git clone https://github.com/go-nv/goenv.git ~/.goenv # シェルに設定を追加 echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.zshrc echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.zshrc echo 'eval "$(goenv init -)"' >> ~/.zshrc source ~/.zshrc
Goをインストールする
# インストール可能なバージョンを確認 goenv install --list # 特定バージョンをインストール goenv install 1.23.2 # インストール済みバージョンを確認 goenv versions
バージョンを切り替える
# グローバルに設定 goenv global 1.23.2 # プロジェクトごとに設定(.go-versionを作成) goenv local 1.22.8
goenv local を実行するとプロジェクトディレクトリに .go-version ファイルが作成されます。
1.22.8
バージョンを確認する
go version # go version go1.22.8 darwin/arm64 goenv versions # 1.22.8 # * 1.23.2 (set by /Users/username/.goenv/version)
miseとgoenvの比較
| mise | goenv | |
|---|---|---|
| 対応言語 | 多言語(Go・Node.js・Python等) | Go専用 |
| インストール | brew install mise |
git clone + シェル設定 |
| 設定ファイル | .mise.toml |
.go-version |
| 他ツールとの共存 | しやすい | Goのみ |
GoだけでなくNode.jsやPythonも管理するなら mise が手軽でおすすめです。Go専用で使い慣れたrbenv系がいい場合は goenv を選んでください。
GOPATH と GOROOT について
バージョン管理ツールを使う場合、GOPATH と GOROOT を明示的に設定する必要はありません。ツールが自動で設定します。
# 現在の設定を確認 go env GOROOT # Goのインストールパス go env GOPATH # モジュールキャッシュ等のパス
まとめ
| ツール | インストール | バージョン指定 | 確認 |
|---|---|---|---|
| mise | brew install mise |
mise use go@1.23 |
mise list go |
| goenv | git clone + シェル設定 | goenv local 1.23.2 |
goenv versions |
- 多言語環境なら mise がおすすめ
- Go専用で使いたい場合は goenv
.mise.toml/.go-versionをgit管理することでチームのバージョンを統一できる