WSL 開発ワークフローの概要

完了

Linux と Windows の両方を 1 つのコンピューター上で使用できるということは、いずれかのオペレーティング システムからお気に入りのツールを使用できることを意味します。 このセクションでは、WSL を使用する際のスムーズな開発環境を最適にサポートする、いくつかのツール、コマンド ライン ユーティリティ、コーディング言語、フレームワークをお勧めします。 ユーザーは、2 つの異なるファイル システム間で作業していることを念頭に置く必要があります。 使用する環境の最善のパフォーマンスを実現するために、ワークフローに関して考慮すべきベスト プラクティスがいくつかあります。

WSL 開発ワークフローの基礎

まずは、WSL 開発ワークフローに関連するいくつかの標準的な開発ツール、コマンド ライン ユーティリティ、コード言語とフレームワーク、プラクティスを見てみましょう。

開発者ツールのおすすめ

ツールの選択は、どのような種類の開発作業を実行する予定であるかによって大きく異なります。 WSL ワークフローに対して特別におすすめものが、特に WSL の使用を開始したばかりの場合は、いくつかあります。

  • コード エディター: Visual Studio Code と WSL 拡張機能

    VS Code は、統合開発環境 (IDE) とも呼ばれる、無料のオープンソースのコード エディターです。 デバッグ、構文の強調表示、インテリジェント コード補完 (IntelliSense)、組み込みの Git コマンド、追加のサポート ツールをインストールできる広範な拡張機能のマーケットプレースがサポートされています。

    VS Code をおすすめする理由の 1 つに、WSL 拡張機能があります。 この拡張機能を使うと、VS Code のユーザー インターフェイスを Windows 上で実行しながら、コマンド、拡張機能、デバッグ、コードのオートコンプリート、リンティングなどはすべて WSL Linux 環境で動作させることができます。 この拡張機能を使わないと、Windows と Linux のファイル システム間で作業するときに、パフォーマンスと互換性の問題が発生します。 この拡張機能を使えば、Linux コード プロジェクトを、Windows から分離された、カプセル化された環境で実行できます。 Linux 環境で実行するツール、言語、コンパイラ、拡張機能によって、Windows 環境にインストールされている何かが変更されたり中断されたりすることはありません。

    Screen capture of project code stored in Ubuntu opened in VS Code with the WSL Extension.

  • コマンド ラインとユーティリティ: Windows ターミナルとカスタマイズされた Bash + PowerShell

    Windows ターミナルは Windows 11 の既定のコマンド ライン ホストです。そのため、インストールする Linux ディストリビューションでは、Windows ターミナルで自動的にプロファイルが作成されます。 このプロファイルは、任意の種類のテキスト サイズ、フォント、色などでカスタマイズできます。 Bash は、ほぼすべての Linux ディストリビューションに付属するコマンド ライン インタープリターです。 ユーティリティ ツールと共に使用して、ファイルやディレクトリの検索、システム パフォーマンス情報の表示、使用可能なディスク領域の分析、ネットワーク インターフェイスの監視、スクリプトによるタスクの自動化などを行うことができます。 PowerShell も同じ目的で機能しますが、こちらは Windows 用です。 WSL の優れた点の 1 つは、Bash と PowerShell の両方のコマンドとスクリプトを組み合わせることができることです。 Windows ターミナルでは、Bash と PowerShell の複数のコマンド ラインを同時に、タブまたはウィンドウ ペインで並べて実行できます。

    Screen capture of Windows Terminal with a PowerShell command line open, then adding a window pane for Ubuntu and Kali Linux.

  • コード言語とアプリ フレームワーク: パッケージ マネージャーを使用して Linux ファイル システムにプロジェクト コードをインストールする

    Windows では伝統的に、実行可能 (.exe) ファイルを使ってソフトウェアをインストールし、設定 GUI を使ってソフトウェアを管理または削除してきました ([設定] > [アプリと機能])。 Linux では、"パッケージ マネージャー" によってソフトウェアのインストール、アップグレード、構成、削除のプロセスを処理します。 WSL を使用して Linux で作業する場合は、パッケージ マネージャーを使用してコード言語とアプリ フレームワークを、使用しているディストリビューションに関連付けられた Linux ファイル システム ディレクトリにインストールできます。 既定の WSL ディストリビューションである Ubuntu では、apt パッケージ マネージャー (Advanced Packaging Tool の短縮形) が使用されます。 使用する言語、フレームワーク、ツールは、プロジェクト コードを作成するのと同じファイル システムに常にインストールする必要があります。 ファイル システム間での作業に関するヒントと、最良のパフォーマンスを実現する方法については、別の WSL トレーニング モジュールで詳しく説明します。

WSL workflow diagram showing Ubuntu, VS Code, Remote-WSL extension, and web browser.

一般的な開発ワークフロー

WSL 開発環境に必要なツールをインストールしたら、一般的なワークフローは次のようになります。

  1. 既定の Windows ターミナルで Ubuntu (または任意の Linux ディストリビューション) を開きます。

  2. ディストリビューションのパッケージ マネージャーを使用してコード言語とフレームワークをインストールするには、sudo apt install <software> のようなコマンドを入力します。

  3. ディストリビューションのパッケージ マネージャーから入手できない場合は、コマンド ライン ユーティリティを使用してソフトウェアをダウンロードする必要がある場合もあります。 多くの Linux ディストリビューションに付属している cURL (Client URL の短縮形) は、便利なユーティリティです。 これをコマンド ラインから使用して、URL 構文を使用するサーバーからローカル ファイルシステムにソフトウェア (または任意の種類のデータ) をダウンロードできます。 また、ユーザーによる操作なしで動作するように設計されているため、自動化されたタスクにもよく使用されます。

  4. Ubuntu コマンド ラインでアプリ プロジェクトを格納するディレクトリを作成します (mkdir app-project)。 パフォーマンスを向上させるために、Linux で実行するプロジェクト ファイルを (Windows ファイル システムではなく) Linux ファイル システムに保存します。 コマンド pwd を入力して、ディレクトリ パスを表示します。 Bash を使用していて、パスに /mnt/c/ が含まれている場合は、現在 Windows ファイル システム (マウントされた C ドライブ) 内にいることを意味します。 「cd ~」と入力して、Linux ファイル システムのホーム ディレクトリにディレクトリを変更します。 PowerShell を使用していて、パスに \\wsl.localhost\Ubuntu\home\<username>\app-project が含まれている場合、これは WSL によってホストされている Linux ファイル システム上の Ubuntu ディストリビューションのディレクトリを指しています。 (コマンド explorer.exe . を使って、Windows エクスプローラーでいずれかのファイル システムからファイルを表示することもできます。)

    Screenshot of Windows File Explorer with Ubuntu directory open

  5. コマンド code . を入力して、WSL 拡張機能を使って Visual Studio Code でプロジェクト ディレクトリを開きます。 VS Code リモート サーバーが起動し、Linux 上で実行されているプロジェクト コードが、Windows 上で実行されている VS Code で開きます。 これで、IntelliSense コード補完、デバッグ、リンティングなどの VS Code 機能にアクセスし、Linux にインストールされているツールとコンパイラを利用できるようになります。

  6. コードを更新した後は、Linux ディストリビューションで実行できますが、表示は Windows 上の Web ブラウザーを使って localhost アドレス (例: localhost:3000) で行います。 WSL ではホット リロードがサポートされているため、変更を行うときにアプリ全体を再読み込みする必要はなく、変更されたファイルを更新するだけで済み、アプリの状態は失われません。

WSL を使用する一般的なシナリオ

開発者が WSL を使用する一般的な状況やシナリオには、次のようなものがあります。

  • Windows 環境と Linux 環境の両方でコーディングを学びたい初心者。
  • Linux と Windows のツールにアクセスしたいプロの開発者。
  • コードの更新をクラウドにデプロイする前にローカル コンピューター上で更新をテストし、継続的インテグレーションと継続的デリバリー (CI/CD) ワークフローを運用化する必要がある組織。
  • コンテナーの作成に Docker、バージョン管理に Git、機械学習に GPU アクセラレーション、各種データベース (MySQL、PostgreSQL、MongoDB、Redis、SQLite など) を使用する、または Linux GUI アプリと Windows の両方に同時にアクセスする必要があるユーザー。
  • 従業員が Windows と Linux の両方に安全にアクセスできるように、すべてのコンピューターに配布するためのカスタマイズされた WSL イメージを作成する必要がある会社。

Diagram of a CICD workflow using WSL, GitHub, and a Linux VM.

WSL には、次のような注意すべき制限事項もいくつかあります。

  • WSL は開発用に設計されており、運用シナリオでの使用が困難になるかもしれないいくつかの機能が含まれています。

  • WSL では、リソースを自動的に開始、停止、管理する軽量ユーティリティ VM が使用されます。 これを Web サーバーとして使用しようとしている場合、VM は、アクティブなユーザーがいないことを検出するため、シャットダウンしてリソースをクリーンアップするおそれがあります。 運用 Web サーバーの実行などの運用シナリオでは、WSL を使用しない Linux ディストリビューションを使用する必要があります。

  • WSL は、Windows ファイルと Windows パスへのファイル アクセスを自動的に提供します。 このアクセスは既定でパスに追加されるため、従来の Linux 環境と比べると、特定の Linux アプリケーションで予期しない動作が発生するおそれがあります。

これらの制限事項について詳しくは、WSL ドキュメントの FAQ を参照してください。

WSL の紹介のまとめとして、いくつかの基本的な WSL および Linux コマンドを実際に使用してみましょう。