Claude Codeで全部やる
環境構築 ·

WindowsでClaude Codeを使うならWSL2一択だった

Windows環境にWSL2を入れてClaude Codeを動かすまでの手順。ファイルパスの混乱をシンボリックリンクで解消した話も含めて。

WindowsでClaude Codeを使うならWSL2一択だった
WSL2Claude CodeWindows環境構築

このブログについてはこちらに書いた。

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

VERSION2 になっていれば問題ない。

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コマンドがそのまま動く環境は本当にありがたい。lsgrepfind、シェルスクリプト——全部Macと同じ感覚で使える。

Claude Codeもそうで、WSL2上で動かすとLinux前提のコマンドをそのまま実行してくれる。PowerShellの独自コマンドを気にしなくていい分、Claude Codeとのやり取りがスムーズになった気がする。

WindowsでClaude Codeを動かしたい人、WSL2は本当に一択だと思う。インストールも1コマンドだし、最初の壁はパスの話くらいで、それもシンボリックリンクを作れば大体解決する。

ハマってる人の参考になれば。