Skip to main content

mise 実践ガイド

mise は複数のプログラミング言語やツールのバージョンを管理するツール。asdf の後継として開発され、より高速で使いやすい。

なぜ mise を使うのか

主な利点

  1. 統一的な管理: Node.js、Python、Ruby など複数の言語を一元管理
  2. プロジェクト単位の設定: .mise.toml でプロジェクトごとにバージョンを指定
  3. 高速: Rust で実装され、asdf より高速
  4. 自動インストール: ディレクトリに入ると自動的に必要なバージョンをインストール
  5. タスクランナー: mise run でタスクを実行可能

インストール

macOS/Linux

curl https://mise.run | sh

Windows

irm https://mise.run | iex

インストール後、シェルの設定ファイルに以下を追加:

# ~/.bashrc または ~/.zshrc
eval "$(mise activate bash)" # bash の場合
eval "$(mise activate zsh)" # zsh の場合

基本的な使い方

ツールのインストール

# 最新版をインストール
mise install node@latest
mise install pnpm@latest
mise install jujutsu@latest

# 特定のバージョンをインストール
mise install node@20.0.0
mise install python@3.12

インストール済みツールの確認

mise list

ツールのアップデート

# すべてのツールをアップデート
mise update

# 特定のツールをアップデート
mise install node@latest

ツールの削除

mise uninstall node@20.0.0

mise.toml の使い方

プロジェクトのルートに mise.toml を配置すると、プロジェクト固有の設定を管理できます。

基本的な構成

# miseやpnpmをアップデートしたい時は `mise update` を実行する

[tools]
node = "lts" # Node.js の LTS バージョン
pnpm = "latest" # pnpm の最新版
jujutsu = "latest" # jujutsu の最新版

[settings]
auto_install = true # ディレクトリに入ると自動インストール

[tasks.pnpm-update]
description = "Update pnpm to latest version"
run = "mise install pnpm@latest"

tools セクション

使用するツールとバージョンを指定:

[tools]
node = "20.0.0" # 特定のバージョン
node = "lts" # LTS バージョン
node = "latest" # 最新版
python = "3.12" # Python 3.12
ruby = "3.3" # Ruby 3.3

settings セクション

mise の動作を設定:

[settings]
auto_install = true # 自動インストールを有効化
legacy_version_file = true # .node-version などのファイルを読み込む

tasks セクション

カスタムタスクを定義:

[tasks.dev]
description = "Start development server"
run = "pnpm run dev"

[tasks.build]
description = "Build for production"
run = "pnpm run build"

[tasks.test]
description = "Run tests"
run = "pnpm test"

タスクの実行:

mise run dev
mise run build
mise run test

実践的な使い方

プロジェクトのセットアップ

  1. プロジェクトに移動
  2. mise.toml を作成
  3. 必要なツールを指定
  4. ディレクトリに入ると自動的にインストールされます
cd my-project
cat > mise.toml << 'EOF'
[tools]
node = "lts"
pnpm = "latest"

[settings]
auto_install = true
EOF

# ディレクトリに入ると自動的にインストールされる
cd ..
cd my-project

複数のプロジェクトで異なるバージョンを使用

# プロジェクト A
cd project-a
cat > mise.toml << 'EOF'
[tools]
node = "18.0.0"
EOF

# プロジェクト B
cd ../project-b
cat > mise.toml << 'EOF'
[tools]
node = "20.0.0"
EOF

# プロジェクト A に移動すると Node.js 18 が使用される
cd ../project-a
node --version # v18.0.0

# プロジェクト B に移動すると Node.js 20 が使用される
cd ../project-b
node --version # v20.0.0

グローバル設定

ホームディレクトリに ~/.config/mise/config.toml を作成すると、すべてのプロジェクトで使用されるデフォルト設定を定義できます:

[tools]
node = "lts"
python = "3.12"

[settings]
auto_install = true

このプロジェクトの mise.toml

このプロジェクトでは以下の設定を使用しています:

[tools]
node = "lts" # Node.js LTS
pnpm = "latest" # pnpm 最新版
jujutsu = "latest" # jujutsu 最新版

[settings]
auto_install = true # 自動インストール有効

[tasks.pnpm-update]
description = "Update pnpm to latest version"
run = "mise install pnpm@latest"

使用方法

# ツールのアップデート
mise update

# pnpm のアップデート
mise run pnpm-update

# インストール済みツールの確認
mise list

よくある質問

Q: asdf との違いは?

A: mise は asdf の後継として開発され、以下の点で優れています:

  • Rust で実装され高速
  • より直感的な設定ファイル (TOML)
  • タスクランナー機能を内蔵
  • より良いエラーメッセージ

Q: .node-version や .python-version は使えますか?

A: 使えます。legacy_version_file = true を設定すると、既存のバージョンファイルを読み込みます。

Q: グローバルとローカルの設定の優先順位は?

A: ローカル (プロジェクトの mise.toml) がグローバル (~/.config/mise/config.toml) より優先されます。

Q: mise を使わずにツールを使いたい場合は?

A: mise をアンインストールするか、mise deactivate を実行すると、システムにインストールされたツールが使用されます。

トラブルシューティング

ツールが見つからない

# mise のパスを確認
mise which node

# インストール済みツールを確認
mise list

# 再インストール
mise install node@latest

自動インストールが動作しない

# mise が有効化されているか確認
mise doctor

# シェルの設定を確認
cat ~/.bashrc | grep mise
cat ~/.zshrc | grep mise

バージョンが切り替わらない

# mise.toml を確認
cat mise.toml

# キャッシュをクリア
mise cache clear

# シェルを再起動
exec $SHELL

コマンドリファレンス

ツール管理

コマンド説明
mise install <tool>@<version>ツールをインストール
mise uninstall <tool>@<version>ツールをアンインストール
mise listインストール済みツール一覧
mise list-all <tool>利用可能なバージョン一覧
mise updateすべてのツールをアップデート

設定管理

コマンド説明
mise use <tool>@<version>ツールを使用 (mise.toml に追加)
mise current現在使用中のバージョン表示
mise which <tool>ツールのパスを表示
mise where <tool>ツールのインストール先を表示

タスク管理

コマンド説明
mise run <task>タスクを実行
mise tasks利用可能なタスク一覧

その他

コマンド説明
mise doctormise の状態を診断
mise versionmise のバージョン表示
mise helpヘルプを表示

参考リンク

  1. 公式ドキュメント
  2. GitHub リポジトリ
  3. 設定例

まとめ

mise は複数のツールを統一的に管理できる強力なツールです。プロジェクトごとに異なるバージョンを使い分けることができ、チーム開発での環境統一に役立ちます。

このプロジェクトでは Node.js、pnpm、jujutsu を mise で管理しています。