はじめに
皆さん、Windows使っていますか~? 私は最近、WindowsでWebアプリケーションの開発をしています。PC向けのWebアプリケーションでは、ほとんどのユーザがWindowsを使っているため、普段からWindowsでの動作が確認できるという安心感があるところが良いですね。また、様々な筐体があり、魅力的なマシンが多いのも良いところです。
WindowsでWeb関係の開発をするときは、WSLとVSCodeもしくはJetBrainsのIDEを組み合わせるのが定番だと思います。いずれのIDEもWSL対応は進んでいるのですが、実際に使ってみると次のような課題があります。
- VSCodeの課題
- WSL Remoteのレイテンシが気になる。(クライアント側とWSL側の通信が遅い模様)
- 特に、TypeScriptでのパフォーマンスが悪くなってしまう。
- JetBrains系IDEの課題
- WSL側のプロジェクトを開くには
\\wsl.localhost\
経由でしか開くことが出来ず、I/Oが遅い。
この問題はJetBrainsの問題ではなく、WSL側の問題であるため、WSL側での問題解決が待たれる状況。
- WSL側のプロジェクトを開くには
そこで、私はWSL上でJetBrains系IDEを動作させて、上記の問題を回避したので、その方法を紹介します。
今回の環境はこちらです。
- ホストマシン: Windows 11 Pro 21H2 Build 22000.651
- WSL2上のマシン: Ubuntu 20.04 LTS
X Serverの設定
WSLと組み合わせるX Serverソフトとしては、VcXsrvもしくはWSLgが良くある組み合わせです。ただ今回私はVcXsrvを使いました。その理由としてはWSLgに次のような課題があり、今のところ回避策が無いためです。
- 小数点スケーリング(175%など)に非対応
- 複数のスケーリングを持つディスプレイを使用している場合に動作が不安定になってしまう
また現状では、問題が発生したときに、 VcXsrvの方が情報量が多いこともあり、今回はVcXsrvを使用します。
VcXsrvの初期設定
まずはVcXsrvをこちらからダウンロードし、インストールしてください。「XLaunch」というアプリケーションがインストールさせるので、こちらを開きます。
XLaunchは、VcXsrvのコンフィグファイルを生成するためのアプリケーションです。
起動すると、ウィザード形式でコンフィグファイルを作成することができるので、次のように設定します。
- Select display setting
- Multiple windowsを選択します
- Display numberは
-1
を選択します。
- Select how to start clients
- Start no clientを選択します。
- Extra settings
- Clipboard: オン
- Primary Selection: オフ (GoLandで選択した文字列が勝手にクリップボードにコピーされてしまう現象が発生してしまうためオフにします。)
- Native opengl: オン
- Disable access control: オン
(代わりに、Additional parametersに-ac
を指定しても同じです。)
- Clipboard: オン
最後に、コンフィグファイルを保存して終了です。
VcXsrvのHiDPI設定
デフォルトでは、VcXsrvをHiDPI環境で起動すると、ぼやけて描画されてしまいます。そこで、vcxsrv.exeのHiDPI設定を上書き、くっきり描画されるようにします。
- エクスプローラーでvcxsrv.exeのプロパティを開く (私の環境では
C:\Program Files\VcXsrv\vcxsrv.exe
にありました。) - 互換性タブ -> 高 DPI設定の変更
- 「高いDPIスケールの動作を上書きします。」にチェック
- 拡大縮小の実行元に「アプリケーション」指定。
DISPLAY環境変数の設定
ここで一旦WSL2上のUbuntuにログインし、
.bashrc
に次の内容を追記します。
1 | export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0 |
Ubuntu側のスケーリング設定
GoLandを正しいスケーリングで起動させるには、Ubuntu側のX Resourcesの設定をする必要があります。
~/.Xresource
に次の内容を書き込みます。
1 | Xft.dpi: 200 |
これで200%のスケーリングに設定されます。この値は、Windows側で指定しているスケーリングの値と合わせると良いでしょう。
この内容を反映させるには、次のコマンドを実行します。
1 | $ xrdb -merge ~/.Xresource |
常にディスプレイを使用する場合は、上記のコマンドを
~/.bashrc
に書いておき、自動実行させた方が良いでしょう。
動作確認
ここまで設定できたら、先ほど作成したコンフィグファイルを開き、VcXsrvを起動させてください。Ubuntuで
xeyes
を実行し、ウインドウが表示されたら成功です。
初回起動時にはファイアウォールの許可画面が表示されるため、アクセスを許可してください。
GoLandのインストールと設定
GoLandはスタンドアロンでのインストールがおすすめです。詳しくはこちらの内容に沿って進めてください。
スクロールの設定(トラックパッドの場合のみ)
トラックパットでのスクロールがうまくいかないため、スクロールアニメーションをオフにします。
- GoLandでFind Actionを開く (Ctrl + Shift + A )
-
Smooth Scroll Options
と入力し、Enterで開く。 -
Animated smooth scrolling
のチェックを外す
日本語入力環境の用意
uim-mozcでの日本語入力環境を用意します。
uim-mozcのセットアップ
次のコマンドを実行してuim-mozcをセットアップします。
1 2 | $ sudo apt install uim uim-mozc uim-xim $ sudo uim-module-manager --register mozc |
次に、
~/.profile
に以下を追記して、uim-ximを自動起動させるようにします。
1 2 3 4 5 | export GTK_IM_MODULE=uim export QT_IM_MODULE=uim export XMODIFIERS="@im=uim" export UIM_CANDWIN_PROG=uim-candwin-gtk uim-xim & |
WSL2を再起動すると、GoLandなどで日本語入力できるようになっていると思います。(デフォルトでは、Shift + Spaceで日本語入力できるようになります。)
キーバインドなどの変更を変更するには
uim-pref-gtk
コマンドを実行します。ちなみに私は、MacのJISキーボード風に、無変換キーでIMEオフ、変換キーでIMEオンにするため、次の設定をしています。
- 全体キー設定1
- [全体オン] に
Henkan_Mode
を追加 - [全体オフ] に
Muhenkan
を追加
- [全体オン] に
ショートカットの作成
GoLandを使うたびにUbuntuのシェルから起動させるのは面倒なので、Windows側にショートカットを作成しておきます。
1 | C:\Windows\System32\wsl.exe bash -c "export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0 && echo 'Xft.dpi: 200' > ~/.Xresource && xrdb -merge ~/.Xresource && source ~/.profile && sh /opt/goland-2021.3.3/bin/goland.sh" |
'Xft.dpi: 200'
の部分は、Windowsのスケーリング設定に合わせて変更してください。私の場合は、日によってスケーリングの異なるディスプレイで作業するため、このショートカットを分けて作成し、使い分けています。
さいごに
WSLで快適にGoLandを使うには、色々な作業をする必要がありました。それでも、WSLというVM上で動いている以上、若干のオーバーヘッドがあるように感じています。今のところは、まだMacの方が開発する方が、すぐに始められるので楽ですね。
WSLgも開発は進んでいるので、今後に期待したいなと思います。