Tools
mise (polyglot dev env manager)
言語バージョン + 環境変数 + タスクランナーを 1 つに束ねる Rust 製ツール。asdf/direnv/make の代替。
要点
mise (発音「ミーズ」、旧名 rtx) は polyglot な開発環境マネージャ。Rust 製。言語バージョン管理・環境変数・タスクランナーの 3 領域を .mise.toml 1 ファイルにまとめる。
3 つの役割
| 領域 | 従来ツール | mise |
|---|---|---|
| 言語バージョン | asdf / nvm / pyenv / rbenv | mise use node@22 |
| ディレクトリ別 env | direnv | [env] in .mise.toml |
| タスクランナー | make / npm scripts / just | mise run build |
.mise.toml の例
[tools]
node = "22"
python = "3.12"
rust = "1.85"
[env]
DATABASE_URL = "postgres://localhost/dev"
[tasks.test]
run = "cargo test"
[tasks.build]
depends = ["test"]
run = "cargo build --release"mise install— 指定バージョンを全部入れるmise run build—testの後にbuildcdすると shell hook でツールと env が切り替わる
特徴
- asdf 互換:
.tool-versionsを読める、asdf plugin も使える - shim を使わない: PATH 差し替え方式。asdf より起動が速く、
which nodeが実体パスを返す - 単一設定ファイル: TOML 1 つでツール・env・タスクが揃う (asdf は
.tool-versions、direnv は.envrcと分散) - 自動アクティベート: shell への hook (
eval "$(mise activate bash)") でcdするだけで切り替わる
asdf との違い
| asdf | mise | |
|---|---|---|
| 実装言語 | Bash | Rust |
| バージョン切替 | shim | PATH 差し替え |
| 設定 | .tool-versions (plain) | .mise.toml |
| env 管理 | 無 (direnv 別途) | 内蔵 |
| task runner | 無 | 内蔵 |
| 起動速度 | 遅い (shim 経由) | 速い |
インストール
curl https://mise.run | sh
echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc
# fish:
echo 'mise activate fish | source' >> ~/.config/fish/config.fish用途
- 複数言語プロジェクト (フロント Node、バック Python、CLI Rust) を 1 ファイルで管理
- CI と手元で同じバージョンを再現 (CI で
mise installを叩く) - チーム内で「node のバージョン合ってない」問題を排除
- direnv + asdf + make の 3 ツール依存を減らす
関連
- asdf (先行の polyglot version manager)
- direnv (ディレクトリ別 env)
最終更新: