公式サイト
miseでできること
- タスクランナー機能
- ツール機能
- 環境変数機能
この中で、筆者は主に1と2の用途のみで使っている。
1. タスクランナー機能
任意のショートカットコマンドを設定し、 mise run コマンド
で簡単に実行できる機能である。
これはMakefileの基本的な機能と同じである。
例えば、
# mise.toml
[tasks.dev]
run = "docker compose -f ./docker-compose.yml up"
という設定ファイルがあった場合
$ mise run dev
を実行することで docker compose -f ./docker-compose.yml up
を実行したことになる。
筆者はこれを使って
- 開発サーバーの起動
- 開発用データベースの起動(docker compose)
- 開発用データベースの完全削除
- テストの実行
- formatter、linterの実行
などを定義して使っている。
$ mise run
Tasks
Select a task to run
❯ dev 開発用データベースを起動する
dev-delete-all 開発用データベースを完全に削除する
/
esc clear filter • enter confirm
2. ツール機能
これは、開発ツールのインストールやバージョン管理を行うことができる機能である。
筆者はこれが便利すぎてMakefileから移行した。
- nvm, fnm, volta
- rvm, rbenv
- pyenv
- sdkman
このあたりのツールが、全てmiseで完結する。
また、これまで npm install -g
していたものや、 gem install
していたものも全てmiseで賄うことができる。
もちろん、(ほぼ)グローバルで使うバージョンと、プロジェクトごとに使うバージョンを切り替えることができる。
Makefileと比較したときの違い、採用理由
1. ツール機能が存在する
環境構築でいつも困っていたのは〇〇envのようなツールをたくさん使いこなすのが面倒、ということだ。
インストールするたびにいちいちパスを通したり、zshrcに追記したりするのが面倒だった。
コマンドも方言があるので都度調べるのも面倒。
miseはそういった悩みを解決してくれた。
Makefileはビルドツールであるので、そもそもツールのバージョン管理という概念が存在しない。
(実際タスクランナーも本来の目的の使い方ではない)
2. タスクランナーのコマンドを覚える必要がない
mise run
コマンドで、それに続くタスク一覧が選択式で出現する。
$ mise run
Tasks
Select a task to run
❯ dev 開発用データベースを起動する
dev-delete-all 開発用データベースを完全に削除する
/
esc clear filter • enter confirm
Makefileの場合は定義したコマンドを忘れて、Makefileを見に行く作業が発生していたが mise
では覚える必要がない。
また、このときに出現する説明文も設定することができる。
ほぼ環境構築のドキュメントになりうるので、チーム開発で重宝している。
3. 実行ミスを防ぐことができる
miseには、確認モーダルを表示する機能が搭載されている。

これで開発データベースのクリーンアップコマンドを誤って実行するリスクが減る。
4. 自分だけのカスタムコマンドも定義することができる
miseの基本的なファイルは mise.toml
であるが、
mise.local.toml
というファイルを作成し、gitignoreしておくことで「他の共同開発者には共有しない、自分だけが使うショートカットやツール」を設定することができる。
仮にチーム開発でmiseが導入されていなくても、gitignoreに mise.local.toml
を追加さえできれば
自分はmiseを使った快適な環境構築を行うことができる。
以下の要領で覚えておくとよいだろう。上から適用優先順位が強いファイルである。
ファイル名 | 概要 |
---|---|
mise.local.toml | リポジトリ内で完結するものだが、自分だけのオリジナル設定をしたい場合。プロジェクトにコミットしない。 |
mise.toml | 基本となるファイル。プロジェクトにコミットする。 |
~/.config/mise/config.toml | グローバルで有効なファイル。 |
5. 実行に必要なファイルを定義することはできない
これはMakefileと比較したデメリットである。
Makefileでは実行に必要なリソースを定義することができたが、miseにはこの機能は存在しない。
筆者はMakefile時代には .env
の存在チェックでしか利用していなかったので特に気にならなかった。
install方法
Macの人はこれでOK。
brew install mise
覚えておきたいコマンド
インストール済みツールの一覧を確認
mise ls
■例
アクティブなものは色付きで表示され、それがどのディレクトリの設定ファイルに記載されているか一覧で確認できる。
$ mise ls
Tool Version Source Requested
gem:cocoapods 1.16.2
node 20.19.3
node 22.17.0 ~/Documents/workspace/nestjs-sample/mise.toml 22
node 24.3.0
npm:@anthropic-ai/claude-code 1.0.43 ~/.config/mise/config.toml latest
npm:@google/gemini-cli 0.1.13 ~/.config/mise/config.toml latest
python 3.13.5 ~/Documents/workspace/nestjs-sample/mise.local.toml latest
usage 2.1.1 ~/.config/mise/config.toml latest
インストール可能なツールのバージョン確認
mise ls-remote ツール名
■例
大抵縦に長いので、grepして使うと良い。
$ mise ls-remote python | grep "3.13"
miniconda3-3.13-25.3.1-1
miniconda3-3.13-25.5.1-0
miniconda3-3.13-25.5.1-1
pypy2.7-7.3.13-src
pypy2.7-7.3.13
pypy3.9-7.3.13-src
pypy3.9-7.3.13
pypy3.10-7.3.13-src
pypy3.10-7.3.13
3.13.0
3.13-dev
3.13.1
3.13.2
3.13.3
3.13.4
3.13.5
ツールのインストール
mise use ツール名
インストール先の指定をする場合はこちら。
# ~/.config/mise/config.tomlに書き込む
$ mise use -g node@22
# 現在のディレクトリのmise.tomlに書き込む
$ mise use node@22
# 現在のディレクトリのmise.local.tomlに書き込む
$ mise use -e local python
npm経由でインストールするようなものは、プレフィックスを付けるだけでOK。
# Claude Codeをインストール
$ mise use npm:@anthropic-ai/claude-code
ツールのアンインストール
mise unuse ツール名
タスクランナーの実行
mise run 定義済みタスク名
git clone直後などに、ツールを一括でインストール
mise install