既報のとおりMicrosoftの開発者向け年次イベントであるBuild 2019では、Windows 10に関する興味深い発表が行われた。その1つが「Windows Terminal」だ。
Windows 10は、これまでもコマンドプロンプトやWindows PowerShellで使用するWindowsコンソールの改良に取り組んできたが、下位互換性の観点からMicrosoftは「『世界を壊さずに』コンソールUIに有意義な改善を導入できない」と公式ブログで述べている。
Windows Terminalでは、使用するシェルやコンソールアプリケーションに応じて、配色やフォントスタイルなどを管理するプロフィール機能とマルチタブ機能、DirectWriteを用いたテキストレンダリングエンジンは「以前のGDIエンジンよりも素早くテキストをレンダリングできる」(Microsoft Windows Console, Command-Line, & WSL Program Manager, Kayla Cinnamon氏)という。
ソースコードはGitHubで公開しているため、筆者もビルド&デプロイに挑戦してみたが、コンソールウィンドウホストであるconhost.exeではなく、OpenConsole.exeの起動までは確認できたものの、マルチタブなど新機能は試すことはできなかった。
興味深いのはWindows Terminalのみならず、コマンドライン基盤となるWindowsコンソールもOSS(オープンソースソフトウェア)化している点だ。先日は「電卓」をOSSとして公開したばかりだが、着々とWindows 10のOSS化が進んでいる。
もちろん2020年や2021年といった短い期間にWindows 10全体がOSSになるわけではないが、市場動向や開発者コミュニティーの反応を見て次々と布石を打っているように見えるのだ。
その一環となるのがWSL(Windows Subsystem for Linux)2の存在だ。WSLユーザーならご承知のとおり、WSLと実機を比べるとI/O周りのパフォーマンスに難がある。そこでMicrosoftの開発者はLinuxカーネルを組み込むWSL 2に至った。
公式ブログによれば、Windowsコンポーネントの1つとしてLinuxカーネルを組み込むことで、最大20倍の速度を実現する。
さらにBuild 2019のセッション「The new Windows subsystem for Linux architecture: a deep dive」を視聴すると、git cloneは2.5倍、npm installは4.7倍、cmakeは3.1倍高速化したという(Surface Laptop使用時)。
もちろんLinuxカーネルをそのまま組み込むのではなく、Windows 10との親和性を高めるためのパッチを当てることになるが、その部分もOSSとして公開される。
別の公式ブログによれば、WSL 2は仮想化技術を用いた軽量の仮想マシン内でLinuxカーネルを実行する仕組みだが、利用者側で仮想マシンの構成や管理は不要。WSL 2が使用する仮想マシンは1秒未満で起動し、メモリーフットプリントも小さく、必要(=WSL 2実行)時にしか動作しない。
WSL 2のメリットはパフォーマンスだけではない。従来のWSLではLinuxのシステムコールを可能にするため、変換レイヤーを通じてWindows NTカーネルに橋渡ししていた。
WSL 2は本物のLinuxカーネルを用いるので互換性問題は多くないだろう。Microsoftは「フルシステムコールの互換性によって、Linux版Dockerや(独自ファイルシステムを作成できる)FUSEが動作可能になる」(Microsoft Windows Developer Platform Program Manager, Craig Loewen氏)と述べている。
蛇足だが公式ブログのコメント欄を見ると、かのRichard M Stallman氏がかみついている。コメントを投稿したのが本物のStallman氏なのか確認する術を持っていないが、筆者は冗長な文章がメーリングリストなどで見かける文面に類似しているように感じた。真偽は読者諸氏のご判断にお任せするが、WSL 2は本年6月からWindows Insider Preview、2019年末に一般向けプレビューの提供を予定している。
阿久津良和(Cactus)