自分で分断しちゃったUWPとデスクトップアプリの両環境を
再度結合しようとしているマイクロソフト
マイクロソフトはオンラインカンファレンスのBuild Windowsで「Project REUNION」を発表した。かなりプログラミング寄りの話なので、今回は誤解を恐れず、大胆な省略と例えを使って解説する。
「Project REUNION」って、なんかすごいもののようだが、実際には大したことはない。というのも、そもそもマイクロソフトがWindows 8でデスクトップ環境とモダン環境を“分断”しなければ、REUNIONは必要なかったからだ。つまり、自分で2つに分けちゃっておきながら、今になって再結合って言い出しているわけで、例えて言えば、「花瓶割っちゃったので接着剤で付けました」的な話である。
マイクロソフトがUWPからデスクトップアプリ(Win32アプリ)に回帰しようとしているという話は、本連載にも随分前に書いている(「UWPからデスクトップアプリに原点回帰か」)。
この記事を書いたのは2018年の11月、XAML Islandsが発表された頃だ。今回のProject REUNIONの最初の動きは、これをベースに従来UWPでしか利用できなかったWinUI(現在のバージョンは2.0)を、次期バージョンとなるWinUI 3.0でWin32アプリケーションからも利用可能にするという話だ。

Project REUNIONは、現在のWindowsのアプリケーション開発の中では、黄色で示した場所にある。簡単に言えばProject REUNIONとは、Win32DesktopアプリとUWPの外観や機能を同じようにして、対等の立場とするものだ
WinUI 3.0以前は、無理をすればWinUI 2.0をWin32アプリでも利用できたが、WinUI 3.0では大きな制限なくWin32アプリ側から利用できるようだ。なぜこのタイミングなのかというと、1つには、WinUI 3.0がプレビューできる程度には完成したこと、EdgeのChromium化により、主力ブラウザーがWin32アプリケーションになったことで、WebViewコンポーネントがUWP/Win32の両方で使えるようになったからである。
WinUIもWin32アプリも同じWPFという技術の上にあるが、実際には、Win32側のUIコンポーネント(XAMLコントロールなどと呼ばれる)とWinUI側のUIコンポーネントは、似たような機能のものがあっても見た目などが大きく違っていた。
たとえば、Windows 10の設定アプリでよく見かける「トグルスイッチ」(ToggleSwitch)は、同じ機能の「トグルボタン」(ToggleButton)がWin32/WPF側にもある。しかし、スライドスイッチではなく、単にボタンの色が変わるだけのUI部品でしかない。

UWPとWPF(Win32 Desktop環境)には、似たような役割を持つToggleSwitchとToggleButtonというUIコンポーネントがあり、両方とも同じように使える(コードもほとんど同じ)のだが、見た目には雲泥の差がある
同じようなアプリをUWPとWin32で作れば、どう見ても後者のアプリが「みすぼらしい」ものになる。Win32アプリでもWinUIのコントロールが絶対に使えないわけではないし、自分で完全にカスタマイズして同じような外観にすることも不可能ではない。しかし、WinUIを使うのは結構面倒だし、他人の作ったものは評価しないと安心しては使えない。そもそもプログラマーとは基本“怠惰”なので、「UIパーツ」の見た目にそれほど手間をかけたくはないものだ。
Win32側では、見栄えを良くするには労力を掛ける必要があったのに対して、UWP側は優れた見た目のUIが簡単に作れる。これをUWPの「魅力」として強調することがマイクロソフトのUWP普及戦略の1つだったわけだ。
だが、よく考えてみると、どちらもマイクロソフトが作ったもので、使わせてくれたっていいじゃないか? と開発者は思っていた。またUWP自体に制限が多く、Win32アプリでは普通にできたいたことが大体できないか、細かく対象を指定して実行許可をユーザーに求める必要がある。このため、アプリの種類によってはWin32であることが必須という場合も少なくなかった。

この連載の記事
- 第381回 WindowsのPowerShellで画像ファイルのExif情報を扱う
- 第380回 Windowsにおける改行文字の扱い
- 第379回 Windows 11で利用頻度が高いプログラムを「簡単に起動」する方法
- 第378回 Windows 10で正式に導入され、11で改良が進んだ「仮想デスクトップ」
- 第377回 Windowsの「デスクトップ」や「ピクチャ」など、「既知のフォルダ(Known Folders)」を使う方法
- 第376回 COM(Component Object Model)は古い技術だが、いまだに現役 あらためて解説する
- 第375回 エクスプローラーのプレビューウィンドウについて解説する
- 第374回 Windows Insider ProgramにCanaryチャンネルが追加されたことで感じるWindows 12の気配
- 第373回 Windows Subsystem for Linuxでsystemdが動くようになったので試した
- 第372回 Windowsにおけるアプリ実行エイリアスとは?
- 第371回 Windowsで利用可能なホットキーを探す
- この連載の一覧へ