asdf から miseへの乗り換えを実施

はじめに
最近 mise
が主流になりつつあるのでバージョン管理を asdf
から mise
に変更する。
以下にとても分かりやすいまとめ記事があるので参考にさせて頂く。
ちなみに mise
のプラグインは asdf
のものをそのまま流用する形になっているようで互換性の面は安心出来る。

ちなみに日本語の読み方は ミーズ
で良いみたい(多分)

インストールされている asdf プラグインの確認
asdf list
を実行してプラグインの一覧を表示する。
自分の環境だと以下の通り。
bun
1.2.15
nodejs
*22.16.0
terraform
1.9.8
最近PCを新しくしたばかりなので、そこまで多くのプラグインは入っていない。
ちなみに以下はPCを乗り換えた際のスクラップブック。

インストールされている asdf プラグインの削除
まず最初に asdf
でインストールした各ソフトウェアのバージョンを削除する。
インストールされている数が多くても生成AIに asdf list
の結果を渡せば簡単にコマンドを生成出来るので特に問題はないと思う。
asdf uninstall nodejs 22.16.0
asdf uninstall bun 1.2.15
asdf uninstall terraform 1.9.8
続いてプラグインの削除を実施。
自分の環境の場合は以下を実行すればOKだった。
asdf plugin remove nodejs
asdf plugin remove bun
asdf plugin remove terraform

asdfの削除
以下を実行する。
brew uninstall asdf --force
brew autoremove
ちなみに Homebrew 4.3 以降 の場合は brew autoremove
が自動的に実行される模様。
自分は一応明示的に brew autoremove
を実行した。
~/.zshrc
から以下の記述を削除
以下の箇所が残っているので削除。
# asdf(v0.16以降)
export PATH="${ASDF_DATA_DIR:-$HOME/.asdf}/shims:$PATH"
ローカルファイルの削除
自分の環境だと以下のファイルが残っていたので削除。
rm -rf ~/.asdf
rm -rf ~/.tool-versions
環境によっては ~/.asdfrc
が残っている場合もあるので削除する。
最終確認
以下を実行する。
brew list asdf
Error: The current working directory must exist to run brew.
のように表示されればOK。
asdf --version
を実行して zsh: command not found: asdf
のエラーが出れば問題なく削除出来ている。

miseのインストール
以下を実行する。
brew install mise
mise --version
を実行して以下のように表示されれば成功。
_ __
____ ___ (_)_______ ___ ____ ____ / /___ _________
/ __ `__ \/ / ___/ _ \______/ _ \/ __ \______/ __ \/ / __ `/ ___/ _ \
/ / / / / / (__ ) __/_____/ __/ / / /_____/ /_/ / / /_/ / /__/ __/
/_/ /_/ /_/_/____/\___/ \___/_/ /_/ / .___/_/\__,_/\___/\___/
/_/ by @jdx
2025.6.4 macos-arm64 (2025-06-13)

echo 'eval "$(mise activate zsh)"' >> ~/.zshrc
を実行する。
そうすると以下が ~/.zshrc
に追加されるのでこれを実行しておく。
eval "$(mise activate zsh)"

mise 基本的な使い方
公式ドキュメントはここにある
インストール可能なプラグイン一覧を表示
mise plugins ls-remote
ただしコア機能として組み込まれているプラグインはここには出てこない。
コア機能として組み込まれているプラグインの一覧は以下のコマンドで確認可能。
mise plugins ls --core
今後増える可能性もあるが以下は2025年6月14日現在の一覧。
bun
deno
elixir
erlang
go
java
node
python
ruby
rust
swift
zig
コア機能の一覧は以下のドキュメントからも確認可能。
コア機能に含まれてるプラグインに関しては追加を行う必要はなくそのまま利用出来る。

プラグインの確認コマンドを記載したが基本的にはプラグインを明示的にインストールする行為は不要。
直接インストールしたいパッケージを指定すれば必要なプラグインもインストールされる。

miseでNode.jsの設定を行う
インストール可能なNode.js バージョンの一覧
mise ls-remote node
指定したバージョンのNode.jsをインストール
mise install node@22.16.0
全体で利用するNode.js のバージョンを固定
mise use --global node@22.16.0
いつも全体で使っているパッケージをインストール
npm install -g vercel
npm install -g npm-check-updates
npm install -g @anthropic-ai/claude-code
以下を実行してそれぞれのツールが問題なく利用出来る事を確認。
vercel --version
ncu --version
claude --version
vercel --version
Vercel CLI 43.1.0
43.1.0
ncu --version
18.0.1
claude --version
1.0.24 (Claude Code)

pnpm を利用したい場合
mise use --global node@22.16.0
が実行された後で以下を実行する。
corepack enable
pnpm -v
や yarn --version
が実行可能になる。

uv
との競合について
uv
を使ってPythonバージョンを管理しているプロジェクトに移動すると以下の警告が出た。
mise WARN deprecated [idiomatic_version_file_enable_tools]:
Idiomatic version files like ~/gitrepos/◯◯/.python-version are currently enabled by default. However, this will change in mise 2025.10.0 to instead default to disabled.
You can remove this warning by explicitly enabling idiomatic version files for python with:
mise settings add idiomatic_version_file_enable_tools python
You can disable idiomatic version files with:
mise settings add idiomatic_version_file_enable_tools "[]"
See https://github.com/jdx/mise/discussions/4345 for more information.
uvは uv python pin [バージョン]
のコマンドで .python-version
を生成するが mise
は将来的に .python-version
や .nvmrc
を読み込まない仕様になる為にこの警告が表示されている。
警告メッセージに従いこれらのファイルを読み込まないように以下のコマンドを実行する。
mise settings add idiomatic_version_file_enable_tools "[]"
less ~/.config/mise/config.toml
で設定ファイルを見るとちゃんと反映されている事が確認出来る。
[tools]
node = "latest"
[settings]
idiomatic_version_file_enable_tools = []
ちなみにPythonのバージョン管理については今後も uv
を使い続けるつもりだ。
uv
がPython管理のデファクトスタンダードになりつつある現状もあるし、何より複雑なPythonの仮想環境周りの管理もシンプルに実現出来るのがその理由だ。

ちなみに以前書いた uv
のスクラップはこちら

Terraform を miseで管理する
インストール可能なTerraformのバージョンを確認
mise ls-remote terraform
指定バージョンの Terraform をインストール
mise install terraform@1.10.5
特定プロジェクトで先程インストールしたTerraformを利用
今回は --global
を使わないで固有プロジェクト専用とするのでプロジェクトルートで以下を実行。
mise use terraform@1.10.5
terraform -v
を実行して以下が表示されれば問題なし。
Terraform v1.10.5
on darwin_arm64
Your version of Terraform is out of date! The latest version
is 1.12.2. You can update by downloading from https://www.terraform.io/downloads.html

Bun を miseで管理する
インストール可能な Bun のバージョンを確認
mise ls-remote bun
指定バージョンのBunをインストール
mise install bun@1.2.16
特定プロジェクトで先ほどインストールしたBunを利用
こちらもNode.jsとは違い特定プロジェクトでのみ利用しているのでプロジェクトルートで以下を実行。
mise use bun@1.2.16
bun --version
で以下が表示されればOK。
bun --version
1.2.16

以上で乗り換え完了。
asdf
と違ってプラグインのインストールが不要になったのが楽で良い。
Rust製という事もあり応答も早いので良さそう。