こんにちはPS/SLの佐々木です。
今回はバージョン管理ツールasdfを使ってみようと思います
https://asdf-vm.com/guide/introduction.html
asdfとは
asdfとはツールのバージョンマネージャーです。
従来は言語ごとにnvmやrenv pyenvなどバージョン管理ツールを使用していたと思います。
しかしasdfを使用するとこれらのバージョン管理ツールは不要になり全てasdfで管理できるようになります。
私もnode.jsのバージョン管理にnodenv, n, nvmなど一つの言語で複数のバージョン管理ツールが共存していると言う非常にカオスなローカル環境が出来上がっていたり、久しぶりに触る言語で何のバージョン管理ツールを使用していたのか調べるのが面倒だったりと色々悩まされていましたが、asdfで全て解決されそうな予感。。。
インストール方法
https://asdf-vm.com/guide/getting-started.html#_1-install-dependencies
今回はMacbookを使用したInstall方法を紹介します。
そのほかのインストール方法は上記のリンクを参考にinstallしてみてください。
brew install asdf
今回はzshにhomebrewでinstallしているので以下のコマンドを実行します
echo -e "\\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc
基本的な使い方
特定のバージョンの言語を使えるようにするまでに以下のようなステップを踏みます
- pluginのインストール
- 利用可能なバージョンのチェック
- 使用したいバージョンのインストール
- 現在使用されているバージョンの確認
- ローカルのバージョン設定
- グローバルでのバージョン設定
今回はgoを使えるようにします。
まず使用できるpluginの一覧を調べます。
一覧を全て表示すると非常に多いのでgrepしています。
asdf plugin list all | grep golang
golang *<https://github.com/asdf-community/asdf-golang.git>
golangci-lint <https://github.com/hypnoglow/asdf-golangci-lint.git>
golangのプラグインを導入します
asdf plugin add nodejs h[ttps://github.com/asdf-community/asdf-golang.git](<https://github.com/asdf-community/asdf-golang.git>)
installすることができるgoのバージョンを調べます
asdf list all golang
とりあえず最新バージョンのgoをinstallしてみましょう
asdf install golang latest
installできました!
asdf list golang
*1.23.3
goのバージョンを確認してみたのですが、go command not foundということでどうやらパスが通ってないっぽいので以下のコマンドを実行します
export PATH="$HOME/.asdf/shims:$PATH"
これで再度goのバージョンを確認します
go version
go version go1.23.3 darwin/amd64
うまくいきました!
go version
go version go1.23.3 darwin/amd64
ではバージョンを切り替えてみます。
少し古いバージョンのgolangをinstallします
asdf install golang 1.19.4
installできました
asdf list golang
1.19.4
*1.23.3
まだバージョンはlatestのままですね。
go version
go version go1.23.3 darwin/amd64
バージョンを切り替えます
asdf global golang 1.19.4
go version
go version go1.19.4 darwin/amd64
かわっていますね!
応用
複数のプロジェクトを並行して行なっている場合にプロジェクトに応じでバージョンを切り替えたいですよね。
そのような場合にasdfではディレクトリ単位でバージョンを管理することができます。
適当にディレクトリを作ってバージョンをセットしてみます。
mkdir gopj && cd gopj
asdf local golang latest
go version
このようにすると.tool-versions
というファイルが作成されます。
このファイルにはツールのバージョンが記載されています。
ls -la
-rw-r--r--@ 1 kantasasaki staff 14 Nov 29 15:44 .tool-versions
cat .tool-versions
golang 1.23.3
ディレクトリを元に戻すとgoのバージョンがglobalに設定していたものに戻っています。
ちゃんとプロジェクトごとにシームレスにバージョン管理がされていることが確認できました。
cd ../
go version
go version go1.19.4 darwin/amd64
まとめ
今回はasdfの簡単な使い方について解説しました。
複数のツールのバージョンを一括で管理することができ、さらにプロジェクトごとに使用したいバージョンをシームレスに管理できるのは非常に素晴らしいですね。
これからの人生asdfと共に歩んでいこうと思いました。