WindowsでClaude Codeを使うならWSL2一択だった
Windows環境にWSL2を入れてClaude Codeを動かすまでの手順。ファイルパスの混乱をシンボリックリンクで解消した話も含めて。
このブログについてはこちらに書いた。
Macユーザーなのに、なぜWindowsでClaude Codeを使うのか
本業はMacを使っている。なのでプライベートでClaude Codeを触るときも、「Mac上でやればいいじゃないか」という話ではあるんだけど、手元のPCがWindowsなのでそういうわけにもいかない。
正直、Windowsのターミナル(PowerShell)はコマンドの書き方がLinux・Macと微妙に違って直感に合わない。ls で一覧を出すとか、パスの区切りが \ だとか、ちょっとしたところで毎回「あれどっちだっけ」となる。
WSL2を入れてからはそのストレスがなくなった。Linuxのコマンドがそのまま使えるし、Claude Codeとの相性も良い。結論から言うと、WindowsでClaude Codeを動かしたいならWSL2一択だと思っている。
コラム: WSL2とは
WSL2(Windows Subsystem for Linux 2)は、Windows上でLinux環境を動かす仕組み。仮想マシンと似ているが、起動が爆速で、WindowsとLinux間のファイル共有も簡単にできる。
一世代前のWSL1はWindowsのシステムコールをLinux向けに変換する方式だったが、WSL2は本物のLinuxカーネルを仮想化して動かす方式に変わった。おかげでDockerなど従来は動かなかったツールも使えるようになっている。
Windows上で動いているとはいえ、ターミナルを開くと完全にUbuntu(Linux)の世界になる。
aptでパッケージを入れたり、bashスクリプトを書いたり、Mac上での作業とほぼ同じ感覚で使える。Claude Codeとの相性が良いのもこのあたりが理由で、LinuxやMacを前提とした手順がそのまま動く。
WSL2のインストールはあっさり終わった
インストール自体は意外なほど簡単だった。Web検索したりChatGPTに聞きながら進めたんだけど、管理者権限でPowerShellを開いてコマンドを1行叩くだけ。
wsl --install
これだけでWSL2とUbuntuが入る。あとはPCを再起動して、Ubuntuを起動してユーザー名とパスワードを設定すれば完了。つまずくところがほぼなかった。
WSL2のバージョンを確認するには:
wsl --list --verbose
VERSION が 2 になっていれば問題ない。
Claude Codeのインストールも詰まらなかった
WSL2(Ubuntu)のターミナルを開いて、Node.jsとClaude Codeを入れる。Node.jsはnvmで管理するのがおすすめ。
# nvmをインストール
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
# ターミナルを再起動してからNode.jsをインストール
nvm install --lts
# Claude Codeをインストール
npm install -g @anthropic-ai/claude-code
インストールが終わったら claude と打って起動できれば完了。初回はAnthropicアカウントでの認証が求められる。
これも詰まらなかった。
最初に詰まったのはファイルパスの話
インストール自体はスムーズだったんだけど、使い始めてすぐに「あれ?」となったのがファイルパスの話だ。
たとえばWindowsでファイルをダウンロードして、それをClaude Codeに読んでもらおうとしたとき。Claude CodeはWSL(Linux)上で動いているので、Windowsの C:\Users\username\Downloads\file.pdf というパスを渡しても当然わからない。
逆に、WSLのターミナルからWindowsのファイルを探そうとしても、どこにあるのかさっぱりわからない。最初は毎回「どこに保存されてるんだ」と迷っていた。
/mnt/c/ とシンボリックリンクで解決した
/mnt/c/ とは
WSL2からWindowsのファイルにアクセスするには /mnt/c/ を使う。これはCドライブ全体が /mnt/c/ にマウントされているから。
WindowsのパスとWSLのパスの対応はこんな感じ:
| Windowsのパス | WSL2からのパス |
|---|---|
C:\Users\username | /mnt/c/Users/username |
C:\Users\username\Downloads | /mnt/c/Users/username/Downloads |
C:\Users\username\OneDrive | /mnt/c/Users/username/OneDrive |
これはClaude Codeに「WSLからWindowsのファイルを参照したい」と伝えたら教えてもらった。
シンボリックリンクを作って一覧性を上げる
毎回 /mnt/c/Users/username/... と打つのは長くて面倒なので、シンボリックリンクを作っておくとかなり楽になる。シンボリックリンクとは、別の場所への「ショートカット」みたいなもの。
よく使う場所へのリンクをWSLのホームに作っておく:
# Windowsユーザーフォルダへのリンク
ln -s /mnt/c/Users/username ~/win-home
# OneDriveへのリンク(OneDriveを使っている場合)
ln -s /mnt/c/Users/username/OneDrive ~/onedrive
# ダウンロードフォルダへのリンク
ln -s /mnt/c/Users/username/Downloads ~/downloads
username の部分は自分のWindowsユーザー名に変える。whoami コマンドを /mnt/c/ 以下で確認するか、エクスプローラーで C:\Users\ を開けば自分のフォルダ名がわかる。
作成後は ls ~/ で確認できる:
ls ~/
# onedrive win-home downloads ...
これで cd ~/onedrive とするだけでOneDriveにアクセスできる。Claude Codeにファイルを渡すときも ~/onedrive/... と書けばいいので、パスを調べる手間がなくなった。
WSL2を入れて良かったこと
本業でMacを使っているので、Linuxコマンドがそのまま動く環境は本当にありがたい。ls、grep、find、シェルスクリプト——全部Macと同じ感覚で使える。
Claude Codeもそうで、WSL2上で動かすとLinux前提のコマンドをそのまま実行してくれる。PowerShellの独自コマンドを気にしなくていい分、Claude Codeとのやり取りがスムーズになった気がする。
WindowsでClaude Codeを動かしたい人、WSL2は本当に一択だと思う。インストールも1コマンドだし、最初の壁はパスの話くらいで、それもシンボリックリンクを作れば大体解決する。
ハマってる人の参考になれば。