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

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

MacとWindowsの両方で開発環境を維持している方向けに、WSL2を活用したクロスプラットフォーム開発のポイントをまとめます。

WSL2 vs Mac ターミナル環境の比較

項目Mac (macOS)Windows (WSL2)
シェルzsh (デフォルト)bash / zsh
パッケージ管理Homebrewapt + Homebrew (Linuxbrew)
DockerDocker Desktop for MacDocker Desktop for Windows + WSL2 backend
ファイルシステムAPFS (case-insensitive)ext4 (WSL2内) / NTFS
ターミナルGhostty / iTerm2 / Terminal.appWindows 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.txtfile.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'

まとめ

観点MacWSL2
セットアップの手軽さ簡単やや手間
Docker性能良好良好(WSL2バックエンド)
ファイルシステムケースインセンシティブに注意/mnt/cの低速に注意
ツール互換性Homebrewapt + Homebrew
総合評価標準的な開発環境Mac環境に近づけられる

WSL2の進化により、Windows上でもMacとほぼ同等の開発体験が可能になっています。dotfilesの共有とDocker活用で、両環境の差異を最小限に抑えられます。


関連記事