Claude Code 実践検証 Day 3|Windows環境の最適解を探る(中編)
結論から言うと、VPN環境ではWSLではなくGit Bash一択、そしてnpm版よりネイティブ版が公式推奨です。
今回は、npm版からネイティブ版への移行を実際にやってみました。コピペで完結しますが、落とし穴もありました。
検証結果まとめ
| 項目 | 結果 | 補足 |
|---|---|---|
| 移行の難易度 | ✅ 簡単 | コピペで完結 |
| Git Bash動作 | ✅ 問題なし | PowerShellと同等 |
| サイレント失敗 | ⚠️ 発生 | 再実行で解決 |
| Node.js依存 | ✅ 解消 | ネイティブ版は不要 |
Day 1の疑問4を検証する
Day 1で提示した疑問を覚えていますか?
疑問4:Windows環境、結局どれを使えばいいの?
- 「WSLじゃないとMCPサーバーが動かない」
- 「Git Bashで十分動く」
- 「Native Windows版が出たからWSL不要」
今回はこの疑問に決着をつけます。
検証したい観点
- npm版 vs ネイティブ版、何が違う?
- WSL vs Git Bash、どちらを選ぶべき?
- 移行は簡単にできるのか?
検証環境
| 項目 | Before | After |
|---|---|---|
| Claude Code | v2.0.56 | v2.0.57 |
| インストール方式 | npm-global | native |
| シェル | PowerShell | Git Bash |
| OS | Windows 11 Pro | 同左 |
| IDE | Cursor | 同左 |
検証1:現在のインストール方式を確認する
まずは自分の環境がnpm版なのかネイティブ版なのか、確認する方法から。
やったこと
claude doctor
結果(npm版の場合)
Diagnostics
└ Currently running: npm-global (2.0.56)
└ Path: C:\Program Files\nodejs\node.exe
└ Invoked: C:\Users\xxxxx\AppData\Roaming\npm\node_modules\@anthropic-ai\claude-code\cli.js
└ Config install method: global
└ Auto-updates: default (true)
わかったこと
-
Currently running: npm-global→ npm版 -
Currently running: native→ ネイティブ版 - パスを見れば一目瞭然:
npm\node_modulesが含まれていればnpm版
検証2:npm版からネイティブ版への移行
公式ドキュメントには「claude install で移行できる」と書いてありますが、実際にやってみました。
手順1:プロセス終了の確認
まず、Claude Codeが動いていないことを確認します。
Claude Desktopが起動している場合は、そちらも終了させてください。
# claudeプロセスを検索
Get-Process | Where-Object { $_.ProcessName -like "*claude*" }
# nodeプロセスも確認(npm版はNode.js経由)
Get-Process | Where-Object { $_.ProcessName -like "*node*" }
何も表示されなければOKです。
手順2:npm版のアンインストール
# アンインストール
npm uninstall -g @anthropic-ai/claude-code
# 確認
npm list -g @anthropic-ai/claude-code
# → (empty) が表示されればOK
手順3:残存ファイルの確認
念のため、完全に削除されているか確認します。
# npmグローバルフォルダ
Test-Path "$env:APPDATA\npm\node_modules\@anthropic-ai\claude-code"
# → False ならOK
# .claudeローカルフォルダ
Test-Path "$env:USERPROFILE\.claude\local"
# → False ならOK
# claudeコマンドのパス確認
where.exe claude
# → 「情報: 与えられたパターンのファイルが見つかりませんでした。」ならOK
手順4:ネイティブ版のインストール
irm https://claude.ai/install.ps1 | iex
実際に遭遇したトラブル
ここで問題が発生しました。
1回目の実行結果:
PS C:\Users\xxxxx> irm https://claude.ai/install.ps1 | iex
Setting up Claude Code...
Installing Claude Code native build stable...
PS C:\Users\xxxxx>
あれ?成功メッセージがない。確認してみると…
claude --version
# → claude : 用語 'claude' は、コマンドレット、関数、スクリプト ファイル...(エラー)
インストールされていませんでした。
原因:サイレント失敗
実行ファイルを確認すると、claude.exe が存在しませんでした。
Test-Path "$env:USERPROFILE\.local\bin\claude.exe"
# → False
解決策:再実行
同じコマンドをもう一度実行したら、今度は成功しました。
PS C:\Users\xxxxx> irm https://claude.ai/install.ps1 | iex
Setting up Claude Code...
✔ Claude Code successfully installed!
Version: 2.0.57
Location: C:\Users\xxxxx\.local\bin\claude.exe
Next: Run claude --help to get started
⚠ Setup notes:
• Native installation exists but C:\Users\xxxxx\.local\bin is not in your PATH. Add it by opening: System Properties →
Environment Variables → Edit User PATH → New → Add the path above. Then restart your terminal.
✅ Installation complete!
原因は不明ですが、ネットワークの一時的な問題だった可能性があります。うまくいかなかったら、もう一度試してみてください。
手順5:パスの設定とインストール確認
パスが通っていない場合は、手動で追加します。
[Environment]::SetEnvironmentVariable(
"PATH",
$env:PATH + ";C:\Users\XXXXX\.local\bin",
"User"
)
重要:環境変数の反映には、新しいターミナルを開く必要があります。
別のシェルを開いて、以下を実行します。
claude --version
# → 2.0.57 (Claude Code)
claude doctor
結果(ネイティブ版):
Diagnostics
└ Currently running: native (2.0.57)
└ Path: native
└ Invoked: C:\Users\xxxxx\.local\bin\claude.exe
└ Config install method: native
└ Auto-updates: default (true)
└ Search: OK (bundled)
Currently running: native になっていれば成功です。
検証3:Git Bashでの動作確認
ネイティブ版がGit Bashでも動くか確認します。
Git Bashの起動方法
- Windowsキー →
git bashと入力 → Enter - または、フォルダ内で右クリック → 「Git Bash Here」
やったこと
claude --version
claude doctor
結果
$ claude doctor
Diagnostics
└ Currently running: native (2.0.57)
└ Path: /c/Users/xxxxx/.local/bin/claude
└ Invoked: C:\Users\xxxxx\.local\bin\claude.exe
└ Config install method: native
└ Auto-updates: default (true)
└ Search: OK (bundled)
PowerShellと同様に動作しました。パス表記が /c/Users/... 形式になっているのがGit Bashの特徴です。
なぜWindowsネイティブ環境を選ぶのか(WSLとの比較)
ここが今回の検証で最も重要なポイントです。
VPN環境での問題
| 環境 | ネットワーク | VPN経由の社内サーバー接続 |
|---|---|---|
| WSL | 仮想NIC(別ネットワーク) | ❌ ルーティング問題で繋がらないことが多い |
| Windowsネイティブ環境 | Windowsと同一 | ✅ 問題なし |
WSLは仮想化されたLinux環境なので、ネットワークも仮想化されています。VPN接続時にルーティングがうまくいかず、社内サーバーに接続できないケースがよくあります。
一方、Windowsネイティブ環境(Git Bash、PowerShell)ならWindowsのネットワーク設定をそのまま使えるので、VPN接続も問題ありません。
Node.jsの扱い
| 環境 | Node.js |
|---|---|
| WSL | Linux用を別途インストール必要 |
| Windowsネイティブ環境 | Windows用を共有(1つでOK) |
Git Bashなら、すでにインストールしているWindows用のNode.jsをそのまま使えます。
結論
VPN環境で社内サーバーに接続する必要があるなら、Git Bash一択です。
なぜネイティブ版を選ぶのか(npm版との比較)
公式がネイティブ版を推奨している理由は以下の3点です。
| 項目 | npm版 | ネイティブ版 |
|---|---|---|
| Node.js依存 | 必須(18+) | 不要 |
| 更新方法 |
npm update -g 手動 |
自動更新 |
| 実行ファイル | Node.js + npm + パッケージ | 単一バイナリ |
特に「Node.js依存がなくなる」のは大きいです。環境構築のトラブルが減ります。
既知のリスク(GitHub Issues調査)
ネイティブ版にもリスクはあります。GitHub Issuesで報告されている問題を調査しました。
1. 自動更新による障害(Issue #9238)
自動更新後に claude.exe が0KBになり、起動できなくなるケースが報告されています。
回避策:
# 再インストール
irm https://claude.ai/install.ps1 | iex
# または自動更新を無効化
$env:DISABLE_AUTOUPDATER = "true"
2. キーボード入力不可(Issue #7739)
特定バージョン(v1.0.117)で、起動後にキー入力が効かなくなる問題が報告されています。
回避策:
# 安定したバージョンを指定してインストール
& ([scriptblock]::Create((irm https://claude.ai/install.ps1))) 1.0.115
3. クリップボード画像貼り付け不可
Windows+Shift+Sでキャプチャした画像のCtrl+V貼り付けは動作しません。
回避策: ファイルとして保存してドラッグ&ドロップ
リスク評価
| リスク | 発生頻度 | 影響度 | 回避可能 |
|---|---|---|---|
| 自動更新失敗 | 低〜中 | 高 | ✅ 再インストールで復旧 |
| キー入力不可 | 低 | 高 | ✅ バージョン固定 |
| 画像貼り付け不可 | 高 | 低 | ✅ D&D使用 |
npm版にも同様の問題は存在するため、ネイティブ版を避ける理由にはなりません。
ここまでのまとめ
- ネイティブ版 + Git Bash が推奨構成
- 移行は簡単だが、サイレント失敗に注意(再実行で解決)
-
claude doctorで npm-global / native を確認できる - VPN環境では WSLよりGit Bash を選ぶ
次回予告
後編では、残りの検証項目をお伝えします。
- 疑問2:
/initで生成されるCLAUDE.md、そのまま使っていいの? - 疑問5:日本語の文字化け、どう対処する?
シリーズ情報
- シリーズ名:Claude Code 実践検証ガイド 2025
- 著者:Akira
- 検証環境:Windows 11 / Git Bash / Claude Code v2.0.57
前回:Day 2 前編「CLAUDE.mdの読み込み挙動、実際どうなってる?」
次回:Day 4 後編「/init検証と日本語文字化け対処」
Discussion