WSL 2 と Visual Studio Code
2019年9月3日 Matt Hernandez、@fiveisprime
Windows Subsystem for Linux 2 (WSL 2) の初期ベータ版がリリースされてから数ヶ月が経ちました。今回は、WSL 2 とはどのようなものか、そしてそれが皆さんの生産性向上にどう役立つかについて少しお話したいと思います。私は Windows Insiders に登場して以来ベータ版を使用しており、日々の開発タスクではすぐに WSL 2 を排他的に使用するように切り替えました。
WSL 2 の変更点
最初のバージョンでは、システムコールは Windows 上でネイティブに実装されていました。システムコールは本質的にカーネルによって提供される関数であり、実装されたコールのみが WSL 環境でサポートされていました。WSL の初期バージョンを使用し、未実装のシステムコールにアクセスしようとするライブラリやツール(例えば、Go デバッガー)を見つけた方は、この点に気づいたかもしれません。より多くの関数のサポートを追加するために段階的な改善が行われましたが、WSL 2 は、完全な Linux カーネルを搭載した軽量仮想マシンを出荷することで、これとはまったく異なるアプローチをとっています。
その通り、WSL 2 は現在 VM を同梱していますが、それは皆さんが VM に期待するような体験ではありません。従来の VM が起動に時間がかかり、孤立していると感じるかもしれないのに対し、WSL 2 は以前のバージョンと同様にシームレスです。Windows と Linux の高度な統合、非常に高速な起動時間、小さなリソースフットプリント、そしてVMの構成や管理は一切不要という点を期待してください。
これらすべてが、I/O パフォーマンスの向上(WSL 1 と比較して最大 20 倍高速)と、完全なシステムコール機能につながります。モジュールのインストールが速くなり、リポジトリのクローンが速くなり、お気に入りのライブラリが確実に動作します。パフォーマンスの向上は、Zsh のような代替シェルを実行できるだけでなく、お気に入りの Node.js バージョン管理ユーティリティを使用できることも意味します。
WSL 2 と Visual Studio Code
もしこの記事の内容に沿って進める場合は、Windows Insiders ビルドにオプトインし、WSL 2 を有効にしていることを確認してください。WSL 2 のインストール手順で、開始方法の詳細を確認できます。
また、Visual Studio Code と WSL 拡張機能をインストールする必要があります。オプションとして、Windows で最高のターミナル体験を得るために、ベータ版 Windows Terminal を試してみてください。
WSL を開くには、Windows Terminal を起動して新しい WSL タブを作成するか、インストールした Linux ディストリビューションを起動します。また、コマンドプロンプトや PowerShell から直接ターミナルで wsl
と入力することで Linux に切り替えることもできます。これは、WSL が Windows に深く統合されている多くの方法のほんの一部です。WSL をインラインで使用して、次のようなとんでもないこともできます…
ターミナルから、WSL で code .
を使用して Visual Studio Code を起動します。wsl code .
を使用してインラインで Linux に切り替え、VS Code を起動し、Windows シェルに戻ることさえ可能です。😏
個人的には、Windows での開発は 100% WSL 2 を使用しています。Git や Node.js などの開発ツールはすべて Linux 環境にインストールされています。WSL で VS Code をニーズに合わせてカスタマイズする方法については、こちらのヒントとコツの投稿をご覧ください。
私のセットアップをご覧ください。
スクリーンショットでは、WSL 2 インスタンスに接続されており(左下にリモートソースとして 'Ubuntu-18.04' と表示)、デバッガーから Node.js アプリを起動し、ブレークポイントで停止していることがわかります。デバッグコンソールで process.platform
と入力し、WSL 拡張機能がすべてのエディター操作を Linux 環境にデフォルト設定することを示しています。これを機能させるために必要な設定は一切なく、WSL 拡張機能から WSL 環境に接続するだけで作業を開始できます。また、追加の Git 設定オプションを設定しなくても、行末が LF にデフォルト設定されていることにも注目してください(ステータスバーに表示)。オープンソースで Windows を使用している方なら、これがなぜ大きな問題なのか理解できるでしょう。
私のお気に入りの拡張機能はすべて動作し、正しい環境をターゲットにしています。例えば、ソース管理ビューは WSL 2 にインストールされている Git のバージョンを使用してプロジェクトへの変更を表示しており、Docker 拡張機能は Docker Desktop WSL 2 テクニカルプレビューにアクセスするように設定されています。
これらすべては、WSL 拡張機能を使用することで可能になります。編集、デバッグ、さらには拡張機能まで、お気に入りのエディターで期待するのとまったく同じように機能します。
WSL 2 のメリット
まとめ
- 仮想マシンはリソースを大量に消費し、非常に切断されたエクスペリエンスを生み出します。
- オリジナルの WSL は非常に接続性が高かったですが、VM と比較するとパフォーマンスはかなり劣っていました。
- WSL 2 は、軽量 VM、完全に接続されたエクスペリエンス、そして高いパフォーマンスを組み合わせたハイブリッドなアプローチをもたらします。
Visual Studio Code に WSL 拡張機能を追加すれば、最高の環境を手に入れることができます。ツールは Linux と Windows の両方に対応し、優れたパフォーマンスとシームレスな開発体験が得られます。
関連情報
VS Code を WSL でセットアップするのに役立つWSL での作業チュートリアルがあります。VS Code Remote と、それが SSH や Docker コンテナー内でどのように機能するかについて詳しく知りたい場合は、完全な VS Code のリモート開発ドキュメントをご覧ください。
リモートコーディングをお楽しみください!
Matt Hernandez、VS Code プログラムマネージャー @fiveisprime