Windows11時代のデスクトップアプリ開発と「Windowsアプリ」
マイクロソフトは、今となっては黒歴史のWindows8ともに、UWPという中途半端な形態のアプリをゴリ押しした結果、Windowにおけるアプリ開発に大混乱と分断をもたらしました。Windows Phoneも無くなった今、UWPの存在意義も無くなり、結果としてWindowsから開発者離れが起きている、なんて話もありました。
そこでマイクロソフトは、2020年になって.NET5をアナウンスし、C++やWPF、Xamarinなどモバイル開発を含めたWindowsのアプリプラットフォームの統一を図り、.NET6でネイティブのデスクトップアプリ開発へ回帰する、という方向性を打ち出します。
Project Reunionというコードネームだったその成果は、Windows App SDKとなり、UWPだけに提供してきた新しいUIレイヤーを分離して、WinUI 3として新たにC++などのWinAPIネイティブやC#などの.NETプラットフォームでも利用できるようにし、WindowsのUIとして全体的に整合性が取れるようする、というものでした。これで既存のソフトウェア資産も、徐々にモダナイズできるようになります。
そんな中、先日のWindows11の発表もあり、色々とドキュメントも更新されていて、チラホラ眺めていたら、Windowsで開発出来るデスクトップのアプリのタイプをまとめたページがありました。(デスクトップアプリに限定した話しです。Webも含めると、WebAssemlyのBlazarとか色々あります)
- WinUI 3
New!UWPみたいな制限は無く、C++/Win32やC#/.NETで普通のアプリとして新しいUIが使える。 - ネイティブWin32
Win32/64のAPIを直叩きするアプリ。C++とかDelphi/ObjectPascalとかこれですね。高速、かつ自由。デバイスに近い開発も出来る。 - WPF
もっともUI表現の自由度が高く、モダンなUIとMVVMの先駆け。.NET上で動く。 - Winodws Forms
昔でいうVBみたいな決まった画面で地味な業務アプリとか向け。敷居は低い。.NET上で動く。 - UWP
無用の長物
となるそうです。今回新しく加わった「WinUI 3アプリ」、ネーミングがなんだかなぁ。分類もちょっと混乱の元で、ネイティブWin32も(WTFやFormsみたいな).NETアプリもWinUI 3を使えるようになる訳だからちょっとレイヤーの違う話しのような・・・
因みに、自分が今まで開発してきた(そして今でもメンテしていて生き残っている)アプリは、ほとんどがWPFです。今の所、WinUI 3 で作り直す必要性は感じません。というのも、WPFの自由過ぎるXAMLでスタイルをカスタマイズしまくって、独自のUIスタイルを構築してしまったのでUIの刷新はもはや不要w
一部、ネイティブのWin32アプリもメンテしているのがありますが、あまりUIにこだわらないシンプルなアプリなので、これもそのままで良いかな。
もしこれから新規にアプリを作るとしたら、WinUI 3アプリを試してみたいですね。モバイルやクロスプラットフォーム向けならXmarin後継の.NET MAUIです。
ただ、まだどちらもこなれていなくて、WinUI 3もMAUIも、実戦投入できるほど安定・充実し、色々なノウハウが広まるまで、今後数年はかかるでしょう。
追記: