mcpField
D
dotnet-ui-chooser

dotnet-ui-chooser

github.com/wshaddix開発8674 回インストール35 週間前に更新
リポジトリ

dotnet-ui-chooser について

Web、クロスプラットフォーム、Windows向けの UI フレームワークを選ぶ .NET チーム向けの判断ツリーです。対象プラットフォーム、チームの経験、UI の複雑さ、性能、移行要件ごとに選択肢を比較し、個別フレームワークの実装詳細は扱いません。

主な機能

  1. 01対象プラットフォームで候補を絞る
  2. 02チームの経験との適合性を比較
  3. 03UI と性能の要件を評価
  4. 04既存フレームワークの移行先を整理
  5. 05Blazor のホスティング方式を選択

活用シーン

  1. 01.NET アプリの UI フレームワーク選定
  2. 02Windows デスクトップフレームワークの比較
  3. 03モバイルと Web の対応範囲の評価
  4. 04既存 UI アプリの近代化計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/wshaddix/dotnet-skills --skill dotnet-ui-chooser

インストール後、Claude Code で/dotnet-ui-chooserを入力して読み込まれたか確認します。

詳細

dotnet-ui-chooser

.NET アプリケーション向けの UI フレームワーク選定の決定木です。Web(Blazor Server、Blazor WebAssembly、Blazor Hybrid)、クロスプラットフォーム(MAUI、Uno Platform、Avalonia)、Windows 専用(WinUI 3、WPF、WinForms)のフレームワークを扱います。5 つの判断要素に基づく体系的なトレードオフ分析を示し、チームがそれぞれの制約に応じて選択肢を評価できるようにします。

対象範囲: このスキルでは、フレームワーク選定の決定木とフレームワーク間の比較を扱います。各フレームワークの詳細、パターン、API は、それぞれのフレームワークスキルが担当します。フレームワーク間の移行ガイダンスは、[skill:dotnet-wpf-migration] が担当します。

対象外: フレームワーク固有の実装パターンについては、以下に記載されている各スキルを参照してください。フレームワーク間の移行パスについては、[skill:dotnet-wpf-migration] を参照してください。デスクトップ UI のテストについては、[skill:dotnet-ui-testing-core] を参照してください。

相互参照:Blazor のホスティングとレンダーモードについては [skill:dotnet-blazor-patterns]、MAUI のパターンについては [skill:dotnet-maui-development]、Uno Platform のパターンについては [skill:dotnet-uno-platform]、WinUI 3 のパターンについては [skill:dotnet-winui]、.NET 8 以降のモダンな WPF については [skill:dotnet-wpf-modern]、WinForms のモダナイズについては [skill:dotnet-winforms-basics] を参照してください。


決定木

この体系的なフローを使って、プロジェクトの制約に基づきフレームワークの候補を絞り込みます。各分岐では、決定的な答えではなくトレードオフを示します。最適な選択は、チームが各要素をどの程度重視するかによって異なります。

ステップ 1:対象プラットフォーム

最も大きな制約です。アプリケーションがサポートする必要のあるプラットフォームを特定します。

Target platforms?
|
+-- Web browser only
|   --> Blazor (Server, WebAssembly, or Auto)
|       See "Blazor Hosting Model Selection" below
|
+-- Windows only
|   --> WinUI 3, WPF, or WinForms
|       See "Windows Framework Selection" below
|
+-- Mobile (iOS / Android)
|   +-- Also need desktop?
|   |   +-- Yes --> MAUI or Uno Platform
|   |   +-- No  --> MAUI or Uno Platform
|   |
|   +-- Also need web?
|       +-- Yes --> Uno Platform (WASM target) or Blazor Hybrid in MAUI
|       +-- No  --> MAUI or Uno Platform
|
+-- All platforms (web + mobile + desktop)
|   --> Uno Platform (broadest reach)
|       or Blazor Hybrid in MAUI (web UI, native shell)
|
+-- Desktop cross-platform (Windows + macOS + Linux)
    --> Uno Platform or Avalonia
        MAUI supports macOS/Windows but not Linux
ステップ 2:チームの専門知識

既存のチームスキルに合ったフレームワークを選び、習熟にかかる時間を短縮します。

チームの強み適合性が高い適合性が中程度習得の難易度が高い
WPF / WinUI XAMLWPF、WinUI 3Uno Platform(WinUI XAML サーフェス)Blazor(Razor 構文)
Web(HTML/CSS/JS)BlazorUno Platform(WASM ターゲット)WPF、WinUI(XAML)
Xamarin.FormsMAUI(直接の後継)Uno PlatformBlazor、WPF
C# だが UI フレームワークの経験なしWinForms(最も簡単)、BlazorMAUIWPF、WinUI(XAML の習得が必要)
React / AngularBlazor WebAssembly(SPA モデル)Uno Platform(WASM)WPF、WinUI
ステップ 3:UI の複雑さ

UI 要件に合ったレンダリング機能を持つフレームワークを選びます。

UI のニーズ最適な候補ほかに検討する候補
豊富なネイティブ Windows UI(カスタムコントロール、アニメーション)WinUI 3、WPFUno Platform(WinUI サーフェス)
Web スタイルのレイアウト(レスポンシブ、CSS ベース)BlazorUno Platform(Skia レンダリング)
シンプルなデータ入力フォーム、社内ツールWinFormsBlazor(Static SSR)、WPF
ピクセル単位で正確なクロスプラットフォーム UIUno Platform(Skia レンダリング)Avalonia
OS ごとにプラットフォームネイティブな外観MAUI(ネイティブコントロール)Uno Platform(ネイティブモード)
デスクトップ/モバイルアプリに組み込む Web コンテンツMAUI の Blazor HybridWPF/WinForms の Blazor Hybrid
ステップ 4:パフォーマンス要件

フレームワークのレンダリングアーキテクチャは、パフォーマンス特性に影響します。

パフォーマンス要素WinUI 3WPFWinFormsBlazor ServerBlazor WASMMAUIUno Platform
起動時間高速高速高速高速(サーバー)低速(ダウンロード)中程度中程度
レンダリングDirectX(ネイティブ)DirectX(マネージド)GDI+サーバー側 HTMLブラウザー DOMプラットフォームネイティブSkia またはネイティブ
AOT サポート該当なし(Windows)該当なし(Windows)該当なし(Windows)該当なし(サーバー)対応(.NET 8 以降)対応(iOS では必須)対応(WASM)
GPU アクセラレーション対応対応限定的該当なしブラウザー GPUプラットフォーム GPUSkia GPU
ユーザーあたりのメモリローカルのみローカルのみローカルのみサーバー回路ブラウザーのサンドボックスローカルのみローカルのみ
オフライン対応対応対応対応非対応対応対応対応(ネイティブターゲット)
ステップ 5:移行パス

既存のアプリケーションをモダナイズする場合、移行元のフレームワークによって、実現可能な移行先が制限されます。

現在のフレームワーク自然な移行先代替の移行先判断要因
UWPWinUI 3Uno PlatformWindows のみ:WinUI 3。クロスプラットフォームが必要:Uno Platform。
Xamarin.FormsMAUIUno PlatformAPI を直接引き継ぐ後継:MAUI。より幅広いプラットフォームへの対応:Uno Platform。
WPF (.NET Framework)WPF on .NET 8+WinUI 3 or Uno Platformリスクを最小限に抑える:WPF .NET 8+。モダンな UI:WinUI 3。クロスプラットフォーム:Uno Platform。
WinForms (.NET Framework)WinForms on .NET 8+Blazor or WPFリスクを最小限に抑える:WinForms .NET 8+。より優れた UI:WPF。Web での提供:Blazor。
ASP.NET MVC / Razor PagesBlazor (Static SSR)Stay on Razor Pagesインタラクティブ性が必要:Blazor。コンテンツ中心:Razor Pages も引き続き有効です。
React / Angular SPABlazor WebAssemblyKeep existing SPA.NET 専任のチーム:Blazor。既存の JS チーム:SPA を継続。

Blazor ホスティングモデルの選択

移行先が Blazor の場合、インタラクティブ性の要件、デプロイの制約、規模に基づいてホスティングモデルを選択します。

考慮事項Static SSRInteractiveServerInteractiveWebAssemblyInteractiveAutoBlazor Hybrid
インタラクティブ性フォームのみ完全完全(ダウンロード後)完全完全(ネイティブ)
サーバーが必要はい(レンダリング)はい(永続的な回線)静的ファイルホストのみはい(初回のみ)、以降は静的いいえ
オフラインいいえいいえはい部分的はい
スケーラビリティ高い回線数により制限高い高い(WASM の実行後)該当なし(ローカル)
初回描画高速高速遅い(WASM のダウンロード)高速(最初は Server)即時
SEO対応プリレンダリングプリレンダリングプリレンダリング該当なし
最適な用途コンテンツサイト、シンプルなフォームダッシュボード、基幹業務アプリ公開アプリ、オフライン PWA両方の利点を活用Web UI を備えたデスクトップ/モバイルアプリ

Blazor のパターンの詳細については、[skill:dotnet-blazor-patterns] を参照してください。


Windows フレームワークの選択

アプリケーションの対象が Windows のみの場合、UI の充実度、チームの専門知識、モダナイズの目標に基づいて選択します。

比較表
考慮事項WinUI 3WPF (.NET 8+)WinForms (.NET 8+)
UI パラダイムモダンな XAML、Fluent Design従来型の XAML、Fluent はオプション(.NET 9+)デザイナー主導、ドラッグ&ドロップ
レンダリングDirectX (Windows App SDK)DirectX (WPF layer)GDI+
MVVM のサポートCommunityToolkit.MvvmCommunityToolkit.Mvvm、成熟したエコシステム可能ですが、一般的ではありません
DI / Host builderはいはいはい(.NET 8+)
高 DPIネイティブ.NET 8+ で改善PerMonitorV2(構成が必要)
ダークモードネイティブの FluentApplication.ThemeMode (.NET 9+)実験的(.NET 9+)
タッチ/ペン完全対応基本的な対応限定的
学習曲線中程度(XAML)中程度(XAML)低い
成熟度比較的新しい(2021 年以降)非常に成熟(2006 年以降)非常に成熟(2002 年以降)
UWP の移行パス直接間接(XAML の違い)該当なし
それぞれを選ぶ場合

WinUI 3 — モダンな Fluent Design、タッチ/ペン入力、最新の Windows 統合機能(ウィジェット、通知、Mica)を必要とする、新しい Windows ネイティブアプリケーションに最適です。Windows 10 2004 以降が必要です。[skill:dotnet-winui] を参照してください。

WPF on .NET 8+ — 既存の WPF の専門知識を持つチーム、豊富な WPF コントロールエコシステムが必要なアプリケーション、または .NET Framework 上の WPF から移行するプロジェクトに最適です。Fluent テーマは .NET 9+ で利用できます。[skill:dotnet-wpf-modern] を参照してください。

WinForms on .NET 8+ — 迅速なプロトタイピング、社内ツール、シンプルな CRUD フォーム、UI の洗練度より開発速度を重視する Windows ユーティリティに最適です。最も学習しやすいフレームワークです。[skill:dotnet-winforms-basics] を参照してください。


クロスプラットフォームフレームワークの選択

アプリケーションを複数のプラットフォームで実行する必要がある場合、対応範囲、レンダリングモデル、API の範囲を比較します。

比較表
検討項目MAUIUno PlatformAvalonia
対象プラットフォームiOS、Android、macOS、Windows、TizeniOS、Android、macOS、Windows、Linux、Web(WASM)iOS、Android、macOS、Windows、Linux、Web(WASM)
UI のレンダリングプラットフォームネイティブのコントロールSkia(ピクセル単位で正確)またはプラットフォームネイティブSkia(ピクセル単位で正確)
XAML 方言MAUI XAML(Xamarin.Forms の後継)WinUI XAML サーフェスAvalonia XAML(WPF に着想を得たもの)
ホットリロードXAML + C# のホットリロードXAML + C# のホットリロードXAML のホットリロード
メンテナーMicrosoft(ファーストパーティ)Uno Platform(オープンソース、商用サポートあり)コミュニティ(オープンソース、商用サポートあり)
エコシステムNuGet + MAUI Community ToolkitNuGet + Uno Toolkit + Uno ExtensionsNuGet + Avalonia コミュニティ
Blazor Hybrid組み込み(BlazorWebView)対応組み込みではない
Linux デスクトップ非対応対応(Skia + GTK/Framebuffer)対応
Web(WASM)非対応対応対応(ブラウザー)
移行元Xamarin.Forms(直接)UWP(WinUI サーフェスを直接利用)WPF(類似した XAML)
それぞれを選ぶ場合

MAUI — iOS と Android を対象とするモバイル優先のアプリに最適で、Windows/macOS にも任意で対応できます。プラットフォームネイティブのコントロールにより、OS ネイティブの外観と操作感を実現します。Xamarin.Forms から直接移行できます。[skill:dotnet-maui-development] を参照してください。

Uno Platform — Linux と Web を含む、最も幅広いプラットフォームへの対応が必要なアプリに最適です。単一の XAML コードベースを使用します。WinUI XAML API サーフェスを採用しているため、UWP または WinUI のチームがクロスプラットフォームへ移行する際の自然な選択肢です。[skill:dotnet-uno-platform] を参照してください。

Avalonia — WPF に着想を得た XAML を備える、コミュニティ主導のクロスプラットフォームフレームワークです。Linux デスクトップへの対応が充実しています。WPF スタイルの開発を好み、コミュニティがメンテナンスするツールを利用できる場合に検討してください。このプラグインが所有するものではありません。詳細は Avalonia のドキュメント を参照してください。


トレードオフの概要マトリックス

すべてのフレームワークを横断してまとめた、すぐに参照できる一覧です。

フレームワークプラットフォームレンダリングXAMLオフラインAOT最適な用途
Blazor ServerWebサーバー HTMLRazorいいえ該当なしLOB アプリ、ダッシュボード
Blazor WASMWebブラウザー DOMRazorはいはい一般公開向け Web アプリ、PWA
Blazor Hybridモバイル + デスクトップWebViewRazorはい部分的ネイティブシェル内の Web UI
MAUIモバイル + デスクトップネイティブMAUI XAMLはいiOS で必須モバイル優先のアプリ
Uno PlatformすべてSkia / ネイティブWinUI XAMLはいWASM最も幅広いプラットフォーム対応
Avaloniaデスクトップ + モバイルSkiaAvalonia XAMLはい部分的Linux デスクトップ、WPF チーム
WinUI 3WindowsDirectXWinUI XAMLはい該当なし最新の Windows アプリ
WPFWindowsDirectXWPF XAMLはい該当なし成熟した Windows アプリ
WinFormsWindowsGDI+なし(デザイナー)はい該当なし内部ツール、プロトタイプ

よくある判断シナリオ

よく遭遇する状況に対する体系的なガイダンスです。各シナリオでは、唯一の答えを示すのではなく、トレードオフを提示します。

シナリオ:新しい社内業務アプリケーション(Windows のみのユーザー)

  • 迅速な提供、最小限の UI:WinForms
  • データ可視化を備えたリッチな UI:WPF または WinUI 3
  • Web での展開を優先:Blazor Server(InteractiveServer)
  • 将来的にクロスプラットフォーム化する可能性:Uno Platform または Blazor

シナリオ:顧客向けモバイルアプリ

  • iOS + Android、ネイティブな外観:MAUI
  • iOS + Android + Web:Uno Platform または MAUI の Blazor Hybrid
  • 既存の Web チームがある:MAUI の Blazor Hybrid

シナリオ:レガシーな .NET Framework WPF アプリケーションのモダナイズ

  • 変更を最小限に抑える:WPF を .NET 8+ に移行(同じ XAML、最新のランタイム)
  • UI をモダンに刷新(Windows のみ):WinUI 3 に移行
  • クロスプラットフォームが必要:Uno Platform に移行(WinUI XAML のサーフェス)
  • Web での提供が必要:重要なフローを Blazor で書き直す

シナリオ:一般公開向け Web アプリケーション

  • コンテンツが多く、SEO が重要:Blazor Static SSR
  • インタラクティブな SPA:Blazor WebAssembly または InteractiveAuto
  • リアルタイムのダッシュボード:Blazor Server(InteractiveServer)

シナリオ:Windows、macOS、Linux を対象とするデスクトップアプリケーション

  • ピクセルパーフェクトな UI:Uno Platform(Skia)または Avalonia
  • MAUI は Linux デスクトップをサポートしていません

エージェントが注意すべき点

  1. 単一のフレームワークを「最良」として推奨しないでください。 すべてのフレームワークにはトレードオフがあります。トレードオフを示したうえで、チームが制約に基づいて判断できるようにしてください。
  2. 新しい顧客向けアプリケーションに WinForms を推奨しないでください。 WinForms は社内ツールやプロトタイプには適していますが、顧客向け製品に必要な最新の UI 機能が不足しています。
  3. MAUI と Uno Platform の対象プラットフォームを混同しないでください。 MAUI は Linux または Web(WASM)をサポートしていません。Uno Platform はサポートしています。推奨する前に、必要なプラットフォームの一覧を確認してください。
  4. Blazor WebAssembly がデフォルトでオフライン動作すると想定しないでください。 WASM はブラウザーで実行されますが、オフライン対応には明示的な PWA の構成(サービスワーカー、キャッシュ戦略)が必要です。
  5. Avalonia を Microsoft がサポートするフレームワークと混同しないでください。 Avalonia はコミュニティによって保守されています。商用サポートの選択肢はありますが、Microsoft の製品ではありません。
  6. UWP から WPF への直接移行を提案しないでください。 UWP の自然な移行先は WinUI 3 です(同じ XAML API サーフェス)。WPF は異なる XAML 方言を使用します。
  7. クロスプラットフォームの選択肢として Blazor Hybrid を見落とさないでください。 MAUI の Blazor Hybrid を使うと、Web UI のスキルをモバイル/デスクトップアプリに活用できます。ネイティブ XAML を習得する代替手段として有効です。
  8. WPF がレガシーだと決めつけないでください。 .NET 8+ の WPF は新機能(.NET 9+ の Fluent テーマ、パフォーマンスの改善など)とともに積極的に保守されています。Windows デスクトップでは、依然として有力な選択肢です。

参考資料

コメント