WSL2 + Claude + VS Code の開発環境を作る

WEB+DB開発
記事内に広告が含まれています。

「Windows ネイティブ版も出たことだし…」ということで、遅ればせながら 2026年1月から Claude Code を使い始めました。でもシェルコマンドやパス関連でやっぱり違和感が。それなら WSL2 で動かせばいいじゃない、ということでやってみました。

WSL2 + Ubuntu のインストールと設定

まずは WSL2 + Ubuntu をインストール。超簡単。

WSL2 + Ubuntu をインストール

コマンドプロンプトなどで以下を実行。

wsl --install

WSL2 自体のインストールが始まるのでしばし待つ。インストールが完了したら Windows を再起動。

再起動後、再度以下を実行。

wsl --install

Linux ディストリビューションのインストールが始まるのでしばし待つ。ディストリビューションは自動的に Ubuntu がインストールされるので特に指定などは不要。

インストールが終わると Ubuntu が勝手に起動しユーザー名とパスワードの登録が促されるので、適当にアレしてから一旦 Ubuntu からログアウト。しばらくして Ubuntu がシャットダウンされたのを確認してから次の作業。

しばらく待つのが億劫な場合は、コマンドプロンプトなどで以下を実行

wsl --shutdown
wsl -l -v

WSL2 側から Ubuntu がシャットダウンできないのはなんでなんやろなぁ…。

仮想 HDD ファイルをシステムドライブから移動

仮想 HDD ファイル ext4.vhdx は肥大化するので C: ドライブから移動させておきます(個人的な趣味)。レジストリの

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\{GUID}

の下の【BasePath】に ext4.vhdx のディレクトリパスが書いてあるのでそこから適当にコピーして、レジストリ値も修正。今回は D:/virtual/wsl2.ubuntu/ にコピー。

参考 Moving WSL2 to a new drive : r/wsl2

再度 Ubuntu を起動して D:/virtual/wsl2.ubuntu/ext4.vhdx が使われていることを確認。

この段階で ext4.vhdx を保存しておくと手軽に最初の状態に戻せるので楽。

apt リポジトリのミラーサーバーを変更

apt リポジトリのミラーサーバーを ICSCoE に変更してからシステムを更新。

sudo sed -i.bak -r 's@http://(jp\.)?archive\.ubuntu\.com/ubuntu/?@https://ftp.udx.icscoe.jp/Linux/ubuntu/@g' /etc/apt/sources.list.d/ubuntu.sources
sudo apt -y update; sudo apt -y upgrade;

ICSCoE は激速だけどたまに落ちてるらしいので注意。

WSL2 へのメモリ割り当てを固定

C:\Users\<username>\.wslconfig に以下を追加。

[wsl2]
memory=4GB
swap=0

割り当てるメモリサイズとスワップファイルは様子を見ながら変更する予定。

当初は「GUI も無いし 2GB で十分やろ」って思ってたら VS Code 連携した途端に 1.2GiB ほどメモリを消費されてゲスト OS(Ubuntus)が落ちてしまうことがわかり、4GB に変更。

wsltty をインストール

ターミナルは Cygwin でも使ってるしシンプルなのが好きなので wsltty をインストール。

Releases · mintty/wsltty

ポータブル版を任意のディレクトリに解凍すると wsltty ディレクトリが作成されるので、bin にある mintty.exe のショートカットを作成して以下のように設定。

C:\<example_path>\wsltty\bin\mintty.exe --WSL= --position=894,33 --size=80,37 --icon=D:/virtual/wsl2.ubuntu/shortcut.ico --configdir=C:\<config_dir>\ -~ -

ウィンドウ位置やサイズを固定したり、設定ファイルの場所を指定したり。アイコンは WSL2 の Ubuntu のものを使用。

設定ファイルは %APPDATA%/wsltty/config を --configdir で指定したディレクトリに複製してCygwin で使っている .minttyrc を参考にしながら編集。Cygwin と区別しやすいようにダーク系のテーマを選択。

BoldAsFont=no
Font=MeiryoKe_Console
FontHeight=11
CursorType=block
CursorColour=64,0,0
Locale=
Charset=
Scrollbar=none
Transparency=off
OpaqueWhenFocused=no
ThemeFile=nord

PowerShell での使用が前提の .bashrc を修正。色関係をコメントアウトして、プロンプトをシンプルに。

# 色関係(*color*)を全部コメントアウト

# プロンプトをシンプルに
PS1="$ "

このへんはお好みで。

Windows 側から WSL2 のフォルダにアクセスできない場合

WSL2(Ubuntu) は起動しているのに \\wsl.localhost\Ubuntu\ にアクセスできない場合がありました。調べてみたら以下の記事が(多謝)。

参考 WSLのフォルダにエクスプローラーからアクセスできない #WSL2 - Qiita

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order

の【ProviderOrder を修正。

cbfsconnect2017,WinFsp.Np,RDPNP,LanmanWorkstation,webclient,P9NP

となっていたのを

cbfs6,P9NP,RDPNP,LanmanWorkstation,webclient

に変更したらアクセスできるようになりました。WSL2 で使用されている Plan 9 プロトコルの優先順位を上げる感じ(多分)。

WSL2 に Windows の PATH が追加されているのを削除

WSL2(Ubuntu) で PATH を確認すると Windows 側のディレクトリパスが含まれています。「なんでやねん…」って感じですが。

参考 WSL2でWindowsのPATH設定が引き継がれるのを解除する

/etc/wsl.conf に以下を追加。

[interop]
appendWindowsPath=false

WSL2(Ubuntu) の自動起動設定

WSL2(Ubuntu) が自動起動しないことよりも、WSL2(Ubuntu) のターミナルウィンドウを閉じると WSL2(Ubuntu) が勝手にシャットダウンされてしまうのが困るので。

参考 WSL2を自動起動する設定 #Windows11 - Qiita

ThinkPad で使うので【コンピューターをAC電源で使用している場合のみタスクを開始する】のチェックは外しておく。

とりあえず以上で WSL2 + Ubuntu のインストールと設定は完了。

Claude Code と VS Code 連携

ここからが本題。WSL2(Ubuntu) に Claude Code をインストールして VS Code と連携させます。

Claude を WSL2 にインストール

ネイティブ版をインストールするので Node.js のインストールは不要。

curl -fsSL https://claude.ai/install.sh | bash
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
claude --version

バージョンが表示されればおk。

Claude をグローバル npm パッケージとしてインストールする方法もあるみたいだけど、今回はシンプルにネイティブ版にしました。

Anthropic アカウント認証

サブスクリプション契約している Anthropic アカウントと連携させます。以下を実行。

claude

初回実行時にブラウザ認証のURLが表示されるので、URLをコピーして Windows 側のブラウザで開く → Anthropic アカウントでログイン → 認証コードが表示されたら、ターミナルに貼り付けて Enter でおk。

VS Code の WSL 機能拡張をインストール

Windows 側の VS Code を WSL2(Ubuntu) と連携させるための機能拡張をインストールします。

この機能拡張をインストールして使用すると WSL2(Ubuntu) 側のメモリを相当圧迫する(VS Code を起動するだけで 1GiB ほど)ので注意。
で、連携のキモは VS Code を WSL2(Ubuntu) 側から起動することです。
後日わかったことだけど WSL2(Ubuntu) 側から起動しなくても VS Code を起動して WSL: Connect to WSL を実行したらいけるっぽい。

WSL2 から起動しやすいように VS Code の本体 code.exe のシンボリックリンクを作成。

sudo ln -s '/mnt/c/Users/<username>/AppData/Local/Programs/Microsoft VS Code/bin/code' /usr/local/bin/code

作成したシンボリックリンクからプロジェクトディレクトリを指定して VS Code を起動。初回起動時に VS Code Server for Linux x64 なるものが自動でインストールされる。

$ code ~/httpdocs/<projectname>/
Installing VS Code Server for Linux x64 (10c8e557c8b9f9ed0a87f61f1c9a44bde731c409)
Downloading: 100%
Unpacking: 100%
Unpacked 4168 files and folders to /home/<username>/.vscode-server/bin/10c8e557c8b9f9ed0a87f61f1c9a44bde731c409.
Looking for compatibility check script at /home/<username>/.vscode-server/bin/10c8e557c8b9f9ed0a87f61f1c9a44bde731c409/bin/helpers/check-requirements.sh
Running compatibility check script
Compatibility check successful (0)
$

VS Code が起動すると以下のようなダイアログが表示されるので「親フォルダー ~」にチェックを入れて【はい、作成者を信頼します】をクリック。

VS Code が無事起動したは良いものの、今まで VS Code で使っていた機能拡張のほとんどが使えなくなっている。

機能拡張のサイドバーを確認すると【WSL: Ubuntu にインストールする】というボタンが表示されているので必要なものについてはクリックしてインストールすると無事使えるようになった。(どういう仕組みかよくわからない)

PHP 8.3

僕の仕事は WordPress のテーマ開発が主なので使用言語は PHP ばかり。VS Code の WSL 機能拡張を使う際に WSL2(Ubuntu) 側の PHP をバリデーションに使うようにするためにインストール。

Docker とか使ってみたいけど知識不足なので普通に PHP をインストール。
sudo apt -y install php8.3 php8.3-mbstring

インストール後に Ctrl + Shift + P で【Preferences: Open User Settings (JSON)】を開いて php.validate.executablePath を修正しようとすると「この設定は、このウィンドウでは適用できません。ローカル ウィンドウを開いたときに適用できます。」と表示されます。なんやろ?って思ったら WSL2 側の設定で指定せなあかん模様。

参考 VSCode Remote DevelopmentにおけるRemote側のエディタ設定について #RemoteDevelopment - Qiita

Ctrl + Shift + P で【Preferences: Open Remote Settings (JSON)】を開いて以下を追記 or 修正。

"php.validate.executablePath": "/usr/bin/php"

Claude Code に制限をかける

~/.claude/settings.json にいろいろ書く。

以上でとりあえず準備完了。あとは Claude Code と楽しい会話をするだけ。

タイトルとURLをコピーしました