概要
- Windowsデスクトップアプリ開発の「正しいフレームワーク」が長年不明瞭な状況
- かつてはWin32が明確な戦略と答えを提供
- その後、複雑な政治と戦略の迷走で混乱が続く
- 技術的失敗ではなく、組織的失敗が根本原因
- 現在も多様なフレームワークが乱立し、明快な指針がない現状
Windowsデスクトップアプリ開発の混乱史
- 数年前、 Windowsデスクトップアプリのフレームワーク選定 について開発者間で議論
- WPF、 WinUI 3、 Electron など意見が分裂
- 明確な答えが出ず、議論は迷走
- この沈黙こそが 30年以上続く問題 の象徴
かつての明確な答え「Win32時代」
- 1988年、 Charles Petzold 著『Programming Windows』が登場
- Win16 API とC言語による一貫した開発手法
- 戦略 としての一貫性と明快さ
- Win32も同様に一つの メンタルモデル で理解可能
- 「 1 OS、1 API、1言語、1冊の本」というシンプルさ
オブジェクト指向化と複雑化(1992–2000)
- MFC(1992)、 OLE、 COM、 ActiveX など新技術が次々登場
- GUIフレームワークではなく コンポーネントアーキテクチャ 中心
- 認知的複雑性が急増し、 一貫した物語性の喪失
- Microsoftは 技術要素だけを提供 し、開発者に全体像を委ねる方針
Longhorn(PDC 2003)とビジョンの崩壊
- Longhorn (WinFS, Indigo, Avalon/WPF)の発表
- Avalon(WPF) は開発者に高評価
- しかし開発リセットで .NET排除 の方針へ
- Windowsチームと.NETチームの対立が激化
Silverlightと繰り返されるパターン(2007–2010)
- WPF リリース後、 Silverlight (Flash対抗)を投入
- クロスプラットフォーム戦略のはずが、突然 Windows Phone専用 へ方針転換
- 技術的失敗ではなく ビジネス戦略の急変 で終了
- 開発者が最後に知らされる構造
Metroパニックと二重戦争(2012)
- Windows 8/Metro(WinRT) の登場
- WinRT はC++ベース、.NETとは断絶
- Windowsチームと.NETチームが 別々の未来を提示
- 開発者は混乱し、 UWP の制約や不便さから離脱
UWPとWinUIの混迷(2015–現在)
- UWP は「書けばどこでも動く」を標榜
- しかしMicrosoft自社アプリすらUWPを採用せず
- 公式の答えは「状況次第」「様子見」と曖昧化
- WinUI 2/3, Project Reunion, Windows App SDK など、名称と戦略が頻繁に変更
- 開発者は 14年で14回の方向転換 に振り回される
現在のWindows GUIフレームワークの乱立
- Microsoft純正
- Win32 (1985)– 依然現役
- MFC (1992)– 保守モード
- WinForms (2002)– 利用可能だが推奨されず
- WPF (2006)– オープンソース化、投資停止
- WinUI 3 / Windows App SDK (2021)– 現在の「最新」だが将来不透明
- MAUI (2022)– クロスプラットフォーム指向
- ハイブリッド/ウェブ系
- Blazor Hybrid、 WebView2
- サードパーティ
- Electron、 Flutter、 Tauri、 Qt、 React Native for Windows、 Avalonia、 Uno Platform、 Delphi/RAD Studio、 Java Swing/JavaFX など多様
- 17種類のアプローチ、5言語、3つの描画思想 が混在
失敗の本質と教訓
- 失敗の主因は 内部政治、 カンファレンス主導の拙速な戦略転換、 ビジネス判断による開発者切り捨て
- 技術自体は優れていても、 組織的失敗 が全てを台無しに
- 採用・投資・保守・移行 まで見据えた「成功の理論」がなければ、混乱が続くのみ
- Charles Petzold もWinRT以降、著作を断念