WSL2で2年間Web開発してわかったこと
はじめに
WSL2(Windows Subsystem for Linux 2)を使ってWeb開発をしてきて、結論から言うと「問題なく使える」。
むしろ、メモリを増やし放題で快適に動作する点など、Macより優れている部分もある。
この記事では、WSL2を使ってWeb開発をするメリットや注意点、Docker運用のコツなどを紹介する。
WSL2のメリット
メモリ増やし放題で快適
Macの場合、メモリ増設が高価でハードウェアの制限もあるが、Windowsなら比較的安価にメモリを増設できる。
私は16GBのゲーミングノートを32GBに増設し、そのうち22GBをWSL2に割り当てている。
WEB開発でDynamoDBローカル、NestJSバックエンド、vite/Reactのフロントエンドを同時起動する機会があったが、
16GBのmac book proでは毎回起動に数分かかっており、ホットリロードがままならない状態だった。
メモリだけの影響ではないと思うが、経験上WSL2はリソース効率の面で有利だと思う。
Windows / Chromeでの動作確認が楽
Web開発では、Windows環境やChromeでの動作確認が必須になることが多い。
ユーザーのターゲットがWindowsになりがちなので、デザインの崩れなどを確認しながら開発ができる。
例えば、MacとWindwsではスクロールバーの表示有無が同じChromeでも異なることがあるようだ。
inode枯渇につよい
一時期Ubuntu Desktopをデュアルブートしていた時期があったが、node_modulesでinodeが枯渇した系エラーの対処に手を焼くことがあった。
WSL2にしてからは一度もお目にかかっていない。
NvidiaのGPUが使える
機械学習モデルの運用が可能。
Pythonは特にパッケージバージョン管理地獄が発生するので、Dockerポン置きで動くの非常に良い。
ここがつらいかも
Docker運用
Docker for Windowsを使わず、Ubuntu内に直接入れるべき。確信した。Docker for Windowsは罠。
Docker Desktopのライセンス問題を回避しつつ、ネットワーク周りをWSL2内に押し込むことができる。
デフォルトでWSL2はポートをホストにフォワーディングするので、特に問題なく使える。
バックアップの重要性
たまに突然linux userが吹っ飛ぶ(!?)。
定期的にバックアップをしつつ、圧縮もしよう。
太ったストレージが戻らない
バックアップのついでにdiskpartで圧縮しよう。
WSL2が確保したストレージはホストに返却されない。
USB周りの問題とデュアルブート
WSL2はUSBデバイスの扱いが難しく、特にシリアル通信や外付けデバイスとの連携は制限が多い。
例えば、Arduinoなどのマイコン開発では、WSL2ではなくネイティブなLinux環境が適している。
まとめ
-
Web開発ならWSL2で問題なし!
-
DockerはWSL2のUbuntu内に直接インストールすると快適
-
定期的なバックアップは必須
-
USBデバイスを使うならデュアルブートも検討
WSL2を使えば、Windowsのメリットを活かしつつLinux環境で開発できる。
一方で、用途によってはデュアルブートが必要になることもあるので、自分の開発スタイルに合った構成を選ぼう!