WindowsでのWeb開発:WSL2とDockerでデュアルブートに別れを告げる

Development tutorial - IT technology blog
Development tutorial - IT technology blog

WindowsはかつてWebデベロッパーにとっての「悪夢」だった

WindowsでNode.jsライブラリをインストールする際、node-gypのエラー修正だけで午前中を潰してしまった経験があるなら、あなたは一人ではありません。以前は、WindowsでWeb開発を行うのは綱渡りのようなものでした。C++のコンパイルが必要なライブラリや特定のPythonパッケージが必要になると、パス(path)や権限のエラーが頻発しました。当時の解決策は、重いVMware仮想マシンをインストールするか、非常に不便なデュアルブート(Dual Boot)にすることでした。

5人のデベロッパーが参加する実際のプロジェクトで、WSL2Dockerのコンボを導入したことで, すべてが変わりました。結果はどうだったでしょうか?新しいメンバーのオンボーディング時間は1日から15分に短縮されました。チーム全員が統一されたLinuxカーネル上で動作しています。「自分の環境では動くのに、あなたの環境では動かない」という現象は完全に解消されました。本番環境での6ヶ月間の実戦経験を経て、これが現在のWindowsデベロッパーにとっての最適解であると確信しています。

なぜWSL2が「ゲームチェンジャー」なのか?

WSL2 (Windows Subsystem for Linux 2) を従来の仮想マシンと混同しないでください。ハードウェアをエミュレートする代わりに、Microsoftによって微調整された本物のLinuxカーネルを、わずか2秒足らずで起動させます。最大の利点は、ファイル読み書き(I/O)のパフォーマンスがv1に比べて最大10倍高速であることです。

Docker Desktopと組み合わせることで、絶対的な柔軟性が得られます。Windowsはメールチェック、Webブラウジング、会議に使用します。Ubuntu(WSL2内)はコードやスクリプトを処理する「頭脳」の役割を果たします。そしてDockerは、MySQL、Redis、Nginxなどのサービスを分離(アイソレート)します。ホストマシンは常にクリーンな状態に保たれ、何十もの異なるバージョンのデータベースが乱立することはありません。

プロフェッショナルな環境構築のステップ

ステップ1:WSL2を高速で有効化する

コントロールパネルを開いてあちこち探す必要はありません。PowerShell(管理者権限)を開き、コマンドを1つ入力するだけです:

wsl --install

システムは自動的に仮想化機能を有効にし、最新のUbuntuをダウンロードします。PCを再起動した後、Linuxのユーザー名とパスワードを設定してください。ソフトウェアをインストールする際のsudoコマンドで必要になるため、このパスワードは忘れないようにしましょう。

すべてが正しく設定されているか確認するには、次のコマンドでバージョンをチェックします:

wsl -l -v

Version列に「2」と表示されていれば準備完了です。もし「1」のままなら、wsl --set-version Ubuntu 2コマンドですぐにアップグレードしましょう。

ステップ2:Docker DesktopをLinuxに接続する

Docker Desktopをダウンロードしてインストールする際、重要なオプションに注意してください。インストール中に 「Use the WSL 2 based engine」 のチェックボックスをオンにする必要があります。これが、PCをフリーズさせずにDockerをスムーズに動作させる鍵となります。

インストール後、Settings > Resources > WSL Integration に進み、Ubuntuのスイッチを「ON」にします。これで、Linux内にエンジンを別途インストールすることなく、Ubuntuのターミナルから直接docker psを入力できるようになります。この連携は非常にスマートで、リソースを節約できます。

ステップ3:VS Codeを強力な武器に変える

Microsoftの拡張機能 「WSL」 が最後のピースです。インストール後、Ubuntuのターミナルで次のように入力するだけです:

code .

即座にWindows上のVS Codeが開きますが、処理エンジン、ターミナル、GitはすべてLinux上で直接動作します。この体験は非常にスムーズで、Windowsを使っていることを忘れてしまうほどです。

テスト:30秒でWebスタックを構築する

Docker Composeの威力を確認するために、Node.jsとRedisで構成される環境を構築してみましょう。以下の内容でdocker-compose.ymlファイルを作成します:

version: '3.8'
services:
  app:
    image: node:18-alpine
    volumes:
      - .:/app
    working_dir: /app
    command: npm run dev
    ports:
      - "3000:3000"
  redis:
    image: redis:alpine
    ports:
      - "6379:6379"

コマンドを実行します:docker-compose up -d。コンテナが起動するのに数秒しかかかりません。Windowsのブラウザから通常通りlocalhost:3000にアクセスできます。作業が終わったらdocker-compose downとするだけで、システムに「ゴミ」を残さずすべて消去されます。

パフォーマンス低下を避けるための3つの「教訓」

WSL2は非常に強力ですが、使い方を誤るとPCが重くなってしまいます。私の経験に基づいたアドバイスです:

  • コードをWindowsのCドライブやDドライブに置かない: これが最も一般的な間違いです。コードはLinux内の~/projectsなどに保存してください。システムをまたいで(/mnt/c/経由で)ファイルにアクセスすると、コンパイル速度が著しく低下します。
  • WSL2のRAM消費を制限する: デフォルトではWSL2はRAMの最大80%を占有することがあります。Windowsの%UserProfile%ディレクトリに.wslconfigファイルを作成し、制限をかけましょう:
[wsl2]
memory=4GB # PCのRAMが8GBか16GBかに応じて調整
processors=2
  • バックアップは死活問題: 深い設定変更を行う前に、wsl --exportコマンドを使用してディストリビューション全体を.tarファイルにパッケージ化しておきましょう。誤ってシステムファイルを削除してしまっても、わずか2分で元の状態に復元できます。

Lời kết

WSL2とDockerの初期設定には30分ほどかかるかもしれませんが、それによって毎月何十時間もの環境トラブルの修正時間を節約できます。これは単にコードをスムーズに書くための方法であるだけでなく、実際のLinuxサーバー環境に慣れるためのステップでもあります。プロフェッショナルなフルスタックデベロッパー(Fullstack Developer)を目指すなら、今日からワークフローを変えてみましょう。

Share: