WSL ( Windows Subsystem for Linux )は非常によくできています。WSLはWindows のコマンドライン・ウィンドウからでも、メニューからでも起動できるLinuxで、VMWareを使ったり、デュアルブートせずともLinuxのサクサク動作を享受できます。
しかしながら、その機能を使うならぜひともVisual Studio Code (VS Code)エディタと組み合わせて動かすべきです。ここでは、WSL + VS Codeがいかに素晴らしいか、その一部を紹介します。
WindowsからVS Codeを使ってWSLを起動できる
これはある意味順当な機能です。WindowsのVS CodeからWSLを利用できます。
VS CodeはWSLの中のファイルシステムやBashをWindowsのファイルシステムやコマンドラインと同列に利用できます。ですので、VS CodeのTerminalペインの中でWSLのBashを呼び出すことができますし、Explorerペインの中でWSLのファイルシステムを一覧できます。
VS Codeはアプリケーションを閉じるときに、Explorerの状態や開いているファイル、そしてコマンドラインの状態を保存し、再起動時にそれらを復元できます。この機能は、WindowsからVS Code越しにWSLを使っている時も同じで、WSLが起動されていないならVS CodeがWSLを起動します。Bashのヒストリーバッファも復元されます。
文章で書くとごちゃごちゃしていますが、ぱっと見には「VS CodeがVMのスナップショットをレジュームする」ように見えます。そしてVMのレジュームよりもはるかに高速です。
この機能はWSLだけではなく、SSH接続したサーバーに対しても利用できます。
WSLからWindowsのVS Codeを起動できる
これは先の機能とは逆の機能です。
WSL、つまりWindowsにインストールされているLinux サブシステムでVS Codeを使うために、WSLにVS Codeをインストールする必要はありません。Shellの中で以下のようにタイプするだけで、WindowsのVS Codeを起動できます。
code .
WindowsはWSLの中にVS Codeをリモートで使うスタブをインストールします。ですので、WSLの中で上記コードを実行すると、実際に起動するのはWindowsにインストールしたVS Codeです。そして、そのVS Codeが開くのは、WSLの中のファイルシステムです。
これは素晴らしい機能で、WSLにGUIをインストールせずともGUIエディタであるVS Codeを使えます。
なお、こんな機能を使わなくとも毎回Windows側からVS Codeを開けばいいようにも思えます。しかし、その方法だと、別ディレクトリを開きたいときに不便です。
それよりもWSLのBashの中で
code 任意のディレクトリ
とタイプすれば、新しいVS CodeウインドウがWindowsで開いて指定したディレクトリファイル一覧を表示します。違うディレクトリでの作業を開始することが非常に楽です。
GitHubの認証をWEBベースで行うことができる
私が一番恩恵を受けていると感じる機能です。
GitHubのセキュリティは年々向上していますが、一方でやや煩雑になっています。最近は権限を細かく制御したアクセストークンを発行することで、毎回パスワードをタイプしなくてもよくしていますが、今度はそのトークンの発行と管理が面倒です。
VS Codeはこの認証手続きをあっさりWEBベースに置き換えています。gitそのものは当然コマンドライン・アプリケーションですが、gitが認証を必要とするときにVS Codeが間に入り、WEBブラウザを使って認証を代行します。おかげで複数のリポジトリを行き来することがとても簡単です。
CMake と Google Testの統合
拡張機能を使ってCMakeとGoogle Testを統合することができます。
マイクロソフトが提供する拡張機能パッケージC/C++ Extension PackにはCMakeの拡張機能が同梱されています。このため、VS Codeがワークスペースを開いた際にCMakeLists.txtを発見すると、自動的にコンフィギュレーションの準備に入ります。
また、Google Test Adapterは Testの結果を読み取って、サイドパネルにテスト結果の一覧を表示します。当然、エラー箇所へのジャンプも簡単です。
WSLの良いところは高機能なツールをLinux上でサクサク動かすことができる点にあります。VS Codeを使えばこれらをWindows上で高度に統合して気軽に利用できます。
高いドキュメント作成能力
VS Codeの拡張機能は大量に提供されており、その中にはドキュメント作成に関するものもあります。
スペルチェッカーのような誰もが使うものから始まり、LaTeXのコマンドを入力補完するような特殊なものまであります。LaTeXはインストールが大変ですが、WSLの中に閉じ込めてしまえばWindows環境が散らかる心配はありません。VS Codeを使えばこれをきれいにWindowsから使うことができます。
また、私が特に気に入っているドキュメント開発機能にDraw.io Integration拡張機能があります。この機能を使うと、Draw.io文書をVS Codeの中で編集できます。ドキュメントに挿入する図形を、エディタから出ずに作業できるので非常に便利です。無論、WSLにGUIをインストールする必要はありません。
非常によくできた作業環境
以前、友人が
「Emacsは偶然エディタ機能が有名な作業環境だ」
と言っていましたが、同じ伝で行くと
「VS Codeは偶然エディタ機能が有名な作業環境だ」
と言えます。
最近ST MicroがARMマイコンの開発ツールをVS Code対応にしました。そのうち試してみるつもりです。「WSLに閉じ込めたARM開発環境をWindowsのOpenOCDドライバと連携させつつ、それら全体をVS Codeで管理する」と言ったことも気軽にできそうです。