🪟

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不要」

今回はこの疑問に決着をつけます。

検証したい観点

  1. npm版 vs ネイティブ版、何が違う?
  2. WSL vs Git Bash、どちらを選ぶべき?
  3. 移行は簡単にできるのか?

検証環境

項目 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の起動方法

  1. Windowsキー → git bash と入力 → Enter
  2. または、フォルダ内で右クリック → 「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 doctornpm-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