VSCodeでmiseを利用すると、Node.jsやPython、Goなどの開発ツールのバージョンをプロジェクトごとに管理できます。
特に複数のプロジェクトを扱っていると、プロジェクトごとに必要なNode.jsやPythonのバージョンが異なることがあります。
miseを導入しておけば、プロジェクトディレクトリへ移動するだけで、そのプロジェクトに適したバージョンを利用しやすくなります。
また、miseは単なるバージョン管理ツールではありません。
環境変数や開発用タスクなども管理できるため、VSCodeを使った開発環境を統一したい場合にも便利です。
miseとは
miseは、開発で利用する言語ランタイムやCLIツールなどを管理できる開発環境管理ツールです。
たとえば、次のようなツールを管理できます。
- Node.js
- Python
- Ruby
- Go
- Java
- Terraform
- jq
- その他のCLIツール
プロジェクトごとに設定を変更できるため、複数のバージョンを使い分けたい場合に適しています。
たとえば、次のような構成も可能です。
project-a
└─ Node.js 22
project-b
└─ Node.js 24
project-c
├─ Node.js 24
├─ Python 3.14
└─ Go
従来はNode.jsならnvm、Pythonならpyenv、Rubyならrbenvのように、言語ごとに異なるツールを使用する方法が一般的でした。
miseを利用すると、複数の開発ツールを1つの仕組みでまとめて管理できます。
VSCodeでmiseを利用する基本的な流れ
VSCodeでmiseを利用する場合は、基本的に次のような流れになります。
miseをインストール
↓
必要に応じてシェルへmiseを設定
↓
VSCodeでプロジェクトを開く
↓
mise.tomlへツールを設定
↓
mise install
↓
VSCodeからNode.jsやPythonなどを利用
ただし、mise activateによるシェル設定は必須ではありません。
mise execやmise runを利用する場合は、シェル全体をmiseで有効化しなくても実行できます。
miseをインストールする
macOS・Linuxでインストールする
macOSやLinuxでは、公式インストーラーを利用できます。
curl https://mise.run | sh
インストール後は、次のように確認します。
mise --version
PATHがまだ反映されていない場合は、次のように確認できる場合があります。
~/.local/bin/mise --version
macOSではHomebrewを利用することもできます。
brew install mise
Windowsでインストールする
Windowsでは、Scoopやwingetなどを利用できます。
Scoopの場合は次のとおりです。
scoop install mise
wingetの場合は次のようにインストールできます。
winget install jdx.mise
WindowsではPowerShell、Git Bash、WSLなど、VSCodeで利用するシェルによって設定方法が変わる点に注意が必要です。
シェルでmiseを有効化する
mise activateは必須ではない
miseを普段のターミナルから自然に利用したい場合は、mise activateを設定すると便利です。
ただし、mise activateはmiseそのものを利用するための必須設定ではありません。
たとえば、次のように実行することもできます。
mise exec -- node --version
この場合、シェル全体をactivationしなくてもmiseの環境でNode.jsを実行できます。
Bashで設定する
Bashを利用している場合は、~/.bashrcなどへ次の設定を追加します。
eval "$(mise activate bash)"
Zshで設定する
macOSなどでZshを利用している場合は、~/.zshrcへ次の設定を追加します。
eval "$(mise activate zsh)"
設定後はターミナルを開き直します。
正常に設定されているか確認する場合は、次のコマンドが便利です。
mise doctor
mise activateの役割
mise activateは、単純に一度だけPATHを書き換える仕組みではありません。
シェルへフックを追加し、現在のディレクトリに応じてPATHや環境変数などを更新します。
そのため、たとえば、
project-a
Node.js 22
から、
project-b
Node.js 24
へ移動すると、プロジェクト設定に応じたNode.jsへ切り替えられます。
VSCodeでmiseが使えるか確認する
VSCodeを開き、統合ターミナルを起動します。
VSCodeでは、
ターミナル
→ 新しいターミナル
を選択します。
続いて、次のコマンドを実行します。
mise --version
バージョン番号が表示されれば、VSCodeの統合ターミナルからmiseを利用できます。
表示されない場合は、VSCodeの再起動やPATH、シェル設定を確認します。
mise.tomlを作成する
mise useでNode.jsを設定する
たとえば、プロジェクトでNode.js 24を利用する場合は、プロジェクトディレクトリで次のコマンドを実行します。
mise use node@24
プロジェクト用の設定ファイルが存在しない場合は、通常、mise.tomlが作成されます。
内容は次のようになります。
[tools]
node = "24"
mise useは、指定したツールをインストールするだけでなく、設定ファイルへ利用するバージョンを書き込むためのコマンドです。
mise.tomlは必ず現在の場所に作られるとは限らない
mise useの書き込み先は、既存の設定ファイルや設定階層によって変わることがあります。
そのため、
mise use node@24
を実行すると必ず現在のディレクトリへ新しいmise.tomlが作られる、と考えるよりも、
「プロジェクトのmise設定へNode.js 24を追加する」
と理解しておく方が正確です。
mise useとmise installの違い
mise useとは
mise useは、ツールを利用するための設定を追加するコマンドです。
たとえば、
mise use node@24
を実行すると、Node.js 24をインストールし、プロジェクト設定にも登録します。
概念的には次の処理が行われます。
Node.js 24をインストール
+
mise.tomlなどへ設定を追加
新しくプロジェクトへツールを導入する場合に便利です。
mise installとは
mise installは、ツールをインストールするためのコマンドです。
引数なしで、
mise install
を実行すると、mise.tomlなどに設定されているツールをまとめてインストールできます。
たとえば、次の設定があるとします。
[tools]
node = "24"
python = "3.14"
この状態で、
mise install
を実行すると、Node.jsとPythonがインストールされます。
mise installでツールを直接指定することもできる
mise installでは、ツールを直接指定することもできます。
mise install node@24
この場合、Node.js 24はインストールされますが、原則としてmise.tomlへNode.js 24の設定を追加する目的のコマンドではありません。
つまり、
mise install node@24
→ インストールする
mise use node@24
→ インストールして設定にも追加する
という違いがあります。
VSCodeでNode.jsを利用する
mise.tomlに次の設定があるとします。
[tools]
node = "24"
mise activateが正しく設定されていれば、VSCodeのターミナルで、
node --version
を実行できます。
Node.js 24系のバージョンが表示されれば正常です。
mise whichで実行ファイルを確認する
miseがどのNode.jsを選択しているか確認する場合は、次のコマンドを利用できます。
mise which node
実際に使用されるNode.jsの実行ファイルを確認できます。
現在のツールを確認する
現在のプロジェクトで有効なツールを確認する場合は、次のコマンドが便利です。
mise ls --current
トラブルシューティングでも頻繁に利用できます。
Node.jsとPythonをまとめて管理する
miseでは、複数の言語やツールを1つの設定ファイルで管理できます。
たとえば、次のように設定できます。
[tools]
node = "24"
python = "3.14"
その後、
mise install
を実行すれば、設定されたツールをまとめてインストールできます。
インストール後は、
node --version
python --version
などで確認できます。
フロントエンドにNode.js、バックエンドにPythonを利用するようなプロジェクトでも便利です。
グローバルバージョンを設定する
PC全体のデフォルトを設定する
PC全体で利用するデフォルトバージョンを設定する場合は、次のように実行できます。
mise use --global node@24
短縮形では、
mise use -g node@24
と指定できます。
プロジェクト設定を優先できる
たとえば、グローバルでNode.js 24を設定していても、特定のプロジェクトで、
[tools]
node = "22"
と設定していれば、そのプロジェクトではNode.js 22を利用できます。
そのため、
PC全体
Node.js 24
project-a
Node.js 22
project-b
Node.js 24
といった使い分けが可能です。
miseの設定ファイルには優先順位がある
miseでは、複数の設定ファイルを階層的に利用できます。
代表的なグローバル設定は、
~/.config/mise/config.toml
です。
さらに、プロジェクト内に、
mise.toml
があれば、よりプロジェクトに近い設定を優先できます。
また、
mise.local.toml
を利用して個人用の設定を追加することもできます。
たとえば、
グローバル設定
↓
上位ディレクトリのmise.toml
↓
プロジェクトのmise.toml
↓
mise.local.toml
のような形で設定を使い分けられます。
バージョンを正確に固定する
node = “24”は完全固定ではない
次の設定は、
[tools]
node = "24"
Node.js 24系列を指定する設定です。
必ず特定のパッチバージョンを固定するわけではありません。
–pinで正確なバージョンを記録する
より厳密にバージョンを固定したい場合は、
mise use --pin node@24
を利用できます。
チーム開発で全員ができるだけ同じツールバージョンを利用したい場合に有効です。
必要に応じてlockfileの利用も検討できます。
mise execを利用する
シェルを有効化しなくても実行できる
mise execを利用すると、miseの環境内でコマンドを直接実行できます。
たとえば、
mise exec -- node --version
と実行できます。
この方法では、mise activateをシェルへ設定していなくても、miseの環境を明示的に利用できます。
一時的にバージョンを指定する
特定のバージョンだけ一時的に利用することもできます。
mise exec node@24 -- node --version
CIやVSCode Task、スクリプトなどでは、mise execを明示的に利用すると挙動を把握しやすい場合があります。
VSCodeのtasks.jsonからmiseを利用する
VSCodeのTask機能とmiseを組み合わせることもできます。
たとえば、.vscode/tasks.jsonへ次のように設定します。
{
"version": "2.0.0",
"tasks": [
{
"label": "npm build",
"type": "shell",
"command": "mise exec -- npm run build"
}
]
}
この場合、実行の流れは次のようになります。
VSCode Task
↓
mise exec
↓
mise.tomlの設定を読み込む
↓
設定されたNode.jsを使用
↓
npm run build
VSCodeのTaskで期待したNode.jsが利用されない場合にも有効な方法です。
VSCodeのターミナルとデバッガーでは環境が異なる場合がある
VSCodeでmiseを利用するときに注意したいのが、VSCode内部のすべての機能が同じ環境を利用するとは限らないことです。
たとえば、次の機能は環境の読み込み方法が異なる場合があります。
統合ターミナル
Debugger
Language Server
Extension Host
Task
VSCodeのターミナルでは、
node --version
が正しくても、デバッガーや拡張機能では別のNode.jsを参照していることがあります。
このような場合は、
mise which
mise where
mise exec
shim
VSCode向けmise拡張機能
などを用途に応じて使い分けます。
VSCodeでshimを利用する
shimとは
shimは、nodeやpythonなどのコマンドと、実際のランタイムの間に入る中継用の仕組みです。
概念的には次のように動作します。
node
↓
miseのshim
↓
現在のプロジェクト設定を確認
↓
適切なNode.jsを実行
IDEやGUIアプリケーションなど、通常のシェル初期化を読み込まない環境で役立つ場合があります。
activateとshimは同じではない
shimは便利ですが、通常のmise activateと完全に同じ機能を提供するものではありません。
基本的には、
通常のターミナル
→ mise activate
IDEなど
→ shim
特定のコマンドだけ実行
→ mise exec
と使い分けると理解しやすくなります。
macOSでVSCode Taskから環境が読み込まれない場合
macOSでは、VSCodeのTaskなどでログインシェルの設定を読み込ませたい場合があります。
その場合、VSCodeのsettings.jsonへ次のように設定する方法があります。
{
"terminal.integrated.automationProfile.osx": {
"path": "/bin/zsh",
"args": ["--login"]
}
}
ただし、これはmiseを使うための必須設定ではありません。
VSCode Taskなどで期待しているシェル設定が読み込まれない場合の選択肢として利用する設定です。
miseでタスクを管理する
miseでは、開発用コマンドをタスクとして管理することもできます。
たとえば、
開発サーバー起動
ビルド
テスト
Lint
コード生成
などをmiseのタスクとして定義できます。
タスク一覧を確認する場合は、
mise tasks ls
を利用します。
タスクを実行する場合は、
mise run タスク名
とします。
Node.jsやPythonのバージョンだけでなく、チーム共通の開発コマンドまで統一できるのがmiseの特徴です。
環境変数もmiseで管理できる
miseでは、ツールのバージョンだけでなく環境変数も設定できます。
そのため、
Node.jsのバージョン
Pythonのバージョン
環境変数
開発タスク
を同じ開発環境管理の仕組みにまとめることができます。
ただし、APIキーやパスワード、秘密鍵などの機密情報を、Git管理されるmise.tomlへ直接書くことは避けた方が安全です。
mise.local.tomlを利用する
チーム全体で共有する設定は、
mise.toml
へ記述します。
一方、自分だけで使用する設定は、
mise.local.toml
へ分けることができます。
一般的には、mise.local.tomlを.gitignoreへ追加し、個人用設定として利用できます。
ただし、mise.local.tomlだから機密情報を無条件に安全に保存できるわけではありません。
秘密情報は、Git管理やファイル権限も含めて適切に管理する必要があります。
mise.tomlはGitで共有できる
チーム開発では、共通設定を書いたmise.tomlをGitへコミットすると便利です。
たとえば、
[tools]
node = "24"
python = "3.14"
という設定を共有しておけば、新しくプロジェクトへ参加したメンバーは、
git clone ...
cd project
mise install
とすることで、miseに定義されたツールをインストールできます。
READMEへ、
mise install
というセットアップ手順を書いておくと、開発環境構築をシンプルにできます。
mise installだけで開発環境全体が再現されるわけではない
mise installは非常に便利ですが、PC上の開発環境すべてを再現するコマンドではありません。
たとえば、
OSパッケージ
Docker
データベース
npmパッケージ
Pythonパッケージ
システムライブラリ
VSCode拡張機能
などは、別途セットアップが必要になる場合があります。
そのため、
「mise installだけで開発環境を完全再現できる」
と考えるのではなく、
「miseで管理しているツールやバージョンを再現しやすくできる」
と考えるのが適切です。
miseの設定を確認する
読み込まれている設定を確認する
現在読み込まれている設定を確認したい場合は、次のコマンドを利用できます。
mise config ls
現在有効なツールを確認する
mise ls --current
Node.jsの場所を確認する
mise which node
mise自体の状態を診断する
mise doctor
トラブルが起きた場合は、
mise config ls
mise ls --current
mise which node
mise doctor
の順に確認すると原因を切り分けやすくなります。
VSCodeでmiseが認識されない場合
mise –versionを確認する
まず、VSCode以外のターミナルで、
mise --version
を実行します。
ここでも認識されない場合は、mise自体のインストールやPATH設定に問題がある可能性があります。
VSCodeを再起動する
miseをインストールした直後や、シェル設定を変更した直後は、すでに起動しているVSCodeへ変更が反映されていない場合があります。
VSCodeを完全に終了してから再度起動します。
シェルのactivationを確認する
Zshの場合は、
eval "$(mise activate zsh)"
Bashの場合は、
eval "$(mise activate bash)"
が適切なシェル設定ファイルへ記述されているか確認します。
Node.jsのバージョンが切り替わらない場合
mise.tomlではNode.js 24を指定しているのに、別のNode.jsが利用される場合は、次のコマンドを確認します。
mise ls --current
続いて、
mise which node
を確認します。
macOSやLinuxでは、
which node
も確認します。
nvmやHomebrew、システムのNode.jsなどを同時に利用していると、PATHの優先順位によって別のNode.jsが使用されることがあります。
Node.jsのバージョン管理をmiseへ統一すると、トラブルを減らしやすくなります。
mise.tomlが反映されない場合
まず、現在いるディレクトリを確認します。
pwd
次に、
mise config ls
を実行し、期待しているmise.tomlが読み込まれているか確認します。
さらに、
mise ls --current
を実行すると、最終的に選択されているツールを確認できます。
他人のmise設定を利用する場合は内容を確認する
GitHubなどから取得したプロジェクトでmiseを利用する場合は、設定内容を確認することも重要です。
miseでは、ツールのバージョンだけでなく、タスクや環境変数なども扱えます。
そのため、未知のリポジトリでは、どのような設定や処理が含まれているのか確認したうえで利用するのが安全です。
必要な場合には、mise trustによる信頼設定を利用します。
重要なのは、最初から無条件に信頼するのではなく、設定内容を確認してから判断することです。
VSCodeとmiseを組み合わせるメリット
プロジェクトごとにバージョンを切り替えられる
miseを使えば、プロジェクトごとにNode.jsやPythonなどのバージョンを変更できます。
複数案件を扱う開発環境では特に便利です。
チームで開発環境をそろえやすい
mise.tomlをGitで共有すれば、メンバー全員が同じツール設定を利用しやすくなります。
「自分のPCでは動くが、他のメンバーでは動かない」といった環境差の軽減につながります。
複数のバージョン管理ツールをまとめられる
Node.jsではnvm、Pythonではpyenvのように複数の管理ツールを使い分ける代わりに、miseへ統一できる場合があります。
管理方法が1つになるため、開発環境の理解やメンテナンスもしやすくなります。
VSCodeでmiseを利用するときのおすすめ構成
Web開発であれば、たとえば次のような構成にできます。
my-project/
├─ .vscode/
│ ├─ settings.json
│ └─ tasks.json
├─ src/
├─ package.json
├─ mise.toml
└─ README.md
mise.tomlには、
[tools]
node = "24"
のように必要なツールを定義します。
新しくNode.jsを設定する場合は、
mise use node@24
既存プロジェクトの環境を構築する場合は、
mise install
現在の状態を確認する場合は、
mise ls --current
問題が発生した場合は、
mise doctor
という使い分けを覚えておくと便利です。
まとめ
VSCodeでmiseを利用すると、Node.jsやPythonなどの開発ツールをプロジェクト単位で管理しやすくなります。
新しいツールをプロジェクトへ設定する場合は、
mise use node@24
を利用します。
すでにmise.tomlへ定義されているツールをインストールする場合は、
mise install
を利用します。
また、VSCodeでは統合ターミナルだけでなく、DebuggerやLanguage Server、Task、拡張機能が異なる環境を利用する場合があります。
そのため、必要に応じて、
mise activate
mise exec
mise which
shim
VSCode向けmise拡張機能
などを使い分けることが重要です。
チーム開発ではmise.tomlをGitで共有しておくことで、メンバー間で利用するツールやバージョンをそろえやすくなります。
ただし、mise installだけでDockerやOSパッケージ、npmパッケージなどを含む開発環境全体が自動的に再現されるわけではありません。
miseは、あくまでmiseで定義した開発ツールや環境設定を統一・再現しやすくする仕組みとして利用するとよいでしょう。
以上、VSCodeでmiseを利用する方法についてでした。
最後までお読みいただき、ありがとうございました。










