VSCodeでmiseを利用する方法について

採用はこちら

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を利用する方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次