バージョン管理ツールasdfを使ってみた

こんにちは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

基本的な使い方

特定のバージョンの言語を使えるようにするまでに以下のようなステップを踏みます

  1. pluginのインストール
  2. 利用可能なバージョンのチェック
  3. 使用したいバージョンのインストール
  4. 現在使用されているバージョンの確認
  5. ローカルのバージョン設定
  6. グローバルでのバージョン設定

今回は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と共に歩んでいこうと思いました。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です