はじめに
正式に WSL2 がリリースされたことで、Windows 10/11でもLinuxシステムの開発環境が容易に構築できるようになりました。WSLg により Linux の GUI アプリケーションを実行できるようになり、WSL バージョン 0.67.6以上では systemd もサポートされたことで Snapsパッケージ や Docker も利用できるようになりました。
WSLに関する情報は、正式リリース前からたくさんありますが、中には正式リリース後の情報として不適切なものも含まれています。そこで正式リリース後のWSL2に対応した開発環境の構築手順を整理しました。この手順では、次の開発環境の構築をゴールとします。
- Ubuntu 22.04 LTS
- 最低限のLinux開発ツール
- WSL ユーティリティ (WSL から Windows のデフォルトブラウザを起動したいため)
- システムロケール変更
- 日本語入力環境
- Homebrew
- GitHub環境
- Snaps
- Docker Community Edition
- Windows IDE環境
準備
Windows Update を実行して最新化した状態で、次のソフトウェアを Microsoft Store もしくは GitHub からダウンロードし、インストールします。
- Windows Terminal (https://github.com/microsoft/terminal)
※Windows 11の最新バージョン22H2から「Windows Termninal」が標準のターミナルとなりました。 - PowerShell (https://github.com/PowerShell/PowerShell)
- Windows Subsystem for Linux
- Ubuntu 22.04 TLS
※インストール時のユーザー名とパスワード設定の説明は割愛します
Windows Terminal は今どきの高性能なターミナルアプリケーションで、PowerShell や Ubuntu・SSHに対応しています。
WSL2の設定の確認と最新化
PowerShell を管理者モードで立ち上げます。
WSLバージョンの確認
wsl コマンドでバージョンを確認します。
PS > wsl --version WSL バージョン: 1.0.3.0 カーネル バージョン: 5.15.79.1 WSLg バージョン: 1.0.47 MSRDC バージョン: 1.2.3575 Direct3D バージョン: 1.606.4 DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windowsバージョン: 10.0.22621.1105
WSL バージョンが1未満の場合は、Windows Update や Microsot Store の更新がないか、確認してください。wsl コマンドでもアップデートできます。
wsl --update
ディストリビューションのWSLバージョンの確認
wsl コマンドでディストリビューションの WSL バージョンを確認します。
PS > wsl --status 既定のディストリビューション: Ubuntu-22.04 既定のバージョン: 2
既定のバージョンが「1」の場合、対象のディストリビューションのバージョンを「2」に変更します。
wsl --set-version Ubuntu-22.04 2
ディストリビューションの既定のバージョンとして設定する場合は、次のコマンドを実行します。
wsl --set-default-version 2
WSLの詳細設定
WSLでは、次の設定ファイルによって起動するたびに自動的に設定が適用されます。
- .wslconfig: WSL2 で実行されるすべてのインストール済みディストリビューションのグローバル設定
- wsl.conf: WSL1 または WSL2 で実行されているLinux ディストリビューションの設定
メモリとプロセッサ数の設定 (.wslconfig)
メモリとプロセッサ数を設定します。設定は任意なので必要ない方は、スキップしてください。
- メモリ: Windows の合計メモリの 50% または 8 GB のどちらか少ない方。20175 より前のビルドでは、Windows の合計メモリの 80%
- プロセッサ: Windows のプロセッサと同じ数
それぞれ設定したい場合は、$HOME/.wslconfig を作成し、次の設定を追加します。
[wsl2] memory=20GB processors=10
設定を有効にするには、WSL をシャットダウンして再起動します。シャットダウンするには、Windows Terminal (PowerShell) で次のコマンドを実行します。
wsl --shutdown
systemdを有効にする (wsl.conf)
Windows Terminalのタブで Ubuntu を起動します。systemd を有効にするには sudo vi /etc/wsl.conf でテキストエディターを実行し、次の設定を /etc/wsl.conf に追加します。
[boot] systemd=true
設定を有効にするには、WSL をシャットダウンして再起動します。シャットダウンするには、Windows Terminal (PowerShell) で次のコマンドを実行します。
wsl --shutdown
シャットダウン後、Windows Terminal から Ubuntu を起動して systemd のプロセスを確認します。
systemctl status hostname State: running Jobs: 0 queued Failed: 0 units Since: Sun 2023-01-01 00:00:00 JST; 0min ago CGroup: / ├─user.slice :
Ubuntu に開発環境をインストールする
Windows Terminal から Ubuntu を起動します。既に起動済みの場合は、それを利用します。
apt パッケージの更新
最初にインストール済みのパッケージをアップデートおよびアップグレードします。
sudo apt update && sudo apt upgrade -y
開発環境のインストール
最低限必要になる開発ツール一式をインストールします。
sudo apt install -y build-essential git curl
任意で利用するエディター等をインストールします。
sudo apt install -y emacs vim
wslu のインストール
wslu は便利なユーティリティコマンドが含まれているパッケージです。wslu に含まれる wslview を利用することで、WSL から Windows のデフォルトブラウザを起動することができます。
sudo apt install -y ubuntu-wsl
Linux では $BROWSER で定義されたブラウザを優先して起動するので wslview を指定します。また open のエイリアスを追加しておくと便利です。
export BROWSER=wslview alias open=$BROWSER
ロケール変更
日本語パッケージをインストールし、システムロケールを日本に変更します。
sudo apt install language-pack-ja -y sudo localectl set-locale LANG=ja_JP.UTF-8
日本語配列のキーボードを利用する場合は、sudo vi /etc/default/keyboard でテキストエディターを実行し、次の設定に変更します。
XKBMODEL="jp106" XKBLAYOUT="jp"
設定を有効にするには、WSL をシャットダウンして再起動します。シャットダウンするには、Windows Terminal (PowerShell) で次のコマンドを実行します。
wsl --shutdown
シャットダウン後、Windows Terminal から Ubuntu を起動して システムロケールを確認します。
$ localectl System Locale: LANG=ja_JP.UTF8 VC Keymap: n/a X11 Layout: jp X11 Model: jp106
日本語入力環境
Windows Terminal から Ubuntu を起動した場合、CUI のテキストエディター(emacs や vim など)やコマンドラインにWindows IMEを用いた日本語入力を行うことができます。WSLg 経由で起動した GUI アプリケーションに日本語入力を行う等の理由がなければ、インストールする必要はありませんのでスキップしてください。
fcitx-mozc と日本語入力の確認用に gedit をインストールします。
sudo apt install -y fcitx-mozc dbus-x11 gedit
~/.profile に次の設定を追加します。
export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx export DefaultIMModule=fcitx fcitx-autostart &> /dev/null
日本語入力の設定を変更する場合は、次のツールを起動して設定してください。
fcitx-config-gtk3 &

設定を有効にするには、WSL をシャットダウンして再起動します。シャットダウンするには、Windows Terminal (PowerShell) で次のコマンドを実行します。
wsl --shutdown
シャットダウン後、Windows Terminal から Ubuntu を起動して gedit で日本語入力を確認します。
gedit &

Homebrew
次のコマンドでHomebrewをインストールします。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
インストールを開始してしばらくすると sudo のパスワードを要求されるのでパスワードを入力してインストールを完了します。次のコマンドを実行し、 brew を有効にします。
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
インストールに問題がないか確認します。
brew doctor
「Your system is ready to brew.」と表示されれば問題ありません。問題がなければ、次のコマンドで .profile に brew を有効にするコマンドを追加します。
(echo; echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"') >> ~/.profile
GitHub環境
git コマンドの最低限の設定を行います。
git config --global user.name "GitHubのID" git config --global user.email "GitHubに登録したメールアドレス"
Github CLI をインストールします。
brew install gh
次のコマンドで GitHub の認証トークンを取得します。
gh auth login
いくつか選択が発生しますが、ここでは「GitHub.com」「HTTPS」「Login with a web browser」を選択します。Web ブラウザが起動しますので、コンソールに表示された one-time code を用いて認証を行います。認証後は、 GitHub の認証トーンがローカルファイルとして保存されます。
gh を git コマンドのクレデンシャルヘルパとして有効にするために、次のコマンドを実行します。
gh auth setup-git
gh コマンドの動作確認のため、リポジトリ一覧を取得します。
gh repo list
Snaps
snapd をインストールします。
sudo apt install -y snapd
次のコマンドで snapd のステータスを確認します。
systemctl status snapd ● snapd.service - Snap Daemon Loaded: loaded (/lib/systemd/system/snapd.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2023-02-23 15:49:39 JST; 1h 20min ago TriggeredBy: ● snapd.socket Main PID: 303 (snapd) Tasks: 16 (limit: 19056) Memory: 81.0M CGroup: /system.slice/snapd.service └─303 /usr/lib/snapd/snapd
snap コマンドの動作確認のため、パッケージを検索します。
sudo snap find hello-world
Docker Community Edition
必要なパッケージをインストールします。
sudo apt install -y \ apt-transport-https \ ca-certificates \ curl \ software-properties-common
Docker の公式 GPG 鍵を追加します。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
stable(安定板)リポジトリを追加します。ここでは amd64 を追加します。
sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
最新バージョンのDocker CEをインストールします。 Docker デーモンは自動的に起動します。
sudo apt update && sudo apt install -y docker-ce
docker コマンドの動作確認のため、hell-world イメージを実行します。
sudo docker run hello-world
sudo なしで docker コマンドを実行できるようにするために docker グループにログイン中のユーザーを追加します。
sudo usermod -aG docker $USER
設定を有効にするには、WSL をシャットダウンして再起動します。シャットダウンするには、Windows Terminal (PowerShell) で次のコマンドを実行します。
wsl --shutdown
シャットダウン後、Windows Terminal から Ubuntu を起動して sudo なしで docker コマンドの動作確認を行います。
docker run hello-world
Windows IDE環境
Visual Studio Code の環境を構築します。https://code.visualstudio.com/download からWindowsのインストーラをダウンロードし、インストールを開始します。
インストール中に [追加タスクの選択] が求められたときは、[PATH への追加] オプションを有効にします。 PATH を追加することで code コマンドを使用して WSL からプロジェクトを簡単に開くことができます。
設定を有効にするには、PCを再起動します。再起動後、Windows Terminal から Ubuntu を起動して code コマンドが有効になっていることを確認します。
code .

VSCode を起動できたら、Remote Development 拡張機能パック のインストールを推奨します。この拡張機能パックには、リモート操作関連の拡張機能と WSL 拡張機能が含まれています。コマンドパレット(ショートカットは CTRL+SHIFT+P)に WSL と入力すると、使用可能なオプションの一覧が表示されます。

最後に
WSL2が正式にリリースされたことで、Windows 環境でも Windows と Linux の良い所取りでかつオープンな開発環境を構築できるようになりました。職場の PC はセキュリティ対策などの都合で Windows を利用するケースが多いので、開発者にとって WSL2 は魅力的な環境といえるでしょう。
参考
- Windows Subsystem for Linux に関するドキュメント | Microsoft Learn
- WSL での詳細設定の構成
- https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-vscode
- https://github.com/wslutilities/wsl
- https://docs.brew.sh/Homebrew-on-Linux
- https://snapcraft.io/docs/installing-snap-on-ubuntu
- https://docs.docker.jp/engine/installation/linux/docker-ce/ubuntu.html
コメント