torum

主に開発中のアプリにまつわる技術系の事。

Windows11時代のデスクトップアプリ開発と「Windowsアプリ」

f:id:torum:20210627001450p:plain

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も、実戦投入できるほど安定・充実し、色々なノウハウが広まるまで、今後数年はかかるでしょう。

 

追記:

torum.hatenablog.com