WinForms/WPF/WinUIの選び方の知識マップ(知識グラフ)
type: Dataset
description: WinForms・WPF・WinUIをどう選ぶかを、新規開発か既存資産の延長か、画面が標準フォーム中心か表現力重視かという軸で整理する記事で、標準コントロール中心の業務アプリにはWinForms、データバインディングとMVVMを活かす中〜大規模業務アプリにはWPF、Fluentや最新のWindows体験が製品価値に直結する新規Windows専用製品にはWinUIを推奨する。WinUIはWindows App SDKのUIフレームワーク部分であり、既定でMSIXパッケージとpackage identityを前提とする一方、Windows App SDK自体は既存のWPF/WinForms資産にも機能追加できるためUI全面移行は必須でないとし、XAML Islandsによる段階移行は主戦略にする前に小さく検証すべきだと注意を促す。

Windows Forms
type: Concept
definition: デスクトップGUIアプリケーションを構築するための.NET/.NET FrameworkのUIフレームワーク。
alternative label: WinForms
recommended for: 標準コントロール中心の業務アプリ
should precede: WinUI(Windows App SDK)

WPF
type: Concept
definition: XAMLでUIを宣言的に記述する、Windows専用のデスクトップUIフレームワーク。ベクターベースの描画とデータバインディングを特徴とする。
alternative label: Windows Presentation Foundation
uses: XAML
uses: データバインディング
recommended for: 画面数の多い中〜大規模業務アプリ
should precede: WinUI(Windows App SDK)

WinUI(Windows App SDK)
type: Concept
definition: Windows App SDKベースのUIフレームワーク。Windows 11のモダンなUIに沿った外観と、Microsoft Store/MSIXとの親和性を持つ。動作対象はWindows 10 バージョン1809(ビルド17763)以降で、Windows 11専用ではない。
alternative label: WinUI 3
alternative label: Windows App SDK
uses: XAML
uses: Fluent Design System
implements: Windows App SDK
recommended for: Windows専用の新規モダン製品UI

XAML
type: Concept
definition: 画面の構造を宣言的に書くためのXMLベースのマークアップ言語。WPFとWinUIが使う。
alternative label: eXtensible Application Markup Language

データバインディング
type: Concept
definition: 画面のプロパティとデータ側のプロパティを結び付け、片方が変わればもう片方も追随させる仕組み。
alternative label: Data Binding

MVVM(Model-View-ViewModel)
type: Concept
definition: 画面(View)、画面用の状態とコマンド(ViewModel)、業務ロジックとデータ(Model)に分ける設計パターン。
alternative label: Model-View-ViewModel
requires: データバインディング

Windows App SDK
type: Concept
definition: WinUIを含む、今のWindows向け開発ライブラリ群。UI以外の機能もあり、WPF・WinForms・Win32の既存アプリにも追加できる。
alternative label: WinAppSDK
should precede: WinUI(Windows App SDK)

MSIX
type: Concept
definition: package identityを持つ、Windowsのモダンなアプリパッケージング形式。
requires: package identity

package identity
type: Concept
definition: MSIXなどのパッケージが持つ、Windowsが認識する一意の識別子。名前、バージョン、アーキテクチャ、ResourceId、発行元という5つの組で構成される。
alternative label: パッケージID

外部の場所を指すpackaged(sparse package)
type: Concept
definition: 既存のインストーラーをそのまま使いながら、実行ファイルにpackage identityだけを付与できるpackagingモデル。
alternative label: Sparse Package
requires: package identity

unpackaged app
type: Concept
definition: MSIXなどのパッケージを使わず、従来どおりフォルダに実行ファイルを置く形で配布されるアプリ。
alternative label: アンパッケージアプリ
alternative label: 従来型のデスクトップアプリ
incompatible with: package identity

XAML Islands
type: Concept
definition: 既存のWPF・WinForms・Win32アプリの一部分に、新しいXAML(WinUI系)のコントロールを埋め込むための仕組み。

既存WPF/WinFormsへのWinUI段階移行
type: Concept
definition: 既存のWPF/WinFormsアプリに、XAML IslandsなどでWinUI系のコントロールを少しずつ混ぜていく移行構想。
alternative label: 段階移行
requires: XAML Islands
not recommended for: WinUI(Windows App SDK)

標準コントロール中心の業務アプリ
type: Concept
definition: 標準コントロールと入力フォームが中心の、比較的小〜中規模な社内ツール・業務アプリ。
alternative label: 入力フォーム中心のツール

画面数の多い中〜大規模業務アプリ
type: Concept
definition: 画面数が多く、データバインディング・スタイル・テンプレート・MVVMを活用したい中〜大規模の業務アプリ。

Windows専用の新規モダン製品UI
type: Concept
definition: Fluentや最新のWindows体験そのものが製品価値に直結する、Windows専用の新規製品のUI。

Fluent Design System
type: Concept
definition: Windows 11の見た目と操作感を定めたマイクロソフトのデザイン体系。WinUIが前提にしている。
alternative label: Fluent

subject: WPF
predicate: uses
object: XAML
description: WPFはXAMLで画面を宣言的に記述するUIフレームワークである。
evidence: overview
verified at: 2026-08-01
certainty: established

subject: WinUI(Windows App SDK)
predicate: uses
object: XAML
description: WinUIもXAMLを使ってUIを記述する。
evidence: winui3
verified at: 2026-08-01
certainty: established

subject: WPF
predicate: uses
object: データバインディング
description: WPFはデータバインディングを中心機能の1つとして持つ。
evidence: data
verified at: 2026-08-01
certainty: established

subject: MVVM(Model-View-ViewModel)
predicate: requires
object: データバインディング
description: MVVMパターンのViewとViewModelは、データバインディングでつなぐ。
evidence: data-binding-and-mvvm
verified at: 2026-08-01
certainty: established

subject: WPF
predicate: uses
object: MVVM(Model-View-ViewModel)
description: MVVMパターンを採用する場合、WPFはXAML・データバインディング・コマンドを通じて実践しやすい。
evidence: commanding-overview
verified at: 2026-08-01
certainty: context-dependent

subject: WinUI(Windows App SDK)
predicate: uses
object: MVVM(Model-View-ViewModel)
description: MVVMパターンを採用する場合、WinUIもdata binding/MVVMの導線を普通に持っている。
evidence: data-binding-and-mvvm
verified at: 2026-08-01
certainty: context-dependent

subject: WinUI(Windows App SDK)
predicate: implements
object: Windows App SDK
description: WinUIはWindows App SDKのUIフレームワーク部分として実装されている。
evidence: windows-app-sdk
verified at: 2026-08-01
certainty: established

subject: WPF
predicate: uses
object: Windows App SDK
description: UI全面移行はせず機能だけ足したい場合、既存WPFアプリにも、App Lifecycle・Windowing・Toast NotificationsなどWindows App SDKの機能を追加できる。
evidence: wpf-plus-winappsdk
verified at: 2026-08-01
certainty: context-dependent

subject: Windows Forms
predicate: uses
object: Windows App SDK
description: UI全面移行はせず機能だけ足したい場合、既存WinFormsアプリにも、UIを維持したままWindows App SDKの機能を追加できる。
evidence: winforms-plus-winappsdk
verified at: 2026-08-01
certainty: context-dependent

subject: WinUI(Windows App SDK)
predicate: requires
object: MSIX
description: 新規のWinUI 3アプリは既定でpackaged、つまりMSIXパッケージ路線が前提になる(sparse packageやunpackagedを明示的に選ばない限り)。
evidence: packaging
verified at: 2026-08-01
certainty: context-dependent

subject: MSIX
predicate: requires
object: package identity
description: packaged(MSIX)モデルはpackage identityを持つ。
evidence: packaging
verified at: 2026-08-01
certainty: established

subject: 外部の場所を指すpackaged(sparse package)
predicate: requires
object: package identity
description: 外部の場所を指すpackaged(sparse package)は、既存のインストーラーを保ったままpackage identityだけを付与する方式である。
evidence: grant-identity-to-nonpackaged-apps-overview
verified at: 2026-08-01
certainty: established

subject: unpackaged app
predicate: incompatibleWith
object: package identity
description: unpackagedのアプリはpackage identityを持たない。
evidence: packaging
verified at: 2026-08-01
certainty: established

subject: WPF
predicate: uses
object: XAML Islands
description: 段階移行を小さく検証する場合、XAML Islandsは既存WPFアプリの一部にWinUI系のコントロールを埋め込む仕組みとして使える。
evidence: windows-app-sdk-1-4
verified at: 2026-08-01
certainty: context-dependent

subject: Windows Forms
predicate: uses
object: XAML Islands
description: 段階移行を小さく検証する場合、XAML Islandsは既存WinFormsアプリの一部にWinUI系のコントロールを埋め込む仕組みとしても使える。
evidence: windows-app-sdk-1-4
verified at: 2026-08-01
certainty: context-dependent

subject: 既存WPF/WinFormsへのWinUI段階移行
predicate: requires
object: XAML Islands
description: 既存WPF/WinFormsへのWinUI段階移行は、XAML Islandsによるコントロール埋め込みに依存する構想である。
evidence: windows-app-sdk-1-4
verified at: 2026-08-01
certainty: established

subject: 既存WPF/WinFormsへのWinUI段階移行
predicate: notRecommendedFor
object: WinUI(Windows App SDK)
description: 既存WPF/WinFormsへの段階移行を、WinUI導入の主戦略として最初から前提にすることは推奨されない。先に小さく検証すべきとされる。
evidence: windows-developer-faq
verified at: 2026-08-01
certainty: established

subject: Windows Forms
predicate: recommendedFor
object: 標準コントロール中心の業務アプリ
description: 標準コントロール中心・入力フォーム中心の小〜中規模な社内ツールでは、WinFormsが本記事の推奨である。
evidence: overview
verified at: 2026-08-01
certainty: established

subject: WPF
predicate: recommendedFor
object: 画面数の多い中〜大規模業務アプリ
description: 画面数が多く、データバインディング・スタイル・テンプレート・MVVMを使いたい中〜大規模の業務アプリでは、WPFが本記事の推奨である。
evidence: overview
verified at: 2026-08-01
certainty: established

subject: WinUI(Windows App SDK)
predicate: recommendedFor
object: Windows専用の新規モダン製品UI
description: Fluentや最新のWindows体験が製品価値に直結する新規のWindows専用製品では、WinUIが本記事の推奨である。
evidence: winui3
verified at: 2026-08-01
certainty: established

subject: Windows Forms
predicate: shouldPrecede
object: WinUI(Windows App SDK)
description: 既存WinFormsアプリが大きい場合は、WinUIへの全面移行を検討するより先に、まずWinForms継続を基本に見るべきとされる。
evidence: overview
verified at: 2026-08-01
certainty: established

subject: WPF
predicate: shouldPrecede
object: WinUI(Windows App SDK)
description: 既存WPFアプリが大きい場合は、WinUIへの全面移行を検討するより先に、まずWPF継続を基本に見るべきとされる。
evidence: overview
verified at: 2026-08-01
certainty: established

subject: Windows App SDK
predicate: shouldPrecede
object: WinUI(Windows App SDK)
description: 最新のWindows機能を使いたいだけなら、WinUIへのUI全面移行より先に、既存フレームワークへのWindows App SDK部分導入を検討すべきとされる。
evidence: windows-developer-faq
verified at: 2026-08-01
certainty: established

subject: WinUI(Windows App SDK)
predicate: uses
object: Fluent Design System
description: WinUIはFluent Design Systemを前提にしたUIフレームワークである。
evidence: winui3
verified at: 2026-08-01
certainty: established