本連載では現在、bash関連のスキル向上に向けた解説を進めているのだが、前回は「WSL2で使われるLinuxカーネルがWindows Updateでアップデートできるようになる」というニュースがあったため、ちょっと小休止してそちらのニュースを取り上げた。今回からはまたbashの解説を……と思っていたのだが、今度は「WSL2でLinux GUIアプリケーションが動作するようになる」というニュースが飛び込んできた。その計画自体は、約1年前にMicrosoftが発表していたものだが、ついに実現されるというわけだ。これでWindowsにおけるLinuxは、新しいステージを迎えることになる。そこで今回もbashの解説は見送って、この新しい動きについて取り上げておきたい。

WSLでLinux GUIアプリケーションを実行する機能「WSLg」

Microsoftは2020年に「WSL2でLinux GUIアプリケーションを動作させる」という目標を発表した。WSLが動作している段階で、原理的にはすでにWSLでLinux GUIアプリケーションを動作させることは可能ではあった。Windows 10で何らかのXサーバを動作させておけば、WSL上のLinux GUIアプリケーションからWindowsで動作しているXサーバに接続すればよいだけだ。実際に、WSLでLinuxのGUIアプリケーションを実行するという試みは、実験的なものだがいくつか事例も報告されていた。

しかし、そのセットアップは容易なものではなく、さらに満足なグラフィックパフォーマンスが得られるかと言うと、そうでもなかった。できればWSL2がデフォルトでGUIアプリケーションを実行するための機能を提供してほしい、という状況だったのだ。

そしてMicrosoftは2021年4月21日(米国時間)、「The Initial Preview of GUI app support is now available for the Windows Subsystem for Linux | Windows Command Line」において、WSLでGUIアプリケーションを実行する機能のプレビュー版を公開した。この機能には「WSLg」というニックネームが付けられている。発表記事にはいくつかの動画が掲載されており、Windows 10でLinux GUIアプリケーションが動作している様子を確認できる。

Windows 10でLinux GUIアプリケーションが動作する様子 - WSLg - 資料: Microsoft提供

この機能はまだプレビュー版という段階だ。これからWindows 10 Insider Previewを使っている開発者やアドバンスドユーザーが試用し、フィードバックを受けたMicrosoftが修正や改善の取り組みを行う。リテール版のWindows 10にWSLgの機能がやってくるのは、早くても2021年秋のフィーチャーアップデート版となるWindows 10, version 21H2辺りからではないかと思う。

これはLinuxユーザーにとっても一つの大きな転機になる可能性がある。これまで、LinuxのGUIアプリケーションを使おうと思ったら、Linuxを直接PCにインストールして利用するか、仮想環境にLinuxをインストールして使う必要があった。しかし、WSLgでLinuxアプリケーションが動作するようになれば、わざわざ仮想環境をセットアップしたり、Linuxが動作するPCを用意したりする必要がなくなるのだ。Windows 10のPCで、Microsoft Store経由でUbuntuをインストールすればGUIアプリケーションも利用できるようになるのである(仕組み上、Ubuntu以外のLinuxディストリビューションも同じようにGUIアプリケーションが利用できるようになるものと見られる)。

ここまでLinuxのセットアップの敷居が下がることは歓迎すべきことだ。Windows 10におけるLinuxの使用がアプリケーションのインストールレベルまで簡単になる。Windowsユーザーという視点からすれば、これまではWindows 10で使うGUIアプリケーションはWindows 10のアプリケーションである必要があったわけだが、LinuxのGUIアプリケーションも候補に入ることになる。選択肢の幅は広がるし、Linux GUIアプリケーションを取り上げる記事が増える可能性もある。今後WindowsとLinuxを巡る状況はより面白いことになっていきそうだ。

WSLgの正体はMicrosoft独自のLinuxディストリビューション

ただ「使う」という観点から言えば、MicrosoftがどのようにしてLinuxのGUIアプリケーションをWindows 10で実行できるようにしたか知る必要はないのだが、知っておいて損をすることでもないのでちょっと取り上げておこう。

WSLgの技術的な詳細に関しては「WSLg Architecture | Windows Command Line」の説明がわかりやすい。どのようにして採用する機能を選択し、どのような構成で実現したのかが簡単に説明されている。

冒頭で触れたように、WSLが動作するようになった段階で、原理的にはLinux GUIアプリケーションは動作可能な状態にはなっていた。必要なのはLinuxのGUIアプリケーションが接続するXサーバがWindows 10で動作していることだけだった。すごく大雑把に説明すると、Microsoftはその部分を独自のLinuxディストリビューションというかたちで開発した。これがいわゆる「WSLg」ということになる。

LinuxやXサーバに詳しい方なら、次のアーキテクチャダイアグラムを見るのが一番わかりやすいだろう。「WSLg System Distro」と書いてある部分が、Microsoftが独自に開発したLinuxディストリビューションだ。このディストリビューションは今回、Xサーバとして機能するようになっており、これを通じてLinux GUIアプリケーションがWindows 10で動作できるようになった。

WSLgのアーキテクチャ - 資料: Microsoft提供

典型的なLinux GUIアプリケーションはXサーバに接続する。Microsoftはこの部分にXWaylandを採用した。XWaylandからはWestonへ処理が委ねられる。Westonは直接Waylandアプリからの接続も受け付ける。つまり、Microsoftの開発したこのディストリビューションはXアプリとWaylandアプリの双方に対応している。Linuxの典型的なGUIアプリケーションも、比較的新しいGUIアプリケーションも、双方ともに使えるということだ。

Westonはbackend-rdpを経由してWindows 10へRDPで接続を行う。これによってLinux GUIアプリケーションがWindows 10においてアプリケーションとして描画される。つまり、Linux GUIアプリケーションが単体ごとにWindows 10で動作するように見えるということだ。Windows 10で動作するネイティブアプリケーションのように、LinuxのGUIアプリケーションも動作する。仮想環境で動作するLinuxのように仮想環境ウインドウの中で動作するのではなく、ネイティブにWindows 10で動作する。これもMicrosoftが狙って実現したものとされている。

MicrosoftはもともとCBL-Marinerと呼ばれるLinuxディストリビューションを開発して社内で使っていた。今回MicrosoftはこのLinuxディストリビューションをベースに、XWaylandやWestonの部分を開発して、Xサーバ/Waylandとして動作するシステムを開発したわけだ。WSLで動作するLinux GUIアプリケーションが動作をはじめると、このCBL-MarinerベースのLinuxディストリビューションが自動的に起動し、Linux GUIアプリケーションが必要とする動作を行う。この結果、Linux GUIアプリケーションがWindows 10上のネイティブアプリケーションのように動作する。

サウンドとグラフィックアクセラレーションもサポート

上記アーキテクチャダイアグラムを見ると、WSLg System Distroの中にPulse Audio Serverがあることがわかると思う。Pulse Audio Serverはオーディオ出力やマイク入力を担当している。つまり、Linux GUIアプリケーションでオーディオの入出力が可能ということだ。Microsoftの公開した動画ではギターを演奏してオーディオ入力を行っている様子が披露されている。すでにまとにも動作するレベルに達しているようだ。

また、プレビュー版の段階ですでにGPUグラフィックアクセラレータを使ったサポート機能が使えることも説明されている。つまり、GPUの機能を使った高速レンダリングが可能ということだ。これは通常のGUIアプリケーションのレンダリングが軽量になるということのみならず、3D系のアプリケーションも実現的に利用できることを意味している。特定のアプリはLinuxに対してのみ提供されていることがあるのだが、こうしたアプリケーションもWindows 10で実用的な速度で利用できる可能性が高い。プレビューの段階ではサポートしているGPUに制限があるようだが、これは最終的に多くのGPUがサポート対象になるものと見られる。実際、Microsoftはプレビュー版を使うときにはGPUグラフィックアクセラレータの機能を使うようにセットアップすることを推奨している。できるだけハードウェアサポートを有効にした快適な状態で使ってほしいということだ。

サーバ用途からワークステーション用途というゲームチェンジ

これまでWindowsユーザーから見たLinuxは、あくまでもサーバという位置付けが多かったのではないだろうか。基本的にSSH経由でログインして使うもの、CUI環境で使うもの、といったニュアンスだ。もちろん、Linuxをワークステーションとして使っている方もいるが、ある程度アドバンスドユーザーであったり開発者であったり、それ相応にスキルのある方が使っている状態だったように思う。

しかし、Windows 10でここまで簡単にLinux GUIアプリケーションを使うことができるようになると、Linux GUIアプリケーションをWindows 10アプリケーションと位置付けて使うことができるようになる。Linuxをワークステーションとして活用するというスタイルだ。正確には、Windows 10とLinuxの混在をワークステーションとして使う、といった状態だろうか。今後使い方がシームレスになっていくと、WindowsネイティブなGUIアプリケーションなのか、WSL2で動作するLinuxのGUIアプリケーションなのか、その区別をつけることもナンセンスになっていくかもしれない。

今回の発表は今後の変化を予測させてくれるものだ。実際にはほとんど使われないことになるかもしれないし、一部のヘビーユーザーのみが使う機能になるかもしれないし、多くのユーザーが利用する便利な機能になるかもしれない。

こればっかりは実際にその時期が来てみないと何とも言えないのだが、現実的な可能性が開かれたことは注目に値する。今後WSLgを巡る状況がどうなっていくのか楽しみだ。

参考