WinUI 3は、Windows App SDKに含まれるWindowsデスクトップアプリ向けのネイティブUIフレームワークです。調べると機能紹介より「悪いところ」「諦めた話」のほうが目に入るため、知りたいのは使い方より先に「WPFから乗り換える価値があるか」「この先も続くのか」という採用判断でしょう。この記事では2026年10月時点の最新安定版Windows App SDK 2.5.1(2026年9月16日公開)までの公式情報と、GitHubで実測した開発状況をもとに、WPFとの違い、将来性、弱点、最初のアプリの作り方を順に整理します。
まとめ:WinUI 3を選ぶかどうかの結論
- 正体:Windows App SDK(NuGetパッケージ)に入ったUIフレームワークで、C#かC++で書きます。Windows 10 バージョン1809(build 17763)以降で動き、OSの更新を待たずに新しいUI機能を取り込めます。
- WPFとの違い:XAMLとMVVMで組む点は同じです。差が出るのは周辺で、WinUI 3には標準のDataGridとVisual StudioのXAMLデザイナーがありません。その代わり、Micaの背景や新しいTitleBarなどFluentのUI部品がそろっています。
- 将来性:2026年は材料がそろった年です。Microsoftは公式リポジトリでWinUIを「今後のネイティブフレームワーク」と明言し、8月28日にオープンソース化の最終段階を完了しました。Windows App SDK 2.xは4月から毎月安定版が出ており、9月にマージされたPRは134件(3月は5件)でした。
- 弱点:公式リポジトリの未解決Issue(不具合と要望の合計)は2,221件で、この半年で約120件増えました。デザイナー不在と表コントロールの不在は、業務アプリの見積もりに直接効きます。
- 判断:Windows専用の新規アプリで、表の編集が中心ではなく、XAMLを手で書けるチームならWinUI 3を選びます。表中心の業務画面をWPFで持っているなら、移行より継続が安く済みます。macOSやモバイルにも出すなら、最初から候補に入れません。
WinUI 3とは:Windows App SDKに入ったネイティブUIフレームワーク
Microsoft LearnのWinUI 3の概要は、WinUI 3を「新しいWindowsデスクトップアプリケーションを構築するための推奨されるネイティブUIフレームワーク」と位置づけています。XAMLで画面を書き、ロジックは.NET(C#)かC++で書きます。x86・x64・Arm64で動き、Windowsシェルの一部やPowerToysもWinUIで作られています。
OS更新から切り離された配布モデル
WinUI 3の要点は、UIライブラリがOSに同梱されず、Microsoft.WindowsAppSDKというNuGetパッケージで配られることです。アプリ側がSDKの版を決めるので、利用者のWindows更新を待たずに新しいコントロールを使えます。配布形態はMSIXのパッケージ版と非パッケージ版を選べます。ランタイムの持ち方も、端末に入ったWindows App SDKランタイムを使うフレームワーク依存型と、アプリに同梱する自己完結型の2通りがあり、非パッケージ版をフレームワーク依存型で配る場合は起動時にBootstrapper APIでランタイムを初期化します。
WinUIの呼称変更とWinUI for UWP
Microsoftはドキュメントの用語を整理し、「WinUI 3」を単に「WinUI」、「WinUI 2」を「WinUI for UWP」と呼ぶようにしました(Windows開発者向け新着情報)。数字の「3」はUIフレームワークの世代名で、Windows App SDKの版番号(2.5.1など)とは別物です。検索では今も「WinUI 3」が主流なので、この記事も両方の表記を使います。
WinUI 2・UWPとの系譜
WinUI 2もコントロール集はNuGetで先行配布できましたが、その下で動くXAMLフレームワーク本体(Windows.UI.Xaml)とアプリモデルはOSとUWPに縛られたままでした。WinUI 3はこの土台ごとWindows App SDKへ切り出し、Win32(デスクトップ)アプリモデルの上に載せ替えています。ファイルシステムやWin32 APIを自由に使えるデスクトップアプリのまま、UWP由来のコントロールとFluent Designを使えるのはこのためです。
WinUI 3とWPF・WinFormsの違い
3つとも現役の技術で、どれかが廃止予定というわけではありません。差は「FluentのUI部品と新しいコントロール」と「既存資産の厚さ」のどちらを取るかに集約されます。
| 観点 | WinUI 3 | WPF | WinForms |
|---|---|---|---|
| 画面の書き方 | XAML | XAML | デザイナー+C# |
| UIライブラリの配布 | Windows App SDK(NuGet) | .NETに同梱 | .NETに同梱 |
| Fluentの外観 | 標準(Mica・アクリル) | .NET 9以降のテーマ(対応途中) | なし |
| VSのデザイナー | 非対応 | 対応 | 対応 |
| 標準のDataGrid | なし | DataGrid | DataGridView |
| Windows App SDKのAPI | 利用可 | 設定を足せば利用可 | 設定を足せば利用可 |
同じ処理を書いたときのXAMLとC#の差
WPFから来た人が最初につまずくのはウィンドウ周りです。WPFはWindow要素にサイズを書けますが、WinUI 3の安定版のWindowにはWidthもHeightもありません(APIリファレンスでは2.0の実験版チャネルにだけ実験的APIとして載っています)。サイズや位置はAppWindow経由で変えます。下のC#は抜粋で、XAML側にx:Name="StatusText"のTextBlockがある前提です。
<!-- WPF:Window要素にサイズを書ける -->
<Window x:Class="OrderApp.MainWindow" Title="受注一覧" Width="1200" Height="800">
using Microsoft.UI.Xaml;
using Windows.Graphics;
namespace OrderApp;
public sealed partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
AppWindow.Resize(new SizeInt32(1200, 800));
}
private void OnWorkCompleted()
{
DispatcherQueue.TryEnqueue(() => StatusText.Text = "完了");
}
}
同じ1200×800でも単位が違う点に注意してください。WPFのWidthは表示倍率に依存しない論理単位ですが、AppWindow.Resizeはスクリーン座標で指定します。表示倍率150%の画面では、WPFの感覚より小さなウィンドウになります。UIスレッドへの戻し方も変わります。WPFのApplication.Current.Dispatcher.Invokeは処理が終わるまで待つ同期呼び出しですが、DispatcherQueue.TryEnqueueはキューに積むだけで完了を待ちません。完了を待つ必要があるなら、Community Toolkitの拡張メソッドEnqueueAsyncを使います。
MicrosoftはWPFのパターンをWinUI 3へ移す対応表(2026年10月3日更新)を公開しています。移行の見積もりに効く行を抜き出すと次のとおりです。
| WPF | WinUI 3での置き換え |
|---|---|
| DataGrid | 公式の代替なし |
| DataTrigger・MultiTrigger | Community ToolkitのBehaviors |
| MultiBinding | コンバーターかx:Bind |
| DynamicResource | ThemeResource |
| .resxリソース | .reswとResourceLoader |
| AdornerLayer | 同等機能なし(重ねて描く) |
| XAMLデザイナー | 未対応(Hot Reloadで代替) |
WPF後継論の実際と.NET 10でのWPFの更新
WinUI 3をWPFの後継と見るのは半分だけ正しい見方です。WPFは.NET 10でも機能追加と修正が続いており、.NET 10(LTS)のサポート期限は2028年11月14日です。WPFのFluentテーマは.NET 9から使えますが、Microsoft自身が「対応は継続中」と書いています。Windows AI APIのようなWindows App SDKのAPIはWPFからも呼べるため、AI機能を足すためだけにUIをWinUI 3へ移す必要はありません。WPFの現状はWPFの2026年の位置づけと.NET 10での使い方、.NET側のサポート期間は.NET 10(LTS)のサポート期限と移行の解説で扱っています。
既存のWPFアプリを移すかどうかの判断
移行するとUI層はほぼ書き直しになります。上の対応表のとおりTriggerやDataGridがそのまま移らないためです。C#のビジネスロジックは再利用できるので、MVVMでViewModelを分離できているアプリほど費用は下がります。販売管理や在庫管理のような基幹システム開発で、表の編集画面が中心のWPFアプリを持っているなら、WinUI.TableViewや市販のグリッドで今の画面の機能(セル編集・並べ替え・コピー貼り付けなど)を再現できると確かめられるまでは、WPFのまま.NET 10へ上げるほうが安く済みます。逆に、Fluentの外観やタッチ操作を前提に作り直したい画面だけをWinUI 3で新しく作るのは筋が通ります。
WinUI 3の将来性:2026年に起きたこと
将来性は、Microsoftが開発に人と時間を割き続けているかで判断できます。2026年に公開された一次情報を並べると、その量は増える方向に動いています。
Windows App SDK 2.xの安定版の公開実績
2026年4月29日のWindows App SDK 2.0は、2021年11月の1.0以来はじめてのメジャー更新でした。版番号はセマンティックバージョニングに切り替わり、次に並行導入される版は3.0.0と公式に予告されています。2.0以降の安定版は次のとおりです(GitHub Releasesの公開日・UTC)。
| 版 | 公開日 | 主な追加 |
|---|---|---|
| 2.0.1 | 2026-04-29 | SemVer化、SystemBackdropElement |
| 2.1.3 | 2026-05-21 | TitleBarのドラッグ領域API |
| 2.2.0 | 2026-06-09 | 動画の超解像API |
| 2.3.1 | 2026-07-17 | XAMLの性能改善(オプトイン) |
| 2.4.0 | 2026-08-13 | タッチパッドの触覚フィードバック |
| 2.5.1 | 2026-09-16 | Windowsエラー報告への対応 |
4月から9月まで毎月1本ずつ安定版が出ました。1.8系は2026年9月24日の1.8.12が最後の更新で、公式のリリースチャネル表では同日がサポート終了日です。1.8で作ったアプリは2.xへの移行を計画してください。最新の版と日付はWindows App SDKのリリースチャネルで確認できます。
オープンソース化の完了(2026年8月28日)
以前のmicrosoft-ui-xamlリポジトリは、社内のコードを後から写す鏡にすぎませんでした。2025年7月31日に公開された4段階の計画は2026年8月28日に全段階が完了扱いになり、最終段階の「GitHubを開発の中心にする」も済んでいます。ただし計画自身が「公開できない独自の層がある」と書いており、リポジトリのREADMEには2026年10月13日時点でも「まだコードの貢献は受け付けていない」とあります。開発が見えるようになった段階で、誰でも直せる段階ではありません。
性能改善とBuild 2026
2026年5月11日のWinUIチームの投稿は、WinUIを「今後のネイティブフレームワーク」とする方針を明言し、エクスプローラー起動時のWinUI部分でメモリ割り当て41%減、WinUIコード内の時間25%減という改善値を出しました。一部の最適化は既存アプリを壊しうるため選択式で、2.3.1でその切り替え用のXamlOptionalChanges APIが入っています。同じ投稿は、早ければ3.0、場合によっては4.0以降で、その多くを既定の動作に変える見通しを示しています。6月のBuild 2026ではWinUIのアプリをAIエージェントで作る仕組みが発表され、5月にはGitHub CopilotとClaude Code向けのWinUIプラグインも公開されました。
メジャー更新ごとの追随作業と検証範囲
好材料ばかりではありません。性能改善のうち既存の画面を壊しうるものは今は選択式ですが、3.0以降で既定の動作に変わる見通しです。コントロールのテンプレート内の要素構成や、アニメーションで設定されるプロパティに依存している画面は、そのとき見た目や動作が変わる可能性があります。UWP由来のコードも要注意で、Window.CurrentはデスクトップのWinUIでは常にnullを返し、Window.Dispatcherも非推奨です。メジャー更新のたびに、テンプレートを差し替えた画面を中心に検証の工数を見込んでください。
GitHubの数字で見るWinUIの開発状況
「バグが多い」という評判を数字で確かめるため、2026年10月13日(UTC)にGitHubの検索APIでmicrosoft-ui-xamlリポジトリのIssueとPRを数えました(repo:microsoft/microsoft-ui-xaml is:issue is:open などの条件で、2回計測して同じ値)。Issueには不具合のほか機能要望も含まれます。
| 指標 | 件数 |
|---|---|
| 未解決のIssue | 2,221 |
| Issueの累計 | 8,423 |
| 2026年4月1日時点の未解決(推計) | 約2,100 |
| 2026年10月1日時点の未解決(推計) | 約2,220 |
| 2026年3月にマージされたPR | 5 |
| 2026年9月にマージされたPR | 134 |
推計は「その日より前に作られ、今も未解決か、その日以降に閉じられたIssue」の件数で、再オープンの履歴は反映していません。読み方は2つです。第一に、未解決のIssueは半年でおよそ2,100件から2,220件へ増えており、少なくともこの期間に減ってはいません。不具合と要望が混ざった数なので件数そのものを品質とは読めませんが、「Issueが片づいてから採用する」という待ち方は当面成り立ちません。使う予定のコントロール名でIssueを検索し、回避策が要るものを採用前に洗い出してください。第二に、マージされたPRは月5件から月134件へ増えました。GitHub上で開発する体制に移った結果で、10月には既存コントロールにテストを足すPRが「製品のバグを10件見つけた」と報告しています(PR #12202)。バグは表に出る量が増えていますが、直す側の動きも外から見えるようになりました。
採用前に知っておくべき弱点
XAMLデザイナー非対応(Hot Reloadで代替)
Visual StudioのXAMLデザイナー(ドラッグ&ドロップで画面を組む[デザイン]タブ)は、公式ドキュメントのとおりWinUI 3プロジェクトに対応していません。.xamlを開いてXMLエディタしか出ないのは故障ではなく仕様です。代わりに、デバッグ実行中にXAMLを書き換えて画面へ反映するXAML Hot Reloadと、実行中の画面をVisual Studio内に映すXAML Live Previewを使います。ただし新しいクラスやイベントハンドラーの追加、x:Bindで新しいプロパティを参照する変更は再起動が要ります。画面を絵で置いていく作り方に慣れたチームほど負荷が大きくなります。
標準DataGridの不在と代替コントロールの選定
業務アプリで最も困るのがこれです。Microsoftの対応表もDataGridを「公式の代替なし」とし、コミュニティ製のWinUI.TableView(MITライセンス、NuGetの最新は1.5.0)を選択肢の一つに挙げています。以前よく使われたCommunity ToolkitのDataGrid(CommunityToolkit.WinUI.UI.Controls.DataGrid)はNuGetの最終版が2021年11月18日の7.1.2で、それ以降更新されていません。標準化の要望はIssue #10961として未解決のまま残っています。表の編集が中心の画面を作るなら、市販コントロールを含めて採用前に選定を済ませてください。
WinUI 3を選ぶべきでない場面
- Windows以外にも配布する:WinUI 3はWindows専用です。macOSやモバイルが視野に入るなら.NET MAUIなど別の選択肢を検討します。
- 表の編集画面が中心のWPFアプリがある:DataGridとデザイナーが無い分、移行で生産性が落ちます。WPFのまま.NET 10へ上げるほうが安く済みます。
- サポート切れのWindows 10端末が多い:動作要件は1809以降でも、サポートの切れた端末へ新しいアプリを配る意味は薄れます。期限はエディションで異なるため(下のFAQを参照)、端末の棚卸しが先です。
WinUI 3アプリの始め方(Visual Studio 2026とdotnet new)
開発環境:Visual Studio 2026と開発者モード
Microsoftの導入手順は、Visual Studio 2026に「WinUI application development」ワークロードを入れ、Windowsの開発者モードを有効にする構成です。PowerShellで次の1行を実行すると、両方をWinGet構成ファイルでまとめて設定できます。
winget configure -f https://aka.ms/winui-config
Visual Studioで作る場合は、新しいプロジェクトで「WinUI」を検索し、「WinUI Blank App (Packaged)」のC#テンプレートを選びます。テンプレートが出てこないときは、Visual Studio Installerの[変更]でワークロードにチェックが入っているかを確認します。
dotnet newでのプロジェクト作成
2026年5月から、Visual Studioを使わずにコマンドラインで作れるdotnet new用のWinUIテンプレートがプレビュー公開されています。空のアプリ、NavigationView、TabView、MVVMの4種類と、ページやダイアログを足す項目テンプレートが入っています。
dotnet new install Microsoft.WindowsAppSDK.WinUI.CSharp.Templates
dotnet new list winui
dotnet new winui -n HelloWinUI
cd HelloWinUI
dotnet run
2026年10月13日時点のテンプレートは0.0.7-alphaです。テンプレート定義を展開して確認したところ、動作条件は.NET SDK 8.0以降かつWindowsでした。macOS(.NET SDK 10.0.401)では一覧表示はできるものの、dotnet new winuiによる作成は「サポートされているOSはWINDOWS」という制約で止まります(終了コード100)。対象の.NETは--dotnet-versionでnet8.0・net9.0・net10.0から選べ、0.0.7-alphaの空アプリの定義では省略時がnet10.0です。MVVMテンプレートはCommunityToolkit.Mvvmを参照します。
生成されるMainWindow.xamlの読みどころ
空のアプリのテンプレートが生成するMainWindow.xamlの主要部分は次のとおりです(HelloWinUIの名前で作った場合。デザイナー用の名前空間宣言とコメントは省略)。
<Window
x:Class="HelloWinUI.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="HelloWinUI">
<Window.SystemBackdrop>
<MicaBackdrop />
</Window.SystemBackdrop>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TitleBar x:Name="AppTitleBar" Title="HelloWinUI">
<TitleBar.IconSource>
<ImageIconSource ImageSource="Assets/AppIcon.ico" />
</TitleBar.IconSource>
</TitleBar>
<Frame x:Name="RootFrame" Grid.Row="1" />
</Grid>
</Window>
読みどころは3つです。背景はMicaBackdropで最初からMica素材になり、タイトルバーはTitleBarコントロールで自前に描きます(コードビハインドでExtendsContentIntoTitleBar = trueとSetTitleBar(AppTitleBar)を呼ぶ)。中身はFrameがMainPageへ遷移する作りで、画面の部品はウィンドウではなくページ側に書くのが前提です。
プロジェクトファイルでは、UseWinUIがtrue、TargetPlatformMinVersionが10.0.17763.0(Windows 10 1809)になっています。注意したいのはMicrosoft.WindowsAppSDKの版指定がVersion="*"になっている点です。ロックファイルを使わない構成では、復元したタイミングによって解決される版が変わり、開発者ごとに別の版でビルドしてしまいます。チームで開発するなら、作成直後に2.5.1のような具体的な版へ書き換えて固定してください。
パッケージ版と非パッケージ版の選び方
テンプレートはMicrosoft.Windows.SDK.BuildTools.WinAppを参照しており、dotnet runだけでパッケージIDを持った状態のアプリを起動できます。ストア配布や通知・共有など、パッケージIDが要る機能を使うならMSIXのパッケージ版が素直です。社内配布で既存のインストーラーに載せたい場合は非パッケージ版にできます。その場合は、ランタイムを同梱する自己完結型にするか、フレームワーク依存型でランタイムを別に配りBootstrapperで初期化するかを選びます。MSIX化や署名をコマンドで扱う方法はwinapp CLIの導入と主要コマンドの解説にまとめています。
よくある質問(FAQ)
WinUI 3とWindows App SDKは何が違うのですか?
Windows App SDKはWindowsアプリ開発用のライブラリ群(ウィンドウ管理、通知、配布、Windows AI APIなど)で、WinUI 3はその中のUIフレームワーク部分です。WinUI 3を使うとWindows App SDKを参照することになるため、実務では一体として扱います。
WinUI 3にXAMLデザイナーはありますか?
ありません。Visual Studio 2026でも、WinUI 3プロジェクトではドラッグ&ドロップのXAMLデザイナーが使えません。デバッグ実行中にXAMLを書き換えるXAML Hot ReloadとXAML Live Previewで代替します。
PythonやRustでWinUI 3のアプリは作れますか?
Microsoftが公式に対応しているのはC#(.NET)とC++の2言語です。公式のプロジェクトテンプレートもこの2言語向けにしか提供されていません。PythonやRustからWindowsのAPIを呼ぶコミュニティの取り組みはありますが、GUIを本格的に作るならC#で書くか、その言語向けの別のGUIフレームワークを選ぶほうが確実です。
WinUI 4は出ますか?
Microsoftは呼び名から数字を外し「WinUI」に統一する方向で、WinUI 4という製品名は発表されていません。紛らわしいのはWindows App SDKの版番号で、次のメジャー版は3.0.0と予告されています。WinUIチームの投稿にある「3.0」「4.0」もこのSDKの版を指します。
WinUI 3で使えるコントロールを一覧で確認する方法はありますか?
Microsoft Storeで無料配布されている「WinUI 3 Gallery」アプリが実質的な一覧です。各コントロールを動かしながら、対応するXAMLとC#のコードをその場で確認できます。2026年4月公開の2.9でWindows App SDK 2.0ベースに更新されました。
Windows 10でもWinUI 3アプリは動きますか?
Windows 10 バージョン1809(build 17763)以降なら動きます。Windows App SDK 2.xでも下限は同じです。ただしWindows 10 22H2のサポートは2025年10月14日に終了しています(Enterprise LTSC 2021は2027年1月12日まで)。新規開発ではWindows 11を主な対象にし、LTSC端末に配る場合はエディションごとの期限を確認してください。