2018年4月のWindows 10アップデートでWSL (Windows Subsystem for Linux)関連にいくつもの新機能が導入された。Windows 10に初めてWSLが導入されたときも驚いたが、今回のアップデートで導入された新機能はどれもWSLの使い勝手を向上させる、注目に値するものばかりだ。そのなかから特に役立つものをピックアップして紹介していこう。

バックグラウンドタスク機能

まず注目すべきはバックグランドタスク機能だ。Windows 10春のアップデート前は、WSLコンソールが起動されている状態でのみ、Linuxバイナリは実行することができた。例えば、「Nginx」のようなサーバアプリケーションをWSLでバックグラウンドプロセスとして実行した場合、WSLコンソールが起動している間はサービスを利用することができたが、WSLコンソールが終了するとプロセスも終了し、バックグラウンドタスクとしては利用できなかった。

だが、Windows 10春のアップデート以降は、バックグラウンドプロセスはWSLコンソールを終了しても動作し続ける。これは大きな違いだ。端的に言うと、Windows 10をLinuxサーバとして運用できるようになったと考えられる。WebアプリケーションやWebサイトの開発にも、またはサーバとしても運用ができるようになったわけだ。開発者にとっても運用者にとっても興味深い状況になったと言えるだろう。

バックグラウンド動作を確かめる

早速動作を確認してみよう。Webサーバを動作させていない状態でローカルの80番ポートにアクセスすれば、当然、次のように何も表示されない。

Webサーバを動作させていない状態で「http://127.0.0.1/」へアクセスした場合

この状態で、次のようにWSLにWebサーバ(Nginx)をインストールし動作させてみる。

WSLのUbuntuにNginxをインストールして動作開始

この状態で「http://127.0.0.1/」にアクセスすると、Nginxがスタートページを返してくる。ここまでは春のアップデート前も同じだ。

Microsoft EdgeからNginxの動作を確認

この状態でWSLコンソールを終了する。春のアップデート前であれば、この段階でNginxも同時に終了していたのだが、アップデート以降は次のようにNginxにアクセスできる状態が継続する。

WSLコンソール終了後もWSLのNginxは動作を継続しており、アクセスできる

タスクマネージャで動作しているプロセスを確認すると、次のように「nginx」という名前のプロセスが動作していることを確認できる。

タスクマネージャで調べると「nginx」というプロセスが動作していることが確認できる

タスクマネージャでnginxの動作を確認

詳細からWSLのnginxバイナリが動作しているものであることがわかる

ここでWSLコンソールを新たに起動してプロセスを調べてみると、次のようにnginxプロセスが動作していることを確認できる。

WSLコンソールを起動するとnginxプロセスが動作していることが確認できる

つまり、WSLで起動したNginxはWSLコンソールが存在するかどうかにかかわらず、Linuxサーバのようにバックグラウンドで動作し続けていたことになる。

* * *

バックグラウンドタスクがWSLコンソールの枠を超えて動作するようになったことで、WSLを利用できるシーンが大きく広がった。cronも利用できるようになったわけで、やりたいことがいろいろと浮かんでくる。Windows 10の春のアップデートでLinuxのインストールは以前よりも簡単になっているし、いよいよ「Linuxを使いたいならWindows 10」といった状況が実現しつつあるようだ。