はじめに
WSL環境で開発を始めて3年ほど経ったので、ふりかえりの意味も込めて思ったことなどを書き残します。
この記事を書いた人のバックグラウンドは以下の通りです。
- 7年ぐらいWindowsやLinuxでサーバサイドアプリケーションを中心に開発
- 3年ぐらいWSL2(Ubuntu)環境でRuby on Railsの開発、最近はFirebaseも触っている
- Windowsで開発しているメンバーは社内で自分だけ。Macはサブ機で触っている
また、WSLの機能に関する話はWSLバージョン 2.3.26.0 を基準に書いています。
WSLの良いところ
WSLの良いところは「まともに動くLinuxとWindowsをシームレスに行き来できる」ということです。良いところはこれだけです!(個人の感想です)
WSLで出来る開発は、基本的にはMacや純粋なLinuxでも可能です。Windowsを使うことメリットを感じない人は、macかLinuxへ移行するべきです。
自分の場合はWindowsとLinuxで開発経験を積んだ後にWSLを知り、macに移行するよりもメリットを感じでWSL2を使い始めました。
「切り替え無しで2つのOSを行き来できるなんて最高!Linuxまともに動く!」と結構感動した記憶があります。
GUIアプリが意外に動くけどまだ難あり
Ruby on RailsやFirebaseなど、CUIで完結できる開発は問題なく出来ています。
最新版ではGUIアプリケーションの実行もある程度サポートされていて、WSL側に必要なパッケージをインストールすればブラウザぐらいは問題ないレベルで動きます。
以前にAndroid StudioなどのIDEもWSL側で動かせるのでは?と思った試したところ、立ち上げ自体はできました。
ただ、同じPCのWindows側で立ち上げた時より動作が重く、開発利用は厳しい印象でした。WSLのGUI対応はWSLgというプロジェクトで進められていて、さらなる発展を期待しております。
エディタはVisual Studio Codeが最強(2024年12月現在)
Visual Studio CodeのWSL向け拡張機能が非常に優秀で、現状は出来る限りこれを使って環境を構築した方が色々と捗ると思います。
この拡張機能を使うとUI(ウィンドウ)だけWindows上で実行され、あらゆる操作や拡張機能がWSL側で実行される形になります。
日々開発する中でWSL側との行き来をするのがすごーく楽になり、個人的にはこれが無いと生きていけないです。
もしJetBrainsのIDEなど他の環境を使いたい人は、そのツールが提供しているWSL連携機能を使うなどして構築する必要があります。2023年ごろは拡張機能が上手く動かない~という話をちらほら聞きました。
いずれ解消されていくところだと思うので、脱Visual Studio Codeをしたい方は使いたいIDEの最新情報を追ってみると良いと思います。
管理はMacの方が楽
WSLはMicrosoft Storeからインストールするか、公式ドキュメントにあるコマンドを打てばサクッと使えるようになるので、導入は簡単です。
管理面はちょっと複雑で、何か起きた時にWSL側とWindows側の両方を気にする必要があります。
自分が過去にWSL側で問題が起きた際、WSL側で環境変数の設定ミスが原因だったこともあれば、Windows側のネットワーク設定が影響していたこともあります。
環境としてはMacの方が全体の見通しが良くて管理しやすいと思います。
PCのメモリは32GB以上欲しい
WSLはデフォルトで「Windowsの合計メモリの50%」を確保します。設定ファイルで確保量の変更は可能です。
WindowsとWSLで1台のPCのリソースを分け合う形になるので、ちゃんとメモリを積まないとスワップが発生して開発体験が非常に悪くなります。
現在はPCのメモリは32GB積んで、WSLには16GBを割り当てて運用しています。
変化が激しいので公式の情報を追いかけよう
(当たり前すぎる話ですが、一応書き残します。)
WSLはこの3年の間に大きなアップデートが何度かありました。
機能面では先に述べたGUI対応(WSLg)の他にも、systemdやネットワークのミラーモードも個人的に嬉しいアップデートでした。
WSLは仕組みとしては割と新しいので、大きな変更がまだまだ入りそうな印象です。開発効率UPにつながるアップデートが来るかもしれないので、使っているうちはしっかり情報収集していきたいところです。
wslのGithubリポジトリのREADMEに、本家Microsoftやコミュニティへのリンク集があるので、情報源としてはそこがおすすめです。
おわりに
雑多な内容になってしまいましたが、WSLについては「開発内容によっては問題なく使えるし、手放しでオススメはできないけど、合う人には合う環境」というのが現状の評価です。自分は引き続きメインの開発環境として使い続ける予定です。
また何年かたったらふりかえる予定です(もし別環境に移行していたらお別れの経緯を書きます)