弊社ではシステム開発・Web製作を行う都合、Windows向けアプリケーション(Unity, Electron)の効率的な開発のためにWindowsで開発をしております。
代表も2021年まではMac OS(2019年の16インチの最後のIntel Macでした…)を使っていましたが、2020年5月にリリースされたWSL2と呼ばれるWindows上の仮想環境が提供されるようになり、「ネイティブ環境に匹敵するパフォーマンス」やVSCodeとの統合等、非常に魅力的な開発環境をついにMicrosoftが力を入れてきたと判断して、環境の移行を行いました。

WSL2にはメリットもデメリットもある

非常に魅力的なWSL2ですが、やはりHyper-V経由でUbuntuを使うという都合、以下の項目に関してはかなりハマります。

  • WSLgは応答しなくなるとか、スケーリングが自動でいい感じになってくれないのでチューニングを手動でやる必要がある
    • うまく行けば問題無いが、複数人開発を前提とする環境で構築資料のみでWSLgを使うようなシチュエーションになると、どうしてもバグったり上手くいかない人が出てくる
  • GPU(CUDA)の動きが怪しい
    • うまくいく時はうまくいく。私の場合はffmpegのエンコーダで何故かCUDAが使えなかったり、出来ると信じてやった時に思わぬ罠を踏むので、全てをWSL2が解決するというほどではない。
  • ホストマシン(Windowsエディタ)上で動くIntelliJからのWSL2実行環境に対するパフォーマンスが悪い
    • WSL2で動くプログラムは原則WSL2のファイルシステム上に設置しないとI/Oが遅くて使い物にならないのでWSL2上に置きます。そうすると逆にホストマシン(Windows)からのファイルの読み書き(エディタのコードスキャン等)が遅く(それでも2022でだいぶ改善された)、現状IntelliJよりVSCodeの方が快適というJetBrains信者には辛い環境になっている
    • →最近JetBrains GatewayなるWSL2上にIntelliJを起動してホストマシンから間接的にやりとりする仕組みが出来たが動きが怪しいのでダメ。
  • メモリを食う
    • 最近はある程度安価で手に入るようになったので、最低32GBの端末を用意しましょう。
  • 原則、WindowsTerminalしか選択肢が無い
    • Mac時代にiTerm2あたりで満足していたなら問題にはならないのですがサードパーティのターミナルアプリが無いと言っても過言ではなく、必然的にMicrosoft謹製のWindows Terminalを使うことになります。
    • クセが無いだけで一通りのショートカットは用意されて(ctrl+shift+pで確認)おり、実はペイン分割とかも標準で出来る。
  • WSL関係無いけどSafariとXCodeが使えないので、スマホ向けWebエンジニアやアプリエンジニアは当然二台持ちが必要

メリット

上の方ではアレコレ言ってますが、実際(Macと比較して)安価で、x64なLinuxをローカル環境として開発でき、WSL2自体も枯れてきてトラブルシューティングのナレッジやサードパーティーの開発環境ツールも整ってきたので、サーバー上で動くシステムや、Unity(iOS除く)開発に限れば、相当に良い環境で作業が出来ると思います。
エクスペリエンスとしては最近のIntel/AMDのCPUは非常に優秀かつ、ハードウェアにも拘ったDELL XPSや軽量高性能モバイル端末等、一概に「フルスペックのMacが最強」と言うわけでもなく、見た目や自分の趣味嗜好として、使って気持ちの良い端末はどれかという選択肢で選べる良い時代、という理解が良いかもしれない。