Windowsで開発していると、「Linux上で動く環境を手軽に試したい」「DockerやNodeのビルドをLinux環境でやりたい」という場面が増えてきましたよね。
そんなときに強力な味方になるのがWSL2(Windows Subsystem for Linux 2)です。
さらにVisual Studio Code(VS Code)をWSL2と接続すると、Linux環境上のファイルやツールをWindowsと同じ感覚で直接操作できます。
この記事では、以下の内容について詳しく解説します:
- WSL2の基本概念と導入メリット
- VS CodeとWSL2の接続設定
- 開発環境の構築と最適化
- よくあるトラブルと解決方法
- 実際のプロジェクトでの活用例
- パフォーマンス向上のコツ
WindowsとLinuxのいいとこ取りで、快適な開発環境を構築しましょう!
WSL2の基本概念と仕組み

WSL2とは?
**WSL2(Windows Subsystem for Linux 2)**は、Windows上でLinuxカーネルを直接動かせる仕組みです。
従来のVMとの違い
- 軽量性 – リソース使用量が少ない
- 高速起動 – 数秒でLinux環境が利用可能
- 統合性 – WindowsとLinuxのファイルシステムが連携
- ネイティブ性能 – ほぼネイティブLinuxと同等の性能
WSL2でできること
開発環境の活用例
- Docker環境 – DockerコンテナをLinux上で効率的に実行
- Node.js開発 – パッケージインストールとビルドが高速
- Python開発 – pip、仮想環境、機械学習ライブラリが簡単
- Web開発 – nginx、Apache、データベースの構築
- Git操作 – Linux用のGitツールとの完全互換
実際の使用例
# Ubuntu WSL2でDockerを起動
sudo service docker start
# Node.jsプロジェクトの高速ビルド
npm install
npm run build
# Pythonの機械学習環境
pip install tensorflow pandas numpy
python train_model.py
WSL2のインストールと初期設定

システム要件の確認
必要な環境
- Windows 10 Version 2004以降 または Windows 11
- 仮想化機能 – BIOSで有効化が必要
- Hyper-V – Windows機能で有効化
バージョン確認方法
# Windowsバージョンの確認
winver
# WSL2の対応状況確認
wsl --status
WSL2の基本インストール
自動インストール(推奨)
# PowerShellを管理者として実行
wsl --install
このコマンドで以下が自動実行されます:
- WSL機能の有効化
- 仮想マシンプラットフォームの有効化
- Linuxカーネルコンポーネントのダウンロード
- Ubuntu 22.04 LTSのインストール
手動インストール手順
ステップ1: Windows機能の有効化
# WSL機能を有効化
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 仮想マシンプラットフォームを有効化
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
ステップ2: 再起動後の設定
# WSL2をデフォルトバージョンに設定
wsl --set-default-version 2
# Linux ディストリビューションの一覧表示
wsl --list --online
# Ubuntuのインストール
wsl --install -d Ubuntu-22.04
初回セットアップ
Ubuntuの初期設定
- ユーザー名とパスワードの設定
# 新しいユーザー名を入力
Enter new UNIX username: your_username
Enter new UNIX password:
- システムの更新
# パッケージリストの更新
sudo apt update
# システム全体のアップグレード
sudo apt upgrade -y
- 基本ツールのインストール
# 開発に必要な基本ツール
sudo apt install -y curl wget git build-essential
# Node.jsの最新版
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
# Pythonの開発環境
sudo apt install -y python3 python3-pip python3-venv
VS CodeのWSL2連携設定

必要な拡張機能のインストール
Remote – WSL拡張機能
- VS Codeを起動
- 拡張機能パネル(
Ctrl + Shift + X
)を開く - **「Remote – WSL」**を検索してインストール
- **「Remote Development」**パック全体をインストール(推奨)
Remote Development パックの内容
- Remote – WSL – WSL2との接続
- Remote – SSH – SSH接続でのリモート開発
- Remote – Containers – Dockerコンテナでの開発
WSL2への接続方法
基本的な接続手順
方法1: VS Codeから直接接続
- VS Codeを起動
- 左下の緑色のアイコン(「><」マーク)をクリック
- **「Connect to WSL」**を選択
- 接続が完了すると「WSL: Ubuntu-22.04」と表示
方法2: WSLターミナルからVS Codeを起動
# WSL2内のホームディレクトリでVS Codeを起動
cd ~
code .
# 特定のプロジェクトフォルダを開く
cd /home/username/projects/my-app
code .
方法3: コマンドパレットから接続
Ctrl + Shift + P
でコマンドパレットを開く- **「Remote-WSL: New WSL Window」**を選択
- 使用するディストリビューションを選択
接続状態の確認
ステータスバーでの確認
接続が成功すると、VS Code左下に以下のように表示されます:
WSL: Ubuntu-22.04
ターミナルでの確認
VS Code内でターミナル(Ctrl + Shift +
)を開くと:
username@DESKTOP-ABC123:/home/username$
このようにLinuxのプロンプトが表示されれば成功です。
WSL2環境での開発の基本操作
ファイルシステムの理解
WSL2のファイルシステム構造
/home/username/ # WSL2内のホームディレクトリ
/mnt/c/ # WindowsのCドライブ
/mnt/d/ # WindowsのDドライブ
Windowsからのアクセス方法
Windowsエクスプローラーで以下のパスにアクセス:
\\wsl$\Ubuntu-22.04\home\username
プロジェクトの適切な配置
推奨: WSL2ファイルシステム内
# WSL2内での作業(高速)
/home/username/projects/my-app/
メリット
- 高速なファイルI/O
- Linuxツールとの完全互換
- 権限の問題がない
非推奨: Windowsファイルシステム
# Windows側での作業(低速)
/mnt/c/Users/username/Documents/projects/my-app/
デメリット
- ファイルI/Oが遅い
- 権限の問題が発生しやすい
- Linuxツールの一部が正常動作しない
開発ワークフローの例
Node.jsプロジェクトの開発
プロジェクトの作成
# WSL2内でプロジェクトを作成
cd ~
mkdir -p projects/my-node-app
cd projects/my-node-app
# package.jsonの初期化
npm init -y
# 依存関係のインストール
npm install express
# VS Codeで開く
code .
開発時の流れ
- VS CodeでWSL2に接続
- ファイル編集 – Windows上のVS Codeで編集
- ターミナル実行 – WSL2環境でコマンド実行
- ブラウザ確認 – Windows上のブラウザで確認
Pythonプロジェクトの開発
仮想環境の構築
# プロジェクトディレクトリを作成
mkdir -p ~/projects/my-python-app
cd ~/projects/my-python-app
# 仮想環境の作成
python3 -m venv venv
# 仮想環境の有効化
source venv/bin/activate
# 依存関係のインストール
pip install flask pandas numpy
# requirements.txtの生成
pip freeze > requirements.txt
# VS Codeで開く
code .
VS CodeでのPython設定
Ctrl + Shift + P
→ 「Python: Select Interpreter」- WSL2内の仮想環境を選択:
~/projects/my-python-app/venv/bin/python
VS Code拡張機能のWSL2対応

拡張機能の動作原理
クライアント・サーバー構造
- VS Code Client – Windows上で動作
- VS Code Server – WSL2内で動作
- 拡張機能 – サーバー側で実行される
拡張機能の同期
自動インストール Windows側でインストールした拡張機能は、WSL2側にも自動で同期されます。
手動での管理 拡張機能パネルで以下の表示を確認:
- Install in WSL: Ubuntu-22.04 – WSL2側にインストール
- Install Locally – Windows側にインストール
開発言語別の推奨拡張機能
JavaScript/TypeScript開発
{
"recommendations": [
"ms-vscode.vscode-typescript-next",
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint",
"bradlc.vscode-tailwindcss",
"ms-vscode.vscode-json"
]
}
Python開発
{
"recommendations": [
"ms-python.python",
"ms-python.pylint",
"ms-python.black-formatter",
"ms-toolsai.jupyter",
"ms-python.isort"
]
}
Docker開発
{
"recommendations": [
"ms-azuretools.vscode-docker",
"ms-vscode-remote.remote-containers"
]
}
高度な設定とカスタマイズ
WSL2固有の設定
.wslconfigファイルでのリソース制限
Windows側の %USERPROFILE%\.wslconfig
に設定:
[wsl2]
memory=8GB
processors=4
swap=2GB
localhostForwarding=true
WSL2のネットワーク設定
# WSL2のIPアドレス確認
ip addr show eth0
# Windowsホストとの通信確認
ping $(cat /etc/resolv.conf | grep nameserver | cut -d' ' -f2)
VS CodeのWSL2特化設定
settings.jsonでの最適化
{
"remote.WSL.fileWatcher.polling": false,
"remote.WSL.useShellEnvironment": true,
"terminal.integrated.defaultProfile.linux": "bash",
"git.defaultCloneDirectory": "~/projects",
"python.defaultInterpreterPath": "/usr/bin/python3"
}
タスクランナーの設定
.vscode/tasks.json
でWSL2固有のタスク:
{
"version": "2.0.0",
"tasks": [
{
"label": "Run in WSL",
"type": "shell",
"command": "wsl",
"args": ["${workspaceFolder}/run.sh"],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared"
}
}
]
}
Docker開発との連携

WSL2でのDocker環境
Docker Desktopの設定
- Docker Desktop for Windowsをインストール
- 設定で**「Use the WSL 2 based engine」**を有効化
- Resources → WSL IntegrationでUbuntuを有効化
WSL2内でのDocker操作
# Dockerサービスの状態確認
sudo service docker status
# Dockerサービスの開始
sudo service docker start
# Hello Worldコンテナの実行
docker run hello-world
# VS CodeでDockerfile編集
code Dockerfile
VS CodeでのContainer開発
Dev Containersの活用
// .devcontainer/devcontainer.json
{
"name": "Node.js Development",
"image": "node:18",
"features": {
"ghcr.io/devcontainers/features/git:1": {}
},
"customizations": {
"vscode": {
"extensions": [
"ms-vscode.vscode-typescript-next",
"esbenp.prettier-vscode"
]
}
},
"postCreateCommand": "npm install",
"remoteUser": "node"
}
パフォーマンス最適化
ファイルI/O の最適化
推奨事項
- WSL2ファイルシステム内で作業
# 良い例: WSL2内
~/projects/my-app/
# 悪い例: Windows マウント
/mnt/c/Users/username/projects/my-app/
- 大きなnode_modulesの扱い
# .wslignoreファイルでバックアップ除外
echo "node_modules/" >> ~/.wslignore
メモリとCPUの最適化
WSL2リソース監視
# メモリ使用量の確認
free -h
# CPU使用量の確認
top
# ディスク使用量の確認
df -h
プロセス管理
# VS Code Serverのプロセス確認
ps aux | grep code
# 不要なプロセスの終了
kill <process_id>
よくあるトラブルと解決方法
接続関連の問題
WSL2が起動しない
症状: wsl
コマンドでエラーが発生
解決方法
# WSL2の再起動
wsl --shutdown
wsl
# ディストリビューションの確認
wsl --list --verbose
# WSL2バージョンの確認
wsl --set-version Ubuntu-22.04 2
VS Codeが接続できない
症状: 緑のアイコンをクリックしても接続されない
解決方法
- VS Code Serverの再インストール
# WSL2内で実行
rm -rf ~/.vscode-server
- VS Code再起動後に再接続
- Remote – WSL拡張機能の再インストール
パフォーマンス関連の問題
ファイル操作が遅い
原因: WindowsファイルシステムでWSL2ツールを使用
解決方法
# プロジェクトをWSL2内に移動
cp -r /mnt/c/projects/my-app ~/projects/
cd ~/projects/my-app
メモリ不足
症状: WSL2が重くなる、応答しない
解決方法 .wslconfig
でメモリ制限を調整:
[wsl2]
memory=4GB
swap=1GB
拡張機能関連の問題
Python拡張機能が動作しない
症状: Python インタープリターが見つからない
解決方法
# Python3のパス確認
which python3
# VS Codeでインタープリター設定
# Ctrl + Shift + P → "Python: Select Interpreter"
# /usr/bin/python3 を選択
ESLint/Prettierが動作しない
症状: フォーマットやLintが効かない
解決方法
# WSL2内でパッケージインストール
cd ~/projects/my-app
npm install eslint prettier
# VS Codeでワークスペース設定
# settings.json で WSL2 内のパスを指定
Git関連の問題
Git認証情報の共有
問題: WindowsとWSL2でGit認証が分離
解決方法
# Git Credential Manager の設定
git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager-core.exe"
# または、SSH キーを使用
ssh-keygen -t ed25519 -C "your-email@example.com"
cat ~/.ssh/id_ed25519.pub
実践的な開発事例

React + TypeScript プロジェクト
プロジェクトのセットアップ
# WSL2内でCreate React App
cd ~/projects
npx create-react-app my-react-app --template typescript
cd my-react-app
# 開発サーバーの起動
npm start
# VS Codeで開く
code .
開発用設定
// .vscode/settings.json
{
"typescript.preferences.importModuleSpecifier": "relative",
"editor.codeActionsOnSave": {
"source.organizeImports": true
},
"eslint.workingDirectories": ["./"]
}
Django + PostgreSQL プロジェクト
環境構築
# Python仮想環境の作成
cd ~/projects
python3 -m venv django-env
source django-env/bin/activate
# Django プロジェクトの作成
pip install django psycopg2-binary
django-admin startproject myproject
cd myproject
# PostgreSQL の起動(Dockerを使用)
docker run --name postgres-dev -e POSTGRES_PASSWORD=password -d -p 5432:5432 postgres:13
# VS Codeで開く
code .
データベース設定
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'myproject',
'USER': 'postgres',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '5432',
}
}
Next.js + Dockerプロジェクト
Docker環境の構築
# Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
# docker-compose.yml
version: '3.8'
services:
nextjs:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
- /app/node_modules
environment:
- NODE_ENV=development
VS Codeでの開発
# Dockerコンテナでの開発
docker-compose up -d
# コンテナ内に接続
# VS Code Command Palette → "Remote-Containers: Attach to Running Container"
まとめ
VS CodeとWSL2の連携により、以下のメリットが得られます:
主要な利点
- 高速なLinux環境 – ネイティブに近いパフォーマンス
- 統合された開発体験 – WindowsとLinuxの良いとこ取り
- 豊富なツール支援 – Docker、Git、各種言語ツール
- 柔軟な環境切り替え – プロジェクトごとの最適化
開発効率の向上
- ファイルシステムの高速化 – WSL2内での作業
- ツールチェーンの統一 – Linux標準ツールの活用
- コンテナとの親和性 – Docker開発の効率化
- クロスプラットフォーム対応 – 本番環境との整合性
設定のベストプラクティス
基本設定
{
"remote.WSL.fileWatcher.polling": false,
"terminal.integrated.defaultProfile.linux": "bash",
"git.defaultCloneDirectory": "~/projects"
}
パフォーマンス設定
# .wslconfig
[wsl2]
memory=8GB processors=4 swap=2GB
コメント