mise(開発ツール/ランタイムの管理、環境、タスク)のご紹介
はじめに
株式会社フクロウラボでバックエンドを担当している渋谷です。
今回は、私が活用している開発ツールの mise を紹介します。
この内容が少しでも皆さまのお役に立てれば幸いです。
mise とは?
mise(ミーズ)は、開発環境を一元管理できるツールです。その名前はフランス語の「mise-en-place(ミーズ・アン・プラス)」に由来し、料理人が調理前に準備を整えるように、開発環境を事前に最適化するという考え方に基づいています。
mise を活用すると、開発に必要なツールやランタイムのインストール、環境変数の管理、タスクの自動化を一元的に管理できます。 設定はシンプルな mise.toml
で統一され、どのプロジェクトでも一貫した開発環境を簡単に構築できます。
mise の機能
1. 開発ツール・ランタイムのインストールとバージョン管理
Node.js、Python、Terraform など、さまざまな開発ツールやランタイムをプロジェクトごとに異なるバージョンで管理できます。
- 各ツールのインストール・バージョン管理の手間を削減
- プロジェクトごとに異なるバージョンを簡単に適用(
mise.toml
に記述) - サポートされる開発ツール・ランタイムが豊富
2. 環境変数の管理
プロジェクト単位で環境変数を管理し、開発時の設定切り替えをスムーズにします。
- AWS のアクセスキーなど、プロジェクトごとに異なる環境変数を自動適用
-
.env
ファイルの読み込みも可能
3. タスクランナー機能
タスクランナーとしても利用でき、開発チーム内でのタスク共有や自動化をサポートします。
- テスト、ビルド、デプロイなどのコマンドを統一し、誰でも同じ手順で作業可能
- ファイル変更時の自動タスク実行を設定可能
-
mise.toml
に共通タスクを記述することで、開発環境を統一
mise を導入してみよう
機能がわかったところで、手を動かして、mise の良さを紹介したいと思います。
mise は macOS、Linux、Windows で動作します。今回は macOS でのインストール方法を紹介します。 他の方法についてはこちらをご覧ください。
mise のインストール
$ curl https://mise.run | sh
$ ~/.local/bin/mise --version
_ __
____ ___ (_)_______ ___ ____ ____ / /___ _________
/ __ `__ \/ / ___/ _ \______/ _ \/ __ \______/ __ \/ / __ `/ ___/ _ \
/ / / / / / (__ ) __/_____/ __/ / / /_____/ /_/ / / /_/ / /__/ __/
/_/ /_/ /_/_/____/\___/ \___/_/ /_/ / .___/_/\__,_/\___/\___/
/_/
2025.2.8 macos-arm64 (2025-02-25)
mise のセットアップ(アクティベート)
$ echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc
3ステップでインストールが出来ました。
mise の活用例
1. 開発ツール・ランタイムのインストールとバージョン管理
Node.js のバージョン管理
インストール可能なNode.jsの一覧
$ mise ls-remote node
:
22.14.0
23.0.0
:
23.8.0
インストール可能なNode.jsバージョン23の一覧
$ mise ls-remote node@23
23.0.0
:
23.8.0
Node.jsバージョン23(最新版)のインストール
$ mise install node@23
mise node@23.8.0 ✓ installed
システムのデフォルトのNode.jsバージョンを設定
$ mise use node@23
mise ~/.config/mise/config.toml tools: node@23.8.0
node@23(最新版)のアンインストール
$ mise uninstall node@23
mise node@23.8.0 ✓ uninstalled
プロジェクトごとの設定
mise.toml
のランタイムやツールを一括でインストール
$ mkdir project-hoge && cd project-hoge
$ touch mise.toml
$ echo '[tools]
node = "22.14.0"
python = "3.12.9"' > mise.toml
$ mise install
mise node@22.14.0 ✓ installed
mise python@3.12.9 ✓ installed
2. 環境変数の管理
プロジェクトごとの環境変数設定
mise.toml
に環境変数を設定できます。
$ mkdir project-hoge && cd project-hoge
$ touch mise.toml
$ echo '[env]
AWS_PROFILE = "hoge-aws-profile"
DATABASE_URL = "fuga-database-url"' > mise.toml
$ echo $AWS_PROFILE
hoge-aws-profile
$ echo $DATABASE_URL
fuga-database-url
.env
ファイルを読み込むことも可能です。
[env]
_.file = ".env"
3. タスクランナー機能
Go のコードを例に紹介します。
タスクの設定
mise.toml
にタスクの設定を記述します。
$ mkdir project-hoge && cd project-hoge
$ touch main.go mise.toml
$ vim main.go
$ vim mise.toml
main.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
[tools]
go = "1.24.0"
[tasks.build]
description = "Goアプリケーションのビルド"
run = "go build -o hello main.go"
[tasks.run]
description = "ビルドしたアプリケーションを実行"
run = "./hello"
[tasks.clean]
description = "ビルド成果物の削除"
run = "rm -f hello"
タスクの実行
mise.toml
に設定した各タスク(ビルド、実行、成果物の削除)を実行することができます。
ビルド
$ mise run build
[build] $ go build -o hello main.go
コマンドの実行
$ mise run run
[run] $ ./hello
Hello, World!
成果物の削除
$ mise run clean
[clean] $ rm -f hello
まとめ
mise は、手軽に導入でき、複数の言語・ツールのバージョン管理、環境変数、タスク管理を統一できます。個人開発だけでなく、チーム開発にも活用しやすいツールです。
余談
mise.toml について
mise.toml 設定の詳細を知りたい方は、公式のドキュメントをご覧下さい。
rtx から mise への名称変更について
mise は以前「rtx」と呼ばれていましたが、Nvidia のグラフィックスカードと混同されるため名称が変更されました。
asdf との比較
asdf はバージョン 0.16 から Bash から Go に書き直されました。そのため、mise とのパフォーマンス差は以前ほど大きくない可能性があります。
Go のバージョン管理について
Go では複数のバージョンをインストール可能です。
また、Go は後方互換性が確保されているため、積極的なバージョンアップが推奨されています。
おわりに
筆者は anyenv → asdf → mise(旧 rtx)と乗り換えてきました。 環境は常に変化しているため、今後もより優れたものがあれば積極的に取り入れていきたいと思います。
Discussion