Node.js・Python・Go・Rubyなど、複数言語のバージョン管理は意外と面倒です。mise(旧rtx)を使えば、それらを1つのツールで統一管理でき、プロジェクトごとの自動切替も自動化できます。本記事では、miseの使い方を解説します。
miseとは
miseは、Rust製の高速なランタイムマネージャです。asdf互換のプラグインを使え、Node・Python・Go・Ruby・Java・Terraformなど100以上の対象を一元管理できます。
インストール
# Mac
brew install mise
# 環境変数を有効化(zshの例)
echo 'eval "$(mise activate zsh)"' >> ~/.zshrc
ランタイムのインストール
mise install node@20
mise install python@3.12
mise install go@1.22
# グローバルデフォルト
mise use --global node@20
プロジェクトごとの設定
# プロジェクトディレクトリで
mise use node@22 python@3.13
# .mise.toml ファイルが生成される
# .mise.toml
[tools]
node = "22"
python = "3.13"
go = "1.22"
このディレクトリに入ると自動的にバージョンが切り替わります。
環境変数管理
# .mise.toml
[env]
DATABASE_URL = "postgres://localhost/dev"
NODE_ENV = "development"
.envと異なり、Gitに含めない場合はlocal設定(mise.local.toml)にすればOKです。
タスクランナー機能
# .mise.toml
[tasks.dev]
run = "npm run dev"
[tasks.test]
run = "npm test"
depends = ["lint"]
[tasks.lint]
run = "eslint ."
# 実行
mise run dev
mise run test
他ツールとの比較
- nodenv / pyenv / rbenv:言語ごとに個別運用
- asdf:多言語対応だがshell scriptで遅め
- mise:asdfと互換ありつつRustで爆速
まとめ
miseは「複数言語+環境変数+タスクランナー」を1ツールにまとめる便利なランタイムマネージャです。.mise.tomlに書くだけで、プロジェクトの開発環境が再現可能になり、チーム間の環境差異も激減します。多言語プロジェクトの方は導入を検討する価値が大きいです。