ニュース

UWPアプリの洗練されたUIをWin32アプリでも ~Microsoft、「WinUI 3 Preview 1」を発表

二分されたWindows開発の世界を再編・融合させる「Project Reunion」の第一歩

Microsoft、「WinUI 3 Preview 1」を発表

 米Microsoftは5月19日(現地時間、以下同)、開発者向けオンラインカンファレンス“Build 2020”で「WinUI 3 Preview 1」を発表した。UWPとデスクトップアプリの両方で使用できる、初めての「WinUI」だ。

「WinUI 2」から「WinUI 3」へ

 「Windows UI Library(WinUI)」は、モダンなWindowsアプリ(UWP/XAML)を構築するためのコントロールとスタイルを含んだユーザーインターフェイスレイヤー。最新バージョンの「Windows 10」でしか利用できないコントロールを以前のバージョンの「Windows 10」でも利用できるよう後方互換性を提供するほか、XAMLに低レベルAPIへのアクセスを提供する「XamlDirect」でミドルウェア開発者のライブラリ開発を支援する。最新版は5月8日リリースの「WinUI 2.4」。

 「WinUI 2」までの「WinUI」はWindows 10のバージョンにとらわれないUWP/XAMLアプリの開発を目指しており、Windows 10とそのUWP SDKと依存していた。また、モダンなXAMLコントロールを「XAML Islands」と呼ばれる仕組みでWin32アプリに埋め込むことはできたものの、あくまでも基本はUWP/XAMLアプリのためのレイヤーに過ぎない。

モダンなWindowsアプリ(UWP/XAML)を構築するためのコントロールとスタイルを含んだユーザーインターフェイスレイヤー「WinUI 2」

 しかし、次期バージョンとなる「WinUI 3」はXAML、構成、そして入力関係のAPIがOS/UWP SDKから完全に切り離され、Win32アプリのUIレイヤーとしても利用できるようになる。レガシーなUIフレームワーク(Windows Forms/WPFなど)は依然サポートされるものの、これからのアプリは「WinUI」がベースとなっていくだろう。

##本文開始

XAML、構成、そして入力関係のAPIをOSから切り離し、Win32に解放する「WinUI 3」

 今後、すべての新しいXAML機能はOSの一部としてではなく、「WinUI」の一部として出荷される。OSの一部として出荷される既存のUWP/XAML APIのメンテナンスは継続されるが、新機能が追加されることはない。XAMLが切り離された残りのUWPは、アプリケーションとセキュリティモデル、メディアパイプライン、Windows 10/Xboxシェルの統合、幅広いデバイスサポート(HoloLens、Surface Hub、IoTデバイスなど)といった役割を果たすプラットフォームとして、引き続き開発が行われる(Windows Runtime:WinRT)。

二分されたWindows開発の世界を再編・融合させる「Project Reunion」

 Windows開発の世界はWindows 8のリリース以降、レガシーなWin32とモダンなUWP/XAMLに二分されている。UWP/XAMLアプリは美しいユーザーインターフェイスと現代的なセキュリティモデルを備えていたが、自由度に勝るWin32が好まれることも少なくなく、移行はなかなか進んでいない。先進的な機能はUWP/XAML/WinRTから導入されることが多いにもかかわらず、レガシーなWin32からは活用が難しいという点も課題となっていた。

 そこで同社は「Project Reunion」という取り組みを発表し、その両者の再融合を図ろうとしている。

「Project Reunion」

 「WinUI 3」はその最初のピースで、UWP/XAMLからUIレイヤーであるXAMLを切り離し、Win32アプリに解放する。逆にWin32からUWP(.NET)にもたらされるのが、「Chromium」ベースの新しい「Microsoft Edge」コントロール(WebView2)だ。この「WebView2」コントロールもOSとは切り離されており、特定のバージョンのWindowsに依存しない仕組みになっている。

 このように、OSに統合された古いAPIを切り離して新しいAPIに再編し、「NuGet」パッケージとして個別に導入できるようにするのが「Project Reunion」の意味の1つだ。これから開発される新規アプリは、「Project Reunion」を通じてWin32/UWP APIにアクセスすることになるだろう。C++、.NET(WPF/WinForms/UWP)、React Nativeのいずれの開発フレームワークからも統一的にアクセスできるほか、既存のアプリに最新の機能を導入したり、アップデートする際にも「Project Reunion」は役立つ。

 また、必要に応じてポリフィル(古いプラットフォームでも新しい機能を利用できるようにすること。「WinUI 2」の役割の一つだった)の作業も行われているので、サポートされているすべてのバージョンのWindowsで動作するアプリを開発するのも容易になる。

 これからの「Project Reunion」の課題は、パッケージ化されたアプリとパッケージ化されていないアプリ、IDアプリと非IDアプリのギャップ(参考記事)、リソース管理のギャップ(MUI/MRT)の解消、「AppContainer」アプリからのユーザーデータアクセスの改善などになるようだ。プレビュー版のリリースは2020年末で、それ以降は年に複数回のリリースを見込んでいるという。

「Project Reunion」のロードマップ