Windowsは長い歴史を持ち、Windows用アプリケーションを作成するためのUIフレームワークも時代と共に移り変わっています。特に最近は、MicrosoftがWindowsのUIを大幅に変更したこともあり、フレームワークも何度も変更され、開発者を混乱に陥れているようです。
そのようなWindows用のUIフレームワークの歴史をまとめたページ「Short history of all Windows UI frameworks and libraries(すべてのWindows UIフレームワークとライブラリの略歴)」が公開されています。
ゲーム開発関連のソフトウェア会社を経営しているNikolaus Gebhardt氏によって作成されたページで、以下のような情報がまとめられています。
- Win32 - 1985: Windowsの組み込みAPI。C言語からアクセスでき現在も動作。
- MFC - 1992: Win32のC++ラッパー。現在も広く使われている。
- WinForms - 2002: Win32の.NETラッパーで、C#や他の.NET言語から使える。新機能の追加は予定されていない。
- WPF - 2006: XAMLを導入し、DirectXを使ってベクターベースのコンポーネントを描画できる。現在はオープンソース。
- Silverlight - 2007: Adobe Flashに対抗してWeb上でUIを実現するためにWPFの一部を使用。廃止された。
- Xamarin (Forms) - 2014: クロスプラットフォームの.NETで、UIフレームワークのXamarin.Formsを含んでいた。MAUIに取って代わられた。
- WinJS - 2012: HTML5とJavaScriptを使ってWindowsストアアプリを作成するためのライブラリ。もう開発されていない。
- WinRT (XAML) - 2012: C++/WinRT、C++/CXを使ってWindowsアプリを作成するためのプラットフォーム。UIの作成にXAMLを使用。後にUWPに取って代わられた。
- UWP (XAML) - 2015: C++をベースとしながらも.NETからも利用可能な「ユニバーサルアプリ」を作成するためのプラットフォーム。WinUIに取って代わられた。
- WinUI - 2018: UWPと似ているがスタイルがWindows 11に近い。現在はWinUI 3に置き換えられている。
- MAUI - 2020: Xamarin.Formsの後継となるマルチプラットフォームUIを作成するためのフレームワーク。XAMLをベースにしているが、.NET言語向けのみ。
- WinUI 3 - 2021: WinUIに似ているが、UIフレームワークをOSから切り離し、ライブラリに入れた。
特に2010年以降になって、矢継ぎ早に新しいフレームワークが導入されている事がわかります。
なお、Redditには、ATL/WTLが含まれていないとの指摘もあり、完璧ではないことに注意する必要があるかもしれません。