Windowsの内部構造を詳細に解き明かす定番書籍「インサイドWindows」。1992年の初版発行以来(初版の訳書は1993年発行)、Windowsに接するすべてのITエンジニアのバイブルとして永く読み継がれてきました。最新刊の第7版は、2017年5月に上の原書が発行され(訳書の発行は2018年5月、山内和朗訳)、約4年の歳月を経て2021年10月に下の原書が発行されました(訳書の発行は2022年9月、山内訳)。
第7版完結を機に、「インサイドWindows」の読みどころを、上(第1章~第7章)と下(第8章~第12章)から抜粋してお届けします。今回は第8章(下)からの抜粋で、Windows 10のモダンアプリケーションモデル(AppModel)を構成するコンポーネントを紹介します。(日経BOOKSユニット第2編集部)
第8章 システムメカニズム
Windowsオペレーティングシステムは、エグゼクティブ、カーネル、デバイスドライバーなどのカーネルモードコンポーネントが使用するいくつかの基本メカニズムを提供します。この章では、それらのシステムメカニズムについて説明し、それらがどのように使用されるのかを説明します。
8.11 パッケージアプリ
Windows 8以降、携帯電話からXbox、本格的なパーソナルコンピューターまで、さまざまな種類のデバイスで動作するAPIが必要になりました。Windowsは確かに、異なるプラットフォームやCPUアーキテクチャ(ARMが良い例です)を使用する新しいデバイスの種類のためにも設計され始めていました。
プラットフォームに依存しない新しいアプリケーションアーキテクチャであるWindowsランタイム(「WinRT」とも呼ばれます)は、Windows 8で初めて導入されました。WinRTは、C++、JavaScript、およびマネージド言語(C#やVB.NETなど)での開発をサポートし、COMをベースに、x86、AMD64、およびARMプロセッサをネイティブにサポートしました。
「ユニバーサルWindowsプラットフォーム(UWP)」は、WinRTを進化させたものです。UWPは、WinRTのいくつかの制限を克服するように設計されており、WinRTの上に構築されています。UWPアプリは、マニフェストにどのOSバージョン向けに開発されたのかを示す必要がなくなり、代わりに1つまたは複数のデバイスファミリーをターゲットにします。
UWPは、すべてのデバイスファミリーに存在することが保証されているユニバーサルデバイスファミリーAPIと、デバイス固有の拡張APIを提供します。開発者は、マニフェストに拡張SDKを追加して、1つのデバイスの種類をターゲットにすることができます。
さらに、実行時にAPIの存在を条件付きでテストし、それに応じてアプリの動作を適応させることができます。このように、スマートフォンで実行されているUWPアプリは、そのスマートフォンがデスクトップコンピューターまたは適切なドッキングステーションに接続されているときに、PCで実行されている場合と同じように動作を開始できます。