Zenn
🍽️

mise(開発ツール/ランタイムの管理、環境、タスク)のご紹介

2025/02/28に公開

はじめに

株式会社フクロウラボでバックエンドを担当している渋谷です。
今回は、私が活用している開発ツールの mise を紹介します。
この内容が少しでも皆さまのお役に立てれば幸いです。

https://github.com/jdx/mise

https://mise.jdx.dev/

mise とは?

mise(ミーズ)は、開発環境を一元管理できるツールです。その名前はフランス語の「mise-en-place(ミーズ・アン・プラス)」に由来し、料理人が調理前に準備を整えるように、開発環境を事前に最適化するという考え方に基づいています。

mise を活用すると、開発に必要なツールやランタイムのインストール、環境変数の管理、タスクの自動化を一元的に管理できます。 設定はシンプルな mise.toml で統一され、どのプロジェクトでも一貫した開発環境を簡単に構築できます。

https://mise.jdx.dev/about.html

https://en.wikipedia.org/wiki/Mise_en_place

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 設定の詳細を知りたい方は、公式のドキュメントをご覧下さい。

https://mise.jdx.dev/configuration.html

rtx から mise への名称変更について

mise は以前「rtx」と呼ばれていましたが、Nvidia のグラフィックスカードと混同されるため名称が変更されました。

https://mise.jdx.dev/rtx.html

asdf との比較

asdf はバージョン 0.16 から Bash から Go に書き直されました。そのため、mise とのパフォーマンス差は以前ほど大きくない可能性があります。

https://mise.jdx.dev/dev-tools/comparison-to-asdf.html#asdf-in-go-0-16

https://asdf-vm.com/ja-jp/guide/upgrading-to-v0-16

Go のバージョン管理について

Go では複数のバージョンをインストール可能です。

https://go.dev/doc/manage-install#installing-multiple

また、Go は後方互換性が確保されているため、積極的なバージョンアップが推奨されています。

https://zenn.dev/tenntenn/articles/676a32ab3d4aab

おわりに

筆者は anyenv → asdf → mise(旧 rtx)と乗り換えてきました。 環境は常に変化しているため、今後もより優れたものがあれば積極的に取り入れていきたいと思います。

フクロウラボ エンジニアブログ

Discussion

ログインするとコメントできます