mise logo

mise

開く

1つの mise.toml で開発ツール導入、環境変数読み込み、タスク実行まで行う多言語 CLI。asdf 互換、Rust 製、MIT ライセンス。

共有:

mise

mise(発音は “meez”、正式には mise-en-place)は Jeff Dickey による多言語開発環境 CLI です。リポジトリに置いた 1 つの mise.toml でランタイムとツールを入れ、プロジェクトの環境変数を読み、共有タスクを実行します。名前は、料理を始める前に食材と道具を所定の位置へ置くフランス語の “mise en place” から来ています。GitHub リポジトリは MIT ライセンスの Rust プロジェクトで、2023 年 1 月 9 日に作成され、現在約 3.25 万スターです。今回確認した最新の公式リリースは v2026.8.6 です。

主な機能

  • 1つの設定で開発ツールを管理mise.toml に Node、Python、Ruby、Go、Java、Rust、Terraform、kubectl、その他 1000 以上のツールを固定できます。mise use node@26 ならプラグイン、ランタイム、バージョン指定を一度に済ませます。
  • PATH だけではない環境管理:ディレクトリに入ると .env、プロジェクト環境変数、Python virtualenv を読み込みます。秘密情報は平文ではなく sops や age を通せます。
  • タスクランナーtestlintbuild、デプロイコマンドを、必要なツールの隣に書いて mise run で実行します。
  • asdf 互換だが asdf そのものではない.tool-versions を読め、asdf プラグインも使えます。ただし Cosign、SLSA、Minisign、GitHub attestation を備えた aqua や GitHub などのバックエンドを優先します。
  • activate か exec か:対話シェルでは mise activate が PATH を更新します。CI やスクリプトではアクティベート不要の mise exec / mise run の方が安全です。
  • Windows 対応:asdf 以外のバックエンドならベンダー提供の Windows バイナリを入れられます。asdf 自体は今も Windows で動きません。

使用シナリオ

  • 多言語リポジトリ:1 ファイルで nvm、pyenv、rbenv などの言語別バージョンマネージャを置き換えます。
  • チームの初期セットアップ:クローンして mise install すれば、ローカルの Node / Python / CLI バージョンが CI と揃います。
  • コーディングエージェントClaude CodeCodex CLICursor に、ホスト運任せではない確定的なツールチェーンを渡せます。
  • Linux ワークステーションOmarchy や Arch / macOS マシンと組み合わせ、AI CLI とランタイムを同期できます。

料金プラン

mise は MIT ライセンスの無料オープンソースです。ホスト型プランはありません。支払うのは、導入したツール、クラウド API、パッケージレジストリだけです。

はじめに

  1. Linux / macOS なら curl https://mise.run | sh。Homebrew、apt、dnf、scoop、winget、chocolatey でも入れられます。
  2. シェルを有効化します。例: echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc
  3. ツールを固定: mise use --global node@26、またはプロジェクトの mise.toml に書きます。
  4. mise install で設定どおりのツールを入れます。
  5. アクティベートなしで一度だけ実行: mise exec python@3 -- python

公式の導入手順は Getting Started です。

よくある質問

ただ速い asdf ですか?

バージョン管理としては asdf の代わりになりますし、多くの asdf ユーザーもそう使います。より大きな違いは、環境変数とタスクが同じファイルに入ることです。性能は今も mise 側が有利ですが、公式ドキュメントは古い shim 税の議論より、UX とサプライチェーン検証を重視しています。

シェルで必ず activate する必要がありますか?

いいえ。アクティベートは任意です。mise execmise run はツールと環境を読み込みます。IDE や CI 向けの shim もありますが、activate の全機能は使えません。

主なリスクは何ですか?

一部ツールは今も asdf 風プラグイン経由で、第三者のシェルを実行します。aqua や GitHub バックエンドがあるならそちらを優先し、レジストリの新しいプラグインを無条件に信じないでください。

asdf や rtx からの移行は?

mise は .tool-versions を理解します。rtx は旧名で、既存設定は mise に対応します。~/.asdf を直接指すのではなく、ツールディレクトリを再インストールまたは移動してください。

代替案

  • asdf:元祖のマルチランタイムマネージャ。プラグインの歴史は長い一方、DX は遅く、環境とタスクは一等機能ではありません。
  • devbox / Nix:すでに Nix を使っているなら再現性はより強いです。多くのアプリチームには mise.toml 1 枚より重いです。
  • nvm / pyenv / fnm:1 言語なら十分です。Node と Python と Terraform が同時に必要になると苦しくなります。

ヒントとベストプラクティス

  1. 口伝ではなく mise.toml をコミットする:新しいマシンやエージェントは git からバージョンを取るべきです。
  2. mise use tool@version を使うnode@20 のようなファジー指定がコマンドでも設定でも使えます。asdf のように latest:20 を分ける必要はありません。
  3. CI でアクティベートに頼らないmise execmise run を呼べば、開発者のシェル hook に依存しません。

まとめ

mise は現代のリポジトリ向け仕込み台です。ツール、環境、タスクを 1 ファイルにまとめ、気にならない速さで動きます。まだ nvm と pyenv と Makefile を並行運用しているなら、mise.jdx.dev でまず 1 つのランタイムを固定してください。

コメント

まだコメントがありません。最初のコメントを投稿してください!