WSL2 vs Mac — 開発環境のクロスプラットフォーム構築ガイド

目次
MacとWindowsの両方で開発環境を維持している方向けに、WSL2を活用したクロスプラットフォーム開発のポイントをまとめます。
WSL2 vs Mac ターミナル環境の比較
| 項目 | Mac (macOS) | Windows (WSL2) |
|---|---|---|
| シェル | zsh (デフォルト) | bash / zsh |
| パッケージ管理 | Homebrew | apt + Homebrew (Linuxbrew) |
| Docker | Docker Desktop for Mac | Docker Desktop for Windows + WSL2 backend |
| ファイルシステム | APFS (case-insensitive) | ext4 (WSL2内) / NTFS |
| ターミナル | Ghostty / iTerm2 / Terminal.app | Windows Terminal / Ghostty |
| パス区切り | / | /(WSL2内)/ \(Windows側) |
WSL2のセットアップ
1. WSL2の有効化
# PowerShell(管理者権限)
wsl --install -d Ubuntu-24.04
2. 初期設定
# パッケージ更新
sudo apt update && sudo apt upgrade -y
# 基本ツール
sudo apt install -y build-essential curl git unzip jq
# zshに変更(Macと揃える)
sudo apt install -y zsh
chsh -s $(which zsh)
3. Homebrewの導入(Macと同じパッケージ管理)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.zshrc
これにより brew install でMacと同じツールを導入できます。
共通の開発ツール設定
Git設定(両環境共通)
git config --global user.name "your-name"
git config --global user.email "your-email@example.com"
git config --global core.autocrlf input # 改行コードをLFに統一
git config --global init.defaultBranch main
Macでは改行コードの問題は起きにくいですが、WSL2↔Windows間でファイルをやり取りする場合は core.autocrlf=input が重要です。
SSH鍵の共有
# WSL2からWindows側のSSH鍵を参照
ln -s /mnt/c/Users/YOUR_USER/.ssh ~/.ssh
# パーミッション修正(WSL2ではデフォルトで777になる)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
もしくは /etc/wsl.conf でメタデータを有効化:
[automount]
options = "metadata,umask=022,fmask=077"
Docker環境
Mac
brew install --cask docker
WSL2
Docker Desktop for WindowsをインストールしWSL2バックエンドを有効化するか、WSL2内に直接Dockerをインストール:
# WSL2内にDocker Engineを直接インストール
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
Docker Composeファイルは両環境で同じものが使えます。LocalStackなどの開発用コンテナも同様です。
LocalStackでAWSローカル開発環境を構築するシリーズもご参照ください。
ファイルシステムの注意点
WSL2のパフォーマンス
| 場所 | 読み書き速度 | 推奨用途 |
|---|---|---|
/home/user/ (ext4) | 高速 | ソースコード、ビルド |
/mnt/c/ (NTFS経由) | 低速 | ファイル共有のみ |
ソースコードは必ずWSL2側(/home/以下)に配置してください。/mnt/c/はWindows側のNTFSをマウントしているため、I/Oが遅くビルド時間が大幅に増加します。
Macのケースインセンシティブ問題
macOSのAPFSはデフォルトでケースインセンシティブです。Linuxと異なり File.txt と file.txt が同一として扱われます。GitリポジトリでLinux(WSL2含む)と共有する場合は注意してください。
# Git側でケースセンシティブを有効化
git config core.ignorecase false
両環境で同じ.zshrcを使う
dotfilesリポジトリで設定を共有し、OS判定で分岐させると管理が楽です。
# ~/.zshrc
# OS判定
case "$(uname -s)" in
Darwin)
# Mac固有設定
export PATH="/opt/homebrew/bin:$PATH"
;;
Linux)
# WSL2/Linux固有設定
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
;;
esac
# 共通設定
export EDITOR=vim
alias ll='ls -la'
alias g='git'
alias dc='docker compose'
まとめ
| 観点 | Mac | WSL2 |
|---|---|---|
| セットアップの手軽さ | 簡単 | やや手間 |
| Docker性能 | 良好 | 良好(WSL2バックエンド) |
| ファイルシステム | ケースインセンシティブに注意 | /mnt/cの低速に注意 |
| ツール互換性 | Homebrew | apt + Homebrew |
| 総合評価 | 標準的な開発環境 | Mac環境に近づけられる |
WSL2の進化により、Windows上でもMacとほぼ同等の開発体験が可能になっています。dotfilesの共有とDocker活用で、両環境の差異を最小限に抑えられます。
関連記事
- M2 MacBook AirでWindows 11を動かす — Mac上でWindows環境を構築
- Ghosttyターミナルガイド — 高速ターミナルの設定
- Gitよく使うコマンド — 基本的なGit操作まとめ