エンジニアを目指す初学者に向けて、わかりやすく解説したブログです。

タスクランナーはMakefileよりmiseがおすすめ、ついでに使い方も

公式サイト

Icon in a page linkHome | mise-en-place

miseでできること

  1. タスクランナー機能
  2. ツール機能
  3. 環境変数機能

この中で、筆者は主に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には、確認モーダルを表示する機能が搭載されている。

Image in a image block

これで開発データベースのクリーンアップコマンドを誤って実行するリスクが減る。

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

関連記事