こちらの記事を読んで、mise を使いたくなりました。
今までは anyenv を使用していたのですが、mise に切り替えようと思います。すでに Qiita や Zenn などに切り替えの方法を記事として書いてくれていた方が多くいらっしゃったのですが、自分の環境で同じようにできるか不安だったため、慎重に進めました。
そのメモとして、この Qiita 記事を書いておきます!
今の状況の確認
私の環境はこんな感じです。
PC: MacBook Pro M3 Max
OS: Tahoe 26.0.1
Shell: zsh
分かりやすいように、コマンドは以下のように書きます。
tomoki_saito@xeno-mbp の部分は、私の Mac のアカウント名です。
まず、anyenv でどの環境を使っているかを確認しました。
tomoki_saito@xeno-mbp ~ % anyenv envs
nodenv
phpenv
続いて、nodenv でどのバージョンの Node.js をインストールしているかを確認しました。
tomoki_saito@xeno-mbp ~ % nodenv versions
system
18.18.2
* 22.20.0 (set by /Users/tomoki_saito/.anyenv/envs/nodenv/version)
23.7.0
24.9.0
そして、phpenv でどのバージョンの PHP をインストールしているかを確認しました。
tomoki_saito@xeno-mbp ~ % phpenv versions
system
7.4.6
8.0.9
8.1.0
8.1.2
* 8.1.4 (set by /Users/tomoki_saito/.anyenv/envs/phpenv/version)
一応パッケージも確認
念の為、Node.js, PHP のそれぞれのバージョンにグローバルでインストールされているパッケージを確認しておきます。
このシェルスクリプトを使います。
※各バージョンに切り替えて確認していっても良いのですが、面倒なので一気に見ます
nodenv versions | while read -r version; do
version=$(echo $version | sed 's/[* ]//g')
if [[ $version != "system" ]]; then
echo "=== $version ==="
NODENV_VERSION=$version npm list -g --depth=0
fi
done
私の場合、このような結果になりました。
=== 18.18.2 ===
/Users/tomoki_saito/.anyenv/envs/nodenv/versions/18.18.2/lib
├── @google/clasp@2.4.2
├── corepack@0.19.0
├── npm-check-updates@17.0.6
├── npm@9.8.1
├── pnpm@10.9.0
├── update@0.7.4
├── vercel@39.2.2
├── wrangler@4.14.3
└── yarn@1.22.22
=== 22.20.0(setby/Users/tomoki_saito/.anyenv/envs/nodenv/version) ===
nodenv: version `22.20.0(setby/Users/tomoki_saito/.anyenv/envs/nodenv/version)' is not installed (set by NODENV_VERSION environment variable)
=== 23.7.0 ===
/Users/tomoki_saito/.anyenv/envs/nodenv/versions/23.7.0/lib
├── @anthropic-ai/claude-code@2.0.1
├── @biomejs/biome@2.2.4
├── corepack@0.33.0
├── create-next-app@15.5.4
├── npm@11.6.1
├── ts-node@10.9.2
├── vercel@48.1.6
└── wrangler@4.40.3
=== 24.9.0 ===
/Users/tomoki_saito/.anyenv/envs/nodenv/versions/24.9.0/lib
├── @anthropic-ai/claude-code@2.0.27
├── @biomejs/biome@2.3.1
├── ccusage@17.1.3
├── corepack@0.34.1
├── npm@11.6.2
├── pnpm@10.19.0
├── vercel@48.6.0
├── wrangler@4.45.0
└── wrnagler@1.0.0
現在 global に設定している v22.20.0 だけうまく表示されないので、
npm list -g
で確認します。結果は以下のようになりました。
tomoki_saito@xeno-mbp ~ % npm list -g
/Users/tomoki_saito/.anyenv/envs/nodenv/versions/22.20.0/lib
├── corepack@0.34.1
├── npm@11.6.2
├── pnpm@10.20.0
├── wrangler@4.45.3
└── yarn@1.22.22
私の場合、あまり多くのパッケージをグローバルにインストールしていないので、ここの段階で何か準備するというよりは「これらのパッケージをインストールしてたんだなぁ」と、メモとして控えておけば良さそうです。
mise のインストール
公式情報はこちらです。
私は brew でインストールしました。
brew install mise
ちゃんと使えるかを確認します。
tomoki_saito@xeno-mbp ~ % mise -V
_ __
____ ___ (_)_______ ___ ____ ____ / /___ _________
/ __ `__ \/ / ___/ _ \______/ _ \/ __ \______/ __ \/ / __ `/ ___/ _ \
/ / / / / / (__ ) __/_____/ __/ / / /_____/ /_/ / / /_/ / /__/ __/
/_/ /_/ /_/_/____/\___/ \___/_/ /_/ / .___/_/\__,_/\___/\___/
/_/ by @jdx
2025.10.21 macos-arm64 (2025-10-30)
かっこいい
mise のセットアップ
こちらにある通り、Shell で mise をアクティベートします。
zsh の設定ファイルの末尾に記載します。
echo 'eval "$(mise activate zsh)"' >> ~/.zshrc
設定ファイルを再読み込みします。
source ~/.zshrc
mise にインストールできる Node.js, PHP のバージョンを確認します。
mise には ls-remote というコマンドがあります。
Node.js
tomoki_saito@xeno-mbp ~ % mise ls-remote node
0.1.14
0.1.15
... (長いので省略)
25.0.0
25.1.0
PHP
tomoki_saito@xeno-mbp ~ % mise ls-remote php
4.0.0
4.0RC1
... (長いので省略)
8.5.0beta2
8.5.0beta3
ちなみに、PHP についてはコミュニティのプラグイン (asdf-php) が使用されています。
では、ここで確認したバージョンの内、使うものを mise でインストールします。
私の場合は、今のバージョンをそっくりそのままインストールするのではなく、使っているバージョンとこれから使いたいバージョンだけインストールしておきます。
mise install node@22.20.0 node@25.1.0 php@8.4.14
少し時間はかかるのですが、インストールが完了します。
きちんとインストールできたかを確認します。
tomoki_saito@xeno-mbp ~ % mise ls
Tool Version Source Requested
node 22.20.0
node 25.1.0
php 8.4.14
mise で使う Node.js, PHP のバージョンを指定します。
tomoki_saito@xeno-mbp ~ % mise use --global node@22.20.0
mise ~/.config/mise/config.toml tools: node@22.20.0
tomoki_saito@xeno-mbp ~ % mise use --global php@8.4.14
mise ~/.config/mise/config.toml tools: php@8.4.14
※ちなみに、ここでインストールされていない場合はインストールされるので、先ほどの install を飛ばしていきなり use でも大丈夫です。
シェルに記載されている通り、~/.config/mise/config.toml が設定ファイルのパスです。せっかくなので、中身を見ておきましょう。
tomoki_saito@xeno-mbp ~ % cat ~/.config/mise/config.toml
[tools]
node = "22.20.0"
php = "8.4.14"
このように、toml 形式で設定が保存されています。
また、Node.js, PHP のパスも確認しておきましょう。
tomoki_saito@xeno-mbp ~ % which node
/Users/tomoki_saito/.local/share/mise/installs/node/22.20.0/bin/node
tomoki_saito@xeno-mbp ~ % which php
/Users/tomoki_saito/.local/share/mise/installs/php/8.4.14/bin/php
このように、mise/installs の配下にあります。
ちなみに、mise use を実行する前のパスはここでした。
tomoki_saito@xeno-mbp ~ % which node
/Users/tomoki_saito/.anyenv/envs/nodenv/shims/node
tomoki_saito@xeno-mbp ~ % which php
/Users/tomoki_saito/.anyenv/envs/phpenv/shims/php
ここまででセットアップは完了です!
anyenv のクリーンアップ
もうこれで Node.js, PHP を mise で使うことはできるのですが、今まで使っていた anyenv およびここ経由でインストールしていた Node.js, PHP を削除しておきます。
まず、zsh の設定から、anyenv 関連の記述を削除します。
cat ~/.zshrc
私の場合、以下の部分が関係しています。
eval "$(pyenv init --path)"
eval "$(anyenv init -)"
export PATH="$HOME/.phpenv/bin:$PATH"
eval "$(phpenv init -)"
では、Vim で設定ファイルを開いて削除します。
vim ~/.zshrc
i で書き込みモードに切り替え、上記のような記述を消し、escape からの :wq で保存します。
保存したら、設定ファイルを再読み込みします。
source ~/.zshrc
続いて、anyenv 関連のファイルなどを削除します。
rm -rf ~/.anyenv
きちんと削除されています。
tomoki_saito@xeno-mbp ~ % ls ~/.anyenv
ls: /Users/tomoki_saito/.anyenv: No such file or directory
私の場合は brew で anyenv をインストールしていたので、ここからもアンインストールします。
tomoki_saito@xeno-mbp ~ % brew uninstall anyenv
Uninstalling /opt/homebrew/Cellar/anyenv/1.1.5... (23 files, 31.1KB)
まとめ
これで anyenv から mise への移行がスッキリ完了しました!
mise はバージョン管理だけでなくタスクランナーとしても使えるので、これから色々と試してみようと思います!