概要
筆者はこれまで各言語のバージョン管理を*envで行い、env群の管理をanyenvで行ってきました。しかし、anyenvは公式GitHubの更新が数年前から事実上停止しており、今後出て来るであろう新たなenvへの対応は恐らくないものと推察1されます。しかも、Pythonの管理をこれまでpyenvでバージョン管理し、ライブラリ群の管理はPipenvで行うという方式を採用してきましたが、uvを使えば1つで両方管理出来ることを知りました。しかし、anyenvはuvの管理には対応していません。そこで、新たなバージョン管理用アプリをGemini君にお勧めしてもらった所、miseを勧められました。これは開発環境のバージョン管理を行う新興のOSSの様です。早速乗り換えてみた所、なかなかの使い易さでした。
前準備: anyenv及び*envをアンインストール
anyenvで構築した*env環境をアンインストールします。最近はあまりプライベートでコードが書けていなかったのを反省していた所でしたが、環境乗り換えには好都合でした。依存関係を誤って破壊してしまうとトラブルシューティングに手間取るので慎重に進めます。
各*envで構築した環境のアンインストール
ゴミが大量に残ると厄介なので、anyenvでインストールした各*envで構築した環境をアンインストールします。筆者の場合、pyevn, rbenv, nodenv, goenvがインストールされていました。
$ anyenv versions
goenv:
* 1.19.2 (set by /Users/user/.anyenv/envs/goenv/version)
nodenv:
* 24.13.1 (set by /Users/user/.anyenv/envs/nodenv/version)
pyenv:
system
* 3.12.8 (set by /Users/user/.anyenv/envs/pyenv/version)
rbenv:
system
3.1.2
* 4.0.1 (set by /Users/user/.anyenv/envs/rbenv/version)
完了したら、各*envをアンインストールします。(以下はpyenvの例)
anyenv uninstall pyenv
anyenvをアンインストール
anyenvをアンインストールします。筆者はMacなのでHomebrewを用いました。
brew uninstall anyenv
.bash_profile, .bashrc内の環境変数を削除
.bash_profile, .bashrc内のanyenv, *env関連の環境変数を削除またはコメントアウトします。
# anyenv
eval "$(anyenv init -)"
miseのインストール
前準備が完了したらmiseをインストールします。Homebrewを用いると簡単です。
brew install mise
自動でPATHなども通してくれるため、インストール完了後から使えます。
$ mise version
_ __
____ ___ (_)_______ ___ ____ ____ / /___ _________
/ __ `__ \/ / ___/ _ \______/ _ \/ __ \______/ __ \/ / __ `/ ___/ _ \
/ / / / / / (__ ) __/_____/ __/ / / /_____/ /_/ / / /_/ / /__/ __/
/_/ /_/ /_/_/____/\___/ \___/_/ /_/ / .___/_/\__,_/\___/\___/
/_/ by @jdx
2026.5.16 macos-arm64 (2026-05-28)
以下を.bash_profileに追記します。
eval "$(mise activate bash)"
.bash_profileを再読み込みします。
source .bash_profile
Bash Completionの有効化
TAB補完は必須なので設定。
mise use -g usage
mkdir -p ~/.local/share/bash-completion/completions
mise completion bash --include-bash-completion-lib > ~/.local/share/bash-completion/completions/mise
環境の再構築
anyenvで*envを管理していた頃の環境を復元しようと思います。但し、Pythonについてはuvで管理することとし、uvの管理をmiseで実施しようと思います。加えてnodeはLTSバージョンをインストールしたいのでバージョン番号を明に指定しています。それ以外はlatestで指定しています。(Rubyについてはインストール時にbuildを実行するオプションを有効化しています。無効化されている場合、警告が出ます。)
mise use --global uv@latest
mise use --global go@latest
mise settings ruby.compile=true
mise use --global ruby@latest
mise use --global node@24.13.1
インストール完了後、バージョン一覧を確認します。
$ mise ls
Tool Version Source Requested
go 1.26.3 ~/.config/mise/config.toml latest
node 24.13.1 ~/.config/mise/config.toml 24.13.1
ruby 4.0.5 ~/.config/mise/config.toml latest
uv 0.11.17 ~/.config/mise/config.toml latest
この後、uvによるPythonの環境構築もテストしてみましたが成功しました。以下、その時のサンプルです。(Git管理のリポジトリとして初期化したい場合は作成したディレクトリ配下でuv initを実行します。)
$ mkdir python_test
$ cd python_test/
$ uv venv --python 3.14
Using CPython 3.14.4 interpreter at: /opt/homebrew/opt/python@3.14/bin/python3.14
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
$ uv run python --version
Python 3.14.4
まとめ
anyenvによる環境管理に限界を感じていたところだったので、miseに乗り換えて心機一転環境構築を行い、無事完了しました。まだ、miseもuvも使い熟せていないので色々と試しながら覚えていこうと思います。
-
最後の更新は4年前です。筆者も以前Pull Requestを出しましたが、いまだレビューもマージもなされていません。 ↩