notes
Tools

mise (polyglot dev env manager)

言語バージョン + 環境変数 + タスクランナーを 1 つに束ねる Rust 製ツール。asdf/direnv/make の代替。

要点#

mise (発音「ミーズ」、旧名 rtx) は polyglot な開発環境マネージャ。Rust 製。言語バージョン管理・環境変数・タスクランナーの 3 領域を .mise.toml 1 ファイルにまとめる。

3 つの役割#

領域従来ツールmise
言語バージョンasdf / nvm / pyenv / rbenvmise use node@22
ディレクトリ別 envdirenv[env] in .mise.toml
タスクランナーmake / npm scripts / justmise 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 の後に build
  • cd すると 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 との違い#

asdfmise
実装言語BashRust
バージョン切替shimPATH 差し替え
設定.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)
最終更新:

On this page