Closed16

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

keitaknkeitakn

はじめに

最近 mise が主流になりつつあるのでバージョン管理を asdf から mise に変更する。

以下にとても分かりやすいまとめ記事があるので参考にさせて頂く。

https://zenn.dev/b0b/articles/asdf-to-mise-migration

ちなみに mise のプラグインは asdf のものをそのまま流用する形になっているようで互換性の面は安心出来る。

keitaknkeitakn

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

keitaknkeitakn

インストールされている asdf プラグインの確認

asdf list を実行してプラグインの一覧を表示する。

自分の環境だと以下の通り。

bun
  1.2.15
nodejs
 *22.16.0
terraform
  1.9.8

最近PCを新しくしたばかりなので、そこまで多くのプラグインは入っていない。
ちなみに以下はPCを乗り換えた際のスクラップブック。

https://zenn.dev/keitakn/scraps/176f64e0fd682a

keitaknkeitakn

インストールされている 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
keitaknkeitakn

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 のエラーが出れば問題なく削除出来ている。

keitaknkeitakn

miseのインストール

以下を実行する。

brew install mise

mise --version を実行して以下のように表示されれば成功。

              _                                        __              
   ____ ___  (_)_______        ___  ____        ____  / /___ _________
  / __ `__ \/ / ___/ _ \______/ _ \/ __ \______/ __ \/ / __ `/ ___/ _ \
 / / / / / / (__  )  __/_____/  __/ / / /_____/ /_/ / / /_/ / /__/  __/
/_/ /_/ /_/_/____/\___/      \___/_/ /_/     / .___/_/\__,_/\___/\___/
                                            /_/                 by @jdx
2025.6.4 macos-arm64 (2025-06-13)
keitaknkeitakn

echo 'eval "$(mise activate zsh)"' >> ~/.zshrc を実行する。

そうすると以下が ~/.zshrc に追加されるのでこれを実行しておく。

eval "$(mise activate zsh)"
keitaknkeitakn

mise 基本的な使い方

公式ドキュメントはここにある

https://mise.jdx.dev/

インストール可能なプラグイン一覧を表示

mise plugins ls-remote

ただしコア機能として組み込まれているプラグインはここには出てこない。

コア機能として組み込まれているプラグインの一覧は以下のコマンドで確認可能。

mise plugins ls --core

今後増える可能性もあるが以下は2025年6月14日現在の一覧。

bun
deno
elixir
erlang
go
java
node
python
ruby
rust
swift
zig

コア機能の一覧は以下のドキュメントからも確認可能。

https://mise.jdx.dev/core-tools.html

コア機能に含まれてるプラグインに関しては追加を行う必要はなくそのまま利用出来る。

keitaknkeitakn

プラグインの確認コマンドを記載したが基本的にはプラグインを明示的にインストールする行為は不要。

直接インストールしたいパッケージを指定すれば必要なプラグインもインストールされる。

keitaknkeitakn

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)
keitaknkeitakn

pnpm を利用したい場合

mise use --global node@22.16.0 が実行された後で以下を実行する。

corepack enable

pnpm -vyarn --version が実行可能になる。

keitaknkeitakn

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の仮想環境周りの管理もシンプルに実現出来るのがその理由だ。

keitaknkeitakn

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
keitaknkeitakn

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
keitaknkeitakn

以上で乗り換え完了。

asdf と違ってプラグインのインストールが不要になったのが楽で良い。

Rust製という事もあり応答も早いので良さそう。

このスクラップは3ヶ月前にクローズされました