ニュース

Microsoft、「Windows App SDK 1.1」を公開 ~初期リリースに欠けた機能を追加、パフォーマンスも改善

 米Microsoftは6月3日(現地時間)、「Windows App SDK 1.1」をリリースした。2021年11月にリリースされた「Windows App SDK 1.0」をベースにいくつかの新機能が追加されたほか、安定性とパフォーマンスが向上している。

 「Windows App SDK」(旧称:Project Reunion)は、Windowsデスクトップアプリケーションを開発するためのユーザーインターフェイス開発プラットフォーム。「WinUI 3」や「WebView2」などを含み、開発プラットフォーム(C++/.NET、Win32、WinForms、WPF、UWP)を問わず、「Fluent Design」に基づいたモダンなデスクトップアプリのUIを設計できる。古いアプリのコア機能を残したまま、UIをモダナイズしたいといった用途にも最適だ。

 「Windows App SDK 1.1」では、「Windows App SDK 1.0」で課題となっていたポイントが数多く改善されている。

WinUI 3

 「WinUI 3」アプリでは、「マイカ」をはじめとするマテリアル効果がサポートされた。マイカ(Mica)は「雲母」を意味し、デスクトップ背景からサンプリングした色を元に視覚的な階層を作り出す。「アクリル」とは異なり不透明だが、パフォーマンスを損なうことなく、ユーザーテーマとの調和を図っているのが特徴だ。

「マイカ」マテリアル効果

 サンプルアプリ「WinUI 3 Gallery」も、「マイカ」などWindows 11のデザイン言語に準じたビジュアルリフレッシュが行われているという。

「WinUI 3 Gallery」アプリ

 ただし、現在は一部環境で起動しない不具合が確認されている。この問題はいずれ解消される見込みだ。

通知機能

 「MSIX」パッケージ、スパースパッケージ(マニフェストのみで、バイナリやコンテンツを外部に置く形式)および非パッケージアプリで、デスクトップ通知(トースト)とプッシュ通知が利用できるようになった。

 アプリが起動していなくても、ローカルや独自のクラウドサービスから通知を送信し、ユーザーがそれに反応することでアプリを活性化できる。

管理者権限

 「Windows App SDK 1.0」にはアプリを管理者権限で起動できないという制約があったが、これが削除された。ただし、ターゲットデバイスにWindows 10/11の最新アップデート(2022年5月更新)が適用されている必要がある。

C#のパフォーマンス改善

 「WinRT」相互運用レイヤーのアップデートにより、多くのシナリオでパフォーマンスが大幅に改善される。たとえば単純な「Hello World」アプリを「WinUI 3」で構築した場合、「WinAppSDK 1.0」リリースと比べ起動時間が最大で9%ほど改善されるという。

Windowing API

 「Windowing API」により、ウィンドウの相対的なZオーダーを制御できるようになった。特定のウィンドウの上や下にウィンドウを移動できるようになる。

 また、タイトルバーのカスタマイズ性が向上し、タッチフレンドリーな高さを確保したタイトルバーを簡単に作成できるようになった。指定したクライアントサイズに基づいてウィンドウサイズを調節する機能なども利用できる。

アプリのライフサイクルと再起動

 「Windows App SDK 1.1」ではアップデート、クラッシュ、ハングアップなどでアプリが終了した場合に、回復オプションを設定してアプリを再起動できるようになった。

Template Studio for WinUI

 「Visual Studio 2022」用の拡張機能「Template Studio for WinUI (C#)」はリリースされ、ウィザード形式でプロジェクトを作成できるようになった。デザインパターンやOS機能をチョイスしながら、アプリケーションの雛形を作成できる。生成されたプロジェクトはソースコードが読みやすく整形されており、コードの追加が必要な部分にはTODOコメントが追加されているので、「Windows App SDK」「WinUI」で初めてアプリを開発するユーザーも試す価値がある。

「Template Studio for WinUI (C#)」

自己完結型アプリケーション

 「Windows App SDK 1.1」では、アプリと依存関係(必要なランタイム・ライブラリ)をまとめて配布する「自己完結型」のデプロイがサポートされた。ファイルサイズが大きくなるほか、コードページが他のアプリが共有されないため読み込みが遅くなり、メモリ使用量が増えるという欠点はあるが、インストールのトラブルが少なく、コピーするだけでセットアップが完了する手軽さは魅力だ。比較的小規模なアプリに向いている。

 そのほかにも、「MSIX」でデプロイしないアプリで「WinAppSDK」機能を利用するのに必要な「Bootstrapper API」を改善。また、レジストリAPIを直接使用せずに、環境変数を追加・削除・変更する「EnvironmentManager」クラスが追加されているとのこと。