ニュース

「フォト」アプリが爆速に ~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つにパッケージングされていた。

UWP版「フォト」アプリのアーキテクチャー

 「フォト」アプリを「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」バージョンだ。