mise(旧rtx)でランタイムを一元管理する方法

開発ツール

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に書くだけで、プロジェクトの開発環境が再現可能になり、チーム間の環境差異も激減します。多言語プロジェクトの方は導入を検討する価値が大きいです。