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では、簡易なアプリを作るのは簡単だが、デスクトップアプリで可能だったことがすべてできるわけではない。
この連載の記事
-
第424回
PC
Windowsの基本機能であるクリップボードについてあらためて整理 -
第423回
PC
PowerShellの今を見る 2つあるPowerShellはどっち使えばいい? -
第422回
PC
Windows 11の目玉機能が早くも終了、Windows Subsystem for Android(WSA)を振り返る -
第421回
PC
進化しているPowerToys LANで接続したマシンでキーボード/マウス共有機能などが追加 -
第420回
PC
Windowsプレビュー版に搭載されたsudoを試す -
第419回
PC
Windows Insider Previewが変わって、今秋登場のWindows 11 Ver.24H2の新機能が見えてきた? -
第418回
PC
Windows 11のスマートフォン連携は新機能が追加されるなど、いまだ進化している -
第417回
PC
Windows 11のスマートフォン連携機能をあらためて使ってみる -
第416回
PC
Windowsセキュリティ(Defender)をコマンドラインで扱う -
第415回
PC
ConvertFrom-Stringを使って、テキストデータをテンプレートで読み込む -
第414回
スマホ
Windows Subsytem for Linux(WSL)が昨年9月のアップデートでファイアウォール対応になった - この連載の一覧へ