Windows 10の次期機能アップデート「19H1」に搭載予定の機能を紹介する。新機能として、安全にアプリの実行テストなどが行える「Windows Sandbox」が実装されるなど、19H1ではさまざまな機能拡張が予定されている。
Windows 10は、基本的に4月と10月の年2回、「機能アップデート」を行う。ただし、この機能アップデートに関しては、開発段階からWindows Insider Programのプレビュー版の配布があり、事前に評価を行うことが可能だ。
アップデートの配布は、1つ前のバージョンの配布が行われる前から開始される。例えば、現在の機能アップデートは、2018年10月に配布開始(その後一回停止)されたWindows 10 October 2018 Update( Ver.1809 Build 17763。Redstone 5というコード名を持ちRS5と表記される)で、次は2019年3月の「19H1」という機能アップデートとなる。19H1は、2019年前半(2019 1st Half)の略と思われる。
この19H1のプレビュー版の配布は、2018年7月から開始されている。この時点で、RS5もプレビュー段階だった。つまり、Windows 10のプレビュー版の配布は、次の機能アップデートとさらにその次の機能アップデートのものが並行して行われている。
Microsoftは、この2つ先の機能アップデートのプレビュー版を「Skip Ahead」と呼ぶ。Windows Insider Previewには、次の機能アップデートのためのFast/Slow/Releaseの3つのRing(リング)があり、それぞれ配布時期と配布ビルドに違いがある。Fast/Slow/Releaseの順に安定してくる。そして、これらとは別に2つ先の機能アップデートとなるプレビュー版を配布する「Skip Ahead」があるわけだ。
Skip Aheadの配布開始当初は、その時点のFast Ringで配布されている機能アップデートと大きな機能差はない。また、公開が近づくとSkip Ahead版のリリースサイクルはゆっくりになって、前のバージョンの機能アップデートが開始された後、Fast Ringに移行して本格的な開発時期を迎えることになる。
さて、次のWindows 10の機能アップデートとなる19H1だが、すでに幾つかの新機能が搭載されている。Windows OSの開発は米国で行われているため、毎年12月は中旬ぐらいのプレビュー版が年内最後のものとなる。
一般に米国では、クリスマス前後から1月1日にかけて休みとなり、11月下旬(第四木曜日)のサンクスギビングデー当たりからクリスマス商戦となり、休む人も増えてくる。このため、12月中旬ぐらいに出るプレビュー版を最後に年明けまでプレビューが出なくなる。なお原稿執筆時点でのプレビュー版は、Build 18305で米国時間の2018年12月19日に配布が開始された。
ここでは、搭載予定の新機能から、次のWindows 10がどうなるかを見ていくことにしよう。大きな機能や変更点としては、「Windows Sandbox」「サーチ関連」「ログオン関係」「Windows Update」「ナレーター」などがある。また、これ以外にも細かな変更点として、「フォント/言語/入力関連機能の変更」「コンソール(コマンドプロンプトウィンドウなどで利用するウィンドウ)の改良」「システム関連の変更」などもある。
また、機能アップデートでは、これ以外に毎回改良が行われるものとして「設定アプリ」「標準搭載アプリ」「デザイン/GUI関連の変更」がある。
なお、これらは現時点のプレビュー版に搭載されている機能であり、必ずしも最終的な機能アップデートに搭載されるとは限らない。場合によっては、プレビューの途中で機能追加や改良が取り下げられることもある。
実際、RS5のプレビュー版では、「Sets(セット)」と呼ばれるタブ形式で複数のアプリケーションウィンドウをまとめる機能があったが、途中で機能が取り下げられOctober 2018 Updateには入らなかった。
以下、現時点で19H1のプレビュー版に実装されている主な機能変更点を紹介しよう。
2018年内最後と思われるWindows Insider Preview Build 18305に搭載されたのが、アプリケーションの検証環境である「Windows Sandbox」だ。
Sandboxは、CPUの仮想マシン支援機能(Intel VT/AMD AMD-V)を使って作ったWindows環境である。実行しているWindows 10とは完全に分離されていて、実行終了後には、Sandbox内で行ったファイルやシステムの変更が一切残らず、また実行したWindows 10側にも何の影響を及ぼさないようになっている。Sandboxの中では、完全な初期状態のWindows OSが動作し、インストールされるアプリケーションからは、通常のWindows OSとは区別ができない。
最近では、セキュリティ的に問題のあるアプリケーションもあれば、過去に作られたために、最近のWindows 10で実行すると、システムにダメージを与えたり、調子を悪くしてしまったりするようなものものある。しかし、Sandboxを使えば、どのようなアプリケーションでも、独立した環境の中でインストール、動作させることが可能で、実行している親システムはその影響を受けることはない。
Sandbox内の環境は、これを実行しているWindows 10(ホストWindowsと呼ぶ)と同じバージョンの初期状態のWindows 10をSandbox内部で動作させて実現している(これをゲストWindowsと呼ぶことにする)。初期状態とは、クリーンインストール直後と同じで、ユーザーがまったくアプリをインストールしておらず、設定も変更していない状態である。
Sandboxは、ハイパーバイザー「Hyper-V」を使った仮想マシン環境とも違う。仮想マシン環境では、ハードウェアを仮想化するため、Linuxなどの他のOSを動作させることもできるが、SandboxではホストWindowsと同じバージョンのWindowsしか実行できない。しかも、任意のバージョンのWindowsではなく、ホストWindowsと同じバージョンだけだ。これは、Windows環境を作る場合に、ホストWindows側の実行ファイルなどをそのまま利用しているからだ。
また、ゲストWindowsの実行モジュールは、ファイルからメモリにロードされるのではなく、すでに動作しているホストWindowsのメモリイメージをそのまま利用する。「ダイレクトマップ」という手法により、SandboxのゲストWindowsが占有する仮想メモリ空間は、ホストWindowsか使っている実行コードのメモリイメージをそのまま利用する。
このため、Sandboxは、ホストWindowsの中でさらにゲストWindowsを動作させるにもかかわらず、4GB程度のメモリしかないシステムでも利用可能とされている(ただし推奨メモリサイズは8GB以上)。
Sandboxは、一般的にいうコンテナ技術の一種だが、単にアプリケーションなどのテスト環境として利用し、アプリケーションをインストールした環境をコンテナファイルなどとして保存することもできない。また、起動に使われるベースイメージもホストWindowsをベースにした固定のものとなり、あらかじめ環境を作っておくこともできない。
Sandboxは、実行後のファイルシステムなどの状態を仮想ディスクファイルに保存しないなど、簡易化することで、システム負荷を最小にしている。開発段階では 「DisposableVM(廃棄可能な仮想マシン)」などとも呼ばれていたようだ。
技術的には、Microsoft Edgeと組み合わせて使うWindows Defender Application Guard(WDAG、Windows 10 Pro/Enterpriseエディションでのみ利用可能)に似ており、ダイレクトマップなど類似技術を使っている。おそらく、WDAGをベースに開発が行われたのだと推測される。
WSLの登場により、コンソール機能も改良が続く。19H1では、[プロパティ]ダイアログに[ターミナル]タブが追加され、端末として動作する場合の設定を行えるようになった。大きな改良点としては、カラーパレットに依存しない文字色、背景色がある。
WSLの登場により、コンソールをVT互換のエスケープシーケンスで制御するようになった。しかし、Windows 10のコンソールアプリは、コンソールAPIを使って文字色や背景色を制御する。このとき、カラーパレットを使い、16個の色コードのそれぞれに24bitのカラーを割り当てる。APIからは文字ごとに文字色、背景色を色コードで指定できるので、デフォルトの文字色、背景色は存在せず、カラーパレットも自由に設定できる。
これに対して、エスケープシーケンスには、デフォルトの文字色、背景色がある。このため、WSL上で動作するLinuxアプリケーションは、デフォルトの文字色、背景色があることを前提にして動作する。具体的には、デフォルトの文字色、背景色に戻すためのエスケープシーケンスがある。
しかし、コンソールにはデフォルト文字色、背景色がなく、カラーパレットにより、文字、背景の色を指定する16色のどれもが任意のRGB値を持つ可能性があり、必ずしもユーザーに見やすい色になるとは限らない。
このため、19H1では、[ターミナル]タブで、デフォルトの文字色、背景色をカラーパレットとは別に指定できるようにした。これにより、エクスケープシーケンスで文字色や背景色の既定値が指定した場合の表示色(RGB値)をユーザーが見やすくなるように固定させることが可能になった。Microsoftはこの機能を「前景分離」「背景分離」と呼んでいる。この他、カーソルのサイズやカラーなども設定が可能になっている。
また、従来のコンソールでは、プログラムからの出力は、テキストバッファー(コンソールに出力された文字を記憶しておく領域)の末尾に追加され、コンソールウィンドウは、このテキストバッファーの一部を表示する「のぞき窓」になっていた。テキストバッファーに文字が追加されると、コンソールウィンドウは、必ず、テキストバッファーの末尾を表示するようになっていた。
しかし、UNIX系の端末では、コンソールへの出力があっても、表示位置を動かさないのが期待される動作だ。これにより、テキストの出力が続いていても、コンソール内を自由にスクロールさせて任意の場所を表示させたままにしておくことができる。19H1の[ターミナル]タブには、「前方スクロールを無効にする」という設定が追加され、プログラムからのテキスト出力時にウィンドウをスクロールさせるかどうかを指定できるようになった。
Copyright© Digital Advantage Corp. All Rights Reserved.