Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save LivingGhost/f8f7beab31fb0ff258507edbf0524f91 to your computer and use it in GitHub Desktop.
Save LivingGhost/f8f7beab31fb0ff258507edbf0524f91 to your computer and use it in GitHub Desktop.
This guide was created with generative AI.

Windowsユーザーのためのmise(mise-en-place)導入ガイド

miseは複数のプログラミング言語やツールのバージョンを簡単に管理できる次世代バージョンマネージャーです。
Node.jsを含む多くのランタイムを一つのツールで管理できるため、開発環境をシンプルに保てます。
このガイドではWindows環境でのmiseのインストールからNode.jsバージョン管理までを詳しく解説します。

miseをWindows環境にインストールする

Wingetを使った基本インストール

Windows 10/11であれば、Microsoft公式のパッケージマネージャーであるWingetを使って簡単にmiseをインストールできます。

# miseの検索
winget search mise

# miseのインストール
winget install jdx.mise

インストールが完了したら、以下のコマンドで正常にインストールされたか確認しましょう:

mise --version

バージョン番号が表示されれば成功です(例:mise 2025.5.1)。

代替インストール方法(Wingetが使えない場合)

Wingetが利用できない環境では、公式GitHubリポジトリからインストーラーを直接ダウンロードできます:

# PowerShell を使った直接インストール
irm https://mise.jdx.dev/install.ps1 | powershell

環境変数の設定

miseを正常に機能させるには、適切に環境変数を設定する必要があります。

PowerShellでの設定

PowerShellで下記のコマンドを実行します。

$shimPath = "$env:USERPROFILE\AppData\Local\mise\shims"
$currentPath = [Environment]::GetEnvironmentVariable('Path', 'User')
$newPath = $currentPath + ";" + $shimPath
[Environment]::SetEnvironmentVariable('Path', $newPath, 'User')

設定の確認

環境変数が正しく設定されたかを確認するには、新しいターミナルウィンドウを開いて以下を実行します:

echo $env:PATH

出力に %USERPROFILE%\AppData\Local\mise\shim が含まれていれば成功です。

.nvmrcなど既存バージョンファイルの自動検出機能

miseの最大の魅力の一つは、プロジェクトに既に存在する様々なバージョンファイルを自動で検出し、適切なツールバージョンに切り替えてくれることです。
この機能により、nvmやasdfなど他のバージョンマネージャーからのスムーズな移行が可能になります。

サポートされるバージョンファイル

miseは以下のようなバージョンファイルをネイティブでサポートしています:

mise独自の設定ファイル

  • mise.toml - メイン設定ファイル
  • mise.local.toml - ローカル設定ファイル(コミット対象外)
  • .tool-versions - asdf互換ファイル

言語固有のバージョンファイル

  • Node.js: .nvmrc, .node-version
  • Python: .python-version, .python-versions
  • Ruby: .ruby-version, Gemfile
  • Go: .go-version, go.mod
  • Java: .java-version, .sdkmanrc
  • その他多数の言語とツール

自動検出の仕組み

ディレクトリを移動すると、miseは以下の順序で設定ファイルを検索します:

  1. カレントディレクトリから親ディレクトリへ向かって再帰的に検索
  2. mise独自の設定ファイル(mise.toml, mise.local.toml)を最優先で確認
  3. asdfの.tool-versionsファイルを次に確認
  4. 各ツール固有のバージョンファイル(.nvmrcなど)を確認

この検索は非常に高速で、以下の最適化により実現されています:

  • ディレクトリが変更されていない場合や設定ファイルが更新されていない場合は早期終了
  • バージョンファイルをキャッシュしてパフォーマンスを向上
  • 重いshimレイヤーではなく、直接的なPATH変更を使用

自動バージョン切り替えの動作

miseの自動バージョン切り替えはシェルフックによって実現されます:

# PowerShellプロファイルに追加(既に設定済み)
mise activate powershell | Out-String | Invoke-Expression

# ディレクトリ変更で自動的にバージョンが切り替わる
PS> cd node-project-with-nvmrc
PS> node -v
v18.15.0  # .nvmrcから読み込まれたバージョン

PS> cd ../python-project
PS> python --version
Python 3.10.0  # .python-versionから読み込まれたバージョン

バージョンファイルの優先順位

同一ツールに対して複数のバージョンファイルが存在する場合、以下の優先順位で決定されます:

  1. 場所の優先度: カレントディレクトリのファイルが親ディレクトリよりも優先
  2. ファイル形式の優先度(高い順):
    • mise.local.toml
    • mise.toml
    • .tool-versions(asdf形式)
    • 言語固有ファイル(.nvmrc, .python-versionなど)
  3. 環境固有設定MISE_ENVが設定されている場合)
  4. グローバル設定(フォールバック)

設定の読み込み順序はmise configコマンドで確認できます:

mise config

他のバージョンマネージャーからの移行

miseは他のバージョンマネージャーからの優れた移行体験を提供します:

  • asdfから: .tool-versionsファイルをそのまま使用可能
  • nvmから: .nvmrcファイル(lts/hydrogenなどのエイリアスを含む)を理解
  • pyenv/rbenv等から: 各ツール固有のバージョンファイルを読み取り

ツールの再インストールは必要ですが、プロジェクトの設定ファイルはそのまま使用できます:

# 既存の.nvmrcを持つプロジェクト
PS> cd node-project
PS> cat .nvmrc
18
PS> mise install  # .nvmrcを自動的に読み込み
PS> node -v
v18.x.x

セキュリティ機能: mise trust

mise trust機能は、バージョンファイルの処理に重要なセキュリティ層を追加します:

  1. 以下の機能を持つ設定ファイルには明示的な承認が必要:

    • 環境変数を設定するファイル
    • コードを実行できるテンプレートを使用するファイル
    • セキュリティに影響する特定の設定
  2. 信頼状態の管理:

    • mise trust [設定ファイル]コマンド
    • trusted_config_paths設定による制御

この仕組みにより、信頼されたプロジェクトでのスムーズな作業流れを保ちながら、サプライチェーン攻撃から保護します。

実践的な使用例

複数ツールプロジェクトでの使用:

# mise.toml
[tools]
node = "20"
python = "3.11"
terraform = "1.5"

[env]
NODE_ENV = "development"

CI/CDでの統合:

# GitHub Actions ワークフロー
name: CI
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: jdx/mise-action@v2
      - run: npm test  # .nvmrcや.tool-versionsからバージョンを使用

トラブルシューティング

バージョンファイル検出の問題は、通常以下で解決できます:

  1. アクティベーション状態の確認:

    mise doctor
  2. 設定ファイル読み込みの確認:

    mise config ls
  3. アクティブなツールバージョンとソースの確認:

    mise ls
  4. 言語固有バージョンファイルの有効化(特に2025.10.0以降重要):

    mise settings add idiomatic_version_file_enable_tools node
  5. デバッグモードでの詳細確認:

    $env:MISE_DEBUG = "1"
    mise version

この自動検出機能により、miseは既存のプロジェクトとシームレスに統合でき、チーム全体で一貫した開発環境を簡単に維持できます。

Node.jsのインストールと管理

Node.jsのインストール

miseを使ってNode.js v22をグローバルにインストールするには:

# Node.js v22の最新バージョンをインストールしてグローバルデフォルトに設定
mise use --global node@22

特定のマイナーバージョンを指定することもできます:

mise use --global node@22.1.0

mise install と mise use の違い

mise install: ランタイムをインストールするだけで、パスには追加しません。

# Node.js v18をインストールするだけ
mise install node@18

mise use: ランタイムをインストールし、カレントセッションまたはグローバルで使用できるようにします。

# プロジェクト固有でNode.js v18を使用(.mise.tomlに記録)
mise use node@18

# グローバルでNode.js v20を使用
mise use --global node@20

複数のNode.jsバージョンの管理

インストール済みのNode.jsバージョンを一覧表示:

mise ls node

特定のプロジェクトでのみ異なるバージョンを使用:

# プロジェクトディレクトリに移動
cd your-project-directory

# このプロジェクトのみNode.js v18を使用
mise use node@18

一時的に別バージョンを使用(現在のシェルセッションのみ):

mise shell node@16

pnpmなど他のツールのインストール

miseではNode.jsだけでなく、様々なツールもインストールできます。

pnpmのグローバルインストール

# pnpmの最新バージョンをインストール
mise use --global pnpm@latest

yarnのグローバルインストール

mise use --global yarn@stable

npmパッケージを使ったツールのインストール

miseは多くのnpmパッケージを直接インストールできます:

# TypeScriptをグローバルにインストール
mise use --global typescript@latest

# Viteをグローバルにインストール
mise use --global vite@latest

.mise.tomlによる設定ファイルの活用

mise設定ファイルを使えば、プロジェクトやグローバル環境の設定を簡単に管理できます。

グローバル設定ファイル

グローバル設定ファイルを作成・編集:

# 設定ディレクトリが無ければ作成
mkdir -p ~/.config/mise

# グローバル設定ファイルを編集
notepad ~/.config/mise/config.toml

グローバル設定ファイルの例:

[tools]
node = "22"
pnpm = "latest"
typescript = "latest"

[settings]
legacy_version_file = true
plugin_autoupdate_last_check_duration = "24h"

プロジェクト固有の設定

プロジェクトのルートディレクトリに.mise.tomlファイルを作成します:

# プロジェクトディレクトリで
notepad .mise.toml

プロジェクト設定ファイルの例:

[tools]
# プロジェクト固有のNode.jsバージョン
node = "18"
# 複数バージョンも指定可能
python = ["3.10", "3.11"]

[env]
# 環境変数の設定
NODE_ENV = "development"
DEBUG = "app:*"

[tasks]
# カスタムタスクの定義
dev = "npm run dev"
build = "npm run build"
test = "npm test"

.mise.tomlの応用例

複数の環境設定を一つのファイルで管理:

[env]
# 共通環境変数
PORT = "3000"

[env.development]
NODE_ENV = "development"
DEBUG = "app:*"

[env.production]
NODE_ENV = "production"
DEBUG = ""

[tasks]
# 異なる環境用のタスク
start.development = "nodemon server.js"
start.production = "node server.js"

特定のディレクトリに異なる設定を適用:

[tools]
node = "22"

[tools.api-service]
node = "18"

[tools.legacy-app]
node = "16"

最新バージョンの変更点と注意事項

2025年の主な変更

  • パフォーマンス改善: ツール読み込み速度が約30%向上
  • プラグイン管理: 新しいmise pluginsコマンドでプラグイン管理が簡単に
  • セットアップコマンド: mise setupコマンドでより簡単な初期設定が可能に
  • 拡張されたタスクシステム: 環境ごとに異なるタスク定義のサポート
  • 旧バージョンマネージャーとの互換性強化: nvmやasdfからの移行がより簡単に

非推奨機能

  • .tool-versionsファイルは互換性のために引き続きサポートされていますが、新しいプロジェクトでは.mise.tomlの使用が推奨されています
  • MISE_xxx_VERSION環境変数は将来的に廃止される可能性があります

よくあるトラブルシューティング

パスの問題

症状: miseコマンドが見つからない

解決方法:

# 環境変数PATHを確認
echo $env:PATH

# 必要に応じて手動でPATHに追加
$env:PATH += ";$env:USERPROFILE\AppData\Local\mise\shim"

# 永続的に設定するには
[Environment]::SetEnvironmentVariable("PATH", $env:PATH, "User")

権限エラー

症状: PowerShellでスクリプト実行ポリシーによるエラー

解決方法:

# 現在のポリシーを確認
Get-ExecutionPolicy

# 一時的にポリシーを変更して実行
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

# または永続的に変更(管理者権限が必要)
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

インストール失敗

症状: Node.jsなどのツールのインストールが失敗する

解決方法:

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

# プラグインを更新
mise plugins update

# 手動でプラグインをアンインストールして再インストール
mise plugins uninstall node
mise plugins install node

バージョン切り替えの問題

症状: バージョンを切り替えても反映されない

解決方法:

# シェルの再初期化
mise deactivate
mise activate powershell | Out-String | Invoke-Expression

# シムの再構築
mise reshim

Windows Defender/ウイルス対策ソフトの干渉

症状: インストールやダウンロードが遅い、または失敗する

解決方法:

  • Windows Defenderの除外リストに%USERPROFILE%\AppData\Local\miseディレクトリを追加
  • ダウンロード中の一時的なスキャンを無効にする

高度な使い方

mise completions によるオートコンプリート設定

PowerShellでのオートコンプリート設定:

# PowerShellプロファイルにコンプリート設定を追加
mise completions powershell >> $PROFILE

mise tasks による開発タスクの管理

プロジェクトで定義したタスクの実行:

# タスク一覧を表示
mise tasks

# 定義したタスクを実行
mise run dev
mise run test

mise trust による設定ファイルの信頼

初めて使用するプロジェクトの設定ファイルを信頼:

# 現在のディレクトリの設定ファイルを信頼
mise trust

# 特定のディレクトリの設定ファイルを信頼
mise trust ~/projects/my-project

mise ls-remote によるインストール可能なバージョンの確認

# インストール可能なNode.jsのバージョン一覧を表示
mise ls-remote node

# パターンにマッチするバージョンのみ表示
mise ls-remote node@18

まとめ

miseはWindowsでのNode.jsバージョン管理を含む、複数の開発ツールを一括管理できる強力なツールです。
このガイドを通して、インストールから基本設定、Node.jsの管理、.mise.tomlによる設定ファイルの活用、そしてトラブルシューティングまでを学びました。
この知識を活かして、複数のプロジェクトや開発環境を効率的に管理しましょう。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment