「フォト」アプリが爆速に ~MicrosoftがUWP→Windows App SDK移行の苦労を解説

AI要約

OS標準の「フォト」アプリは現在「Windows App SDK」への移行が進行中で、多くの障害があったことが明らかになった。

移行に当たっては、UWPからWindows App SDKへの置き換えでパフォーマンス向上やアーキテクチャーの簡素化が図られ、WebView2の利用やメンテナンスの容易さがメリットとして挙げられている。

一方、技術的な課題や違いがあり一筋縄ではいかないものの、改善された安定性とパフォーマンスは移行価値のある挑戦である。

「フォト」アプリが爆速に ~MicrosoftがUWP→Windows App SDK移行の苦労を解説

 OS標準の「フォト」アプリは現在「Windows App SDK」への移行が進行中だが、「UWP」から置き換えるにあたっては多くの障害があったようだ。米Microsoftは6月3日(現地時間)、公式ブログ「Windows Developer Blog」でその詳細を紹介している。

 UWPアプリのプロセスはセキュリティを高めるため「AppContainer」と呼ばれる低い権限(低整合性レベル)で実行される。そのため、一部のAPIが制限されたり、追加でユーザーによる権限の許可が必要だったりする(「Windows App SDK」で開発したWin32アプリは中程度の整合性レベルで実行されるため、そうした制限が少ない)。

 また、クロスプラットフォームの互換性や権限チェックなどの理由により、UWPのAPIはWin32 APIよりも桁違いに遅くなることがある。「フォト」アプリの場合、大量の写真コレクションを扱う際のパフォーマンスに大きな影響が出る(Win32なら数秒で終わる処理が、UWPでは数分かかるなど)。

 そうした制限を回避するため、UWP版「フォト」アプリは中程度の整合性レベルをもつバックグラウンドサービス「PhotosService.exe」とプロセス間通信を行うという、マルチプロセスの複雑なアーキテクチャーになっており、それが1つにパッケージングされていた。

 「フォト」アプリを「Windows App SDK」へ移行するメリットは、こうしたアーキテクチャーを簡素化できることだ。新バージョンもマルチプロセスアーキテクチャーなのは変わらないが、それはユーザーインターフェイスとビジネスロジック、通知のためのバックグラウンドプロセスをわけてアプリ全体の応答性を高めるためだ。プロセス間通信といった余計な処理はなくなっているため、シンプルで高いパフォーマンスが得られるようになった。

 加えて、「WebView2」が利用できることもメリットと言える。つまり、「Chromium」ベースで高速な「Microsoft Edge」をコンポーネントとして「フォト」アプリに組み込めるようになる。「フォト」アプリの場合、「OneDrive」でも用いられているクロスプラットフォームの画像エディターなどでWeb技術が活用されているが、そうした部分でパフォーマンスの向上が期待できる。「Edge」の更新で最新のセキュリティパッチが適用される点も魅力だ。

 また、メンテナンスとサポートの面でも「Windows App SDK」は「UWP」に比べいくつかのメリットがある。UWPのAPIはOSの一部として提供されているため、新しいAPIを利用するにはOSのアップグレードが不可欠だ。アプリ開発者は新機能がOSでサポートされていないことを考慮し、ポリフィル(古い環境で新機能を使えるようにするコード)を導入したり、機能の実装そのものを諦める決断をする必要がある。

 しかし、「Windows App SDK」はWindowsAppRuntimeパッケージとして提供されているため、それを更新するだけで済む。つまり、OSをアップグレードしなくても、最新の機能がポリフィルなしに利用できる。バージョンの異なるOSでアプリをテストしたりする必要もなくなる。

 「UWP」から「Windows App SDK」への移行に際しては、スレッドモデルの違い(ASTAとSTA)、デバイスの接続で自動再生を行うことができないといった技術的な課題もあり、一筋縄ではいかない。とはいえ、安定性とパフォーマンスの改善というメリットは大きく、挑戦しがいのあることだという。

 新しい「フォト」アプリは「Windows Insider Preview」ビルドへのロールアウトが既に完了している。一般の環境への展開も始まっており、バージョンが「2024.11050.3002.0」移行であれば「Windows App SDK」バージョンだ。