(個人的な)WindowsGUIアプリのアーキテクチャ選択早見表
自分用に記載しているので、詳細は参考に貼ったリンク参照で。
※クロスプラットフォームは意識していないため、QtやElectronは除外
項目名 | Win32アプリ | Windowフォーム | WPF | UWP |
---|---|---|---|---|
プログラミング言語 | C/C++ | C# | C# | C++/WinRT、C# |
特徴 | OS制御をWin32APIを通して かなり自由に行うことができる。 画面の描画は面倒 |
ポチペタで画面作成できるので、 単純なGUIアプリなら簡単に作成可能。 Win32APIはラッパーを通して使用可能 C#なのでテストやソフトウェア開発に便利な機能は 揃っている。 Win32アプリ程ではないが、リッチUIの作成は 面倒くさい。 |
XAMLを使うことでリッチUIの作成が比較的簡単 しかし、UWPと違い、UI部品自体は揃っていないため自作する必要がある。 C#なのでテストやソフトウェア開発に便利な機能は揃っている。 Windowフォーム同様、Win32APIはラッパーを通して使用可能 UWPとWin32APIの間を取ったような存在 |
Win10で使用できるUI部品が たくさん作られており、オシャレなUIが 作りやすい。 反面、Win32APIを呼べないため、 OS制御は不自由。 インストールも基本的にMicrosoftストアから ダウンロードしないといけないなど結構面倒 MS一押し。 |
アーキテクチャ | M+VC | M+VC | MVVM | MVVM |
(個人的に) どんな時に選択するか |
他装置と通信する、組み込みWindowsアプリなど、 リアルタイム性が要求される場合や OS単位での制御が必要となる場合 ※組み込み(FA系など)製品はタクトタイムが存在するので、 ガベコレが働く言語は選択されづらい。 |
ツール作成 |
密にリアルタイム性が求められない場合の |
OS制御が不要でリッチなUIが必要な場合 ※個人のPCに入れるようなBtoCアプリ作成時など |
なお、Windows10 1903以降は、XamlIslandsという技術によって、
Win32アプリやWindowフォーム・WPFでもUWPのオシャレなUI部品が使用できるらしい。
発表されて間もないので、知見が少ないが使いこなせると良さそう。
参考: