mise環境でGo開発時のCursor/VS Code設定トラブルを解決する完全ガイド
出典: たつお

mise(旧rtx)でGoやgoplsを管理している場合、Cursor/VS Codeが正しくツールを認識できない問題が発生します。本記事では、その原因と具体的な解決方法、さらにバージョン管理ツール選定における考慮点まで詳しく解説します。
mise環境下でのGo開発における課題
開発環境のバージョン管理ツールとして注目を集めているmise(旧rtx)。asdfの代替として高速性と使いやすさで人気ですが、Cursorや VS CodeでのGo開発において、ツールパスの認識問題が発生するケースが報告されています。
今回は、この問題の本質と解決策を技術的背景から解説します。
問題の本質:miseの独自パス構造
miseは各言語やツールを `~/.local/share/mise/installs/` 配下に独自の構造で配置します。一方、Cursor/VS CodeのGo拡張機能は、デフォルトでシステムの標準的なPATHからgoやgoplsコマンドを探索します。
このパス解決の不一致により、以下のような問題が発生します:
解決方法:alternateToolsによる明示的なパス指定
`.vscode/settings.json` に以下の設定を追加することで解決できます:
{
"go.alternateTools": {
"go": "/home/myuser/.local/share/mise/installs/go/1.26.5/bin/go",
"gopls": "/home/myuser/.local/share/mise/installs/go-gopls/latest/bin/gopls"
}
}設定後は**必ずエディタを完全に再起動**してください。ウィンドウのリロードだけでは不十分な場合があります。
パスの確認方法
ご自身の環境に合わせたパスは以下のコマンドで確認できます:
mise which go
mise which gopls編集部の視点
asdfやnodenvとの比較
従来のasdfやnodenv、rbenvなどのバージョン管理ツールでも同様の問題は発生しますが、miseは特に注意が必要です。理由は以下の通りです:
**miseの特徴:**
**asdfとの違い:**
この手法のメリットと注意点
**メリット:**
**注意点:**
より実践的な設定パターン
チーム開発では、以下のような環境変数を活用した設定がおすすめです:
{
"go.goroot": "${env:MISE_DATA_DIR}/installs/go/1.26.5",
"go.alternateTools": {
"gopls": "${env:HOME}/.local/share/mise/installs/go-gopls/latest/bin/gopls"
}
}これにより、ユーザーごとのパス差異を吸収できます。
適用範囲の考察
この設定手法が特に有効なケース:
1. **マイクロサービス開発**:プロジェクトごとに異なるGoバージョンを使用
2. **レガシーコードのメンテナンス**:古いバージョンのGoが必要な場合
3. **OSS貢献**:複数のGoプロジェクトを並行して開発
逆に、単一プロジェクトのみで最新版を追従する場合は、公式インストーラーの方がシンプルです。
今日から試せるアクション
アクション1:現在の環境を診断する
# 現在使用しているgoのパスを確認
which go
# miseで管理されているか確認
mise list
# VS Codeが認識しているgoを確認
code --extensions-dir で拡張機能ログを確認アクション2:プロジェクトテンプレートを作成する
`.vscode/settings.json.template` として以下を用意:
{
"go.alternateTools": {
"go": "${env:HOME}/.local/share/mise/installs/go/VERSION/bin/go",
"gopls": "${env:HOME}/.local/share/mise/installs/go-gopls/latest/bin/gopls"
}
}新規プロジェクトではVERSION部分だけ置換して使用します。
アクション3:mise hook を活用した自動化
`.mise.toml` に以下を追加し、バージョン切り替え時に自動で設定を更新:
[tools]
go = "1.26.5"
[hooks]
enter = "echo 'Go version: $(go version)'"さらに、シェルスクリプトで `.vscode/settings.json` を自動生成すれば、手動更新の手間を削減できます。
まとめ
miseは強力なバージョン管理ツールですが、IDE統合には一手間必要です。しかし、一度設定すれば、プロジェクトごとの環境分離という大きなメリットを享受できます。特にGoのような後方互換性に注意が必要な言語では、この投資は十分に価値があります。
この情報は @たつお さんの投稿を参考にしています。
出典: たつお


