UWP環境とデスクトップ環境についておさらい
詳しい状況説明の前に、簡単にUWP環境とデスクトップ環境についておさらいしておこう。デスクトップ環境は、Windowsが以前から持つアプリケーションの「実行環境」だ。Win32APIや.NET Frameworkなどにより、ウィンドウ形式やコンソール形式のアプリケーションを作ることができる。
これに対してUWPは、Windows 8で搭載されたWinRT(Windows Run Time)APIセットを利用し、かつてメトロやモダン環境と呼ばれた「実行環境」でアプリを実行する。デスクトップ環境とはアプリケーションモデルが違い、実行形式、アプリ構造、ライフサイクルにも違いがある。
たとえば、UWPは最小化などで動作しない状態となった場合、Windowsがメモリから実行イメージを削除できるように作られている。再度フォアグラウンドになった場合には、保存していた実行状態を使って、元の状態に復帰する。このためバックグラウンド処理は、特別な方法で記述しなければならない。これに対してデスクトップアプリケーションは、休止状態でもメモリから勝手に削除されることはなく、特に記述しなくてもバックグラウンドで動作し続けることが可能だ。
UWPで使われるAPIセットであるWinRTは、複数のプラットフォーム(AndroidやiOS、Linux)での動作を想定して、特定のプラットフォームに依存しないよう、これらの最大公約数的なAPIを持つ。これに対してWin32APIは、Windowsの能力を最大限に利用するためのAPIセットになっている。
ただし、WinRTは、アプリケーションを簡単に開発できるように、「粒度」の大きなAPIを持つ。たとえば、「カメラで動画撮影」といった機能を簡単に実現できるAPIだ。これに対して、Win32APIは、さまざまなカメラアプリを作るために必要な「粒度」の小さなAPIを持つ。
WinRTは、セキュリティを重視していること、複数プラットフォームでの動作を想定していることから、Win32APIと比べると、制限があり、すべてのWin32APIが利用できるわけではない。しかし、高機能なAPIが使えることから、GUI部品もそれに対応して高機能なものが用意される。
これに対して、デスクトップアプリケーションは、当初から一部のWinRT APIを利用することができた。また、セキュリティへの懸念から、WinRTが実装されたWindows 8では、モダン環境アプリとデスクトップアプリの間のコミュニケーションは制限されていた。UWPでは、簡易なアプリを作るのは簡単だが、デスクトップアプリで可能だったことがすべてできるわけではない。

この連載の記事
-
第470回
PC
Windows用のパッケージマネージャー「Winget」 プレビュー版で機能が充実してきた -
第469回
PC
Windows Updateの27年 悪役だった頃から改良が進んで、徐々に目立たない存在に -
第468回
PC
2025年のWindowsどうなる!? Windows Insider Programの状況をあらためて見る -
第467回
PC
Copilot+ PCのNPUでカメラを処理する「Windows Studio Effects」 その内容や効果は? -
第466回
PC
PowerToysの最近の新機能には、複数アプリを指定位置に起動する「ワークスペース」や新規作成のカスタマイズがある -
第465回
PC
WindowsのPowerShellからBluetoothデバイスを調べる -
第464回
PC
Windows 10のサポート切れまで1年を切った さてWindows 10マシンをどうする? -
第463回
PC
Windows Terminal Preview版でSixelグラフィックスを実際に表示させてみる -
第462回
PC
Windows Terminal Preview版でSixelグラフィックスを扱う -
第461回
PC
Copilot+ PCを買ってみたが、「今焦って買う必要はない」のかもしれない -
第460回
PC
Windowsでsftpを使う - この連載の一覧へ