この記事は、Windows の開発経験と製品の方向性について共通理解を深めるためのものです。
作業の開始
Windows アプリをビルドするには何を使えばよいでしょうか?
Windows デスクトップ アプリケーションの開発には、WinUI 3 と Windows アプリ SDK をお勧めします。 WinUI には、最新の Windows 11 機能を利用し、Windows 10 バージョン 1809 にダウンレベルで動作する Windows アプリを構築するための最新のコントロールとスタイルが含まれています。
何をどのようにビルドするかによって、他のオプションの方がより適切な場合があります。
- Windows アプリ SDK/WinUI 3 ではニーズが満たさない場合、WPF で対応できる可能性があります。
- クロスプラットフォーム: React Native と .NET MAUI をターゲットとしている場合は クロスプラットフォーム アプリを構築できます。 .NET MAUI は、C# 開発者にとって最良の選択肢です。 React Native は、JavaScript/TypeScript の開発者にとって、親しみやすいと感じられるでしょう。
- あなたが Web 開発者の場合:WebView2 をアプリケーション ホストとして使用できます。 これにより、Web 技術を使用して、Windows SDK と Windows App SDK の API にアクセスできるデスクトップ アプリを構築できます。 Windows 用 React Native を使用することもできます。
- あなたが C++ 開発者の場合: デスクトップ アプリの場合、Windows App SDK/WinUI 3 が最良の選択肢です。 ゲームを制作するのであれば、DirectX の使用をご検討ください。
- あなたが Rust 開発者の場合:Rust for Windows を検討してください。
あなたのニーズやテクノロジの好みに応じて、より適切な開発技術が他にあるかもしれません。 「フレームワーク オプションの概要」を参照してください。
Windows の開発技術をわかりやすく比較した資料は、どこにあるでしょうか?
「アプリ開発オプションの概要」を参照してください。
Windows App SDK/WinUI 3
Windows App SDK とは
Windows App SDK は、美しくモダンで、下位互換性のある (Windows 10 1809 まで) デスクトップ アプリを作成できる Windows アプリケーション開発プラットフォームです。 WinUI 3 は、Windows App SDK に付属している UI フレームワークです。
Windows App SDK と Windows SDK の違いは何ですか?
どちらも、Windows アプリをビルドするためのソフトウェア開発キット (SDK) です。
Windows App SDK は、Windows のさまざまなバージョン (Windows 10 1809 まで) にインストールできるモダンなデスクトップ アプリをビルドできる、新しい開発プラットフォームです。 Windows App SDK を使用してアプリをビルドするとき、最新の Windows 開発プラットフォーム機能を利用することができます。 Windows App SDK には WinUI 3 が含まれています。
Windows SDK は、UWP アプリや Win32/デスクトップアプリをビルドするための開発プラットフォームです。 設計の中心になっている Windows API は、特定のバージョンの OS と連動しています。
Windows App SDK は、Windows SDK に代わるものではありません。 Windows App SDK は Windows SDK を補完するものです。 便利で OS から切り離された抽象化を、既に Windows SDK を使用してアクセスできる豊富な Windows OS API のカタログの周囲に提供します。 Windows App SDK でアプリをビルドするとき、必要とする機能に応じて Windows SDK の API を使用することになります。 時間の経過とともに、より多くの Windows SDK の機能が Windows App SDK に持ち込まれる予定です。
Windows App SDK/WinUI 3 を既存の Windows アプリで使用できますか?
なお、WinUI 3 (UI フレームワーク) には Windows App SDK (Windows プラットフォーム開発フレームワーク) が付属しています。
一般的に言って、UI フレームワークを完全に移行する準備ができていない限り、WinUI 3 を使用することはできません。 私たちが取り組んでいる XAML Islands という機能は、WinUI 3 のコンテンツを他の UI フレームワーク (WPF、Win32) でホストすることができます。
既存のアプリがどのようにビルドされたかによりますが、Windows App SDK の要素をあらゆる Win32/デスクトップ アプリで使用できるはずです。 UWP アプリは、Windows App SDK/WinUI 3 ではサポートされていません。
これは、WPF/MFC/WinForms アプリが使用できる Windows App SDK API が WinUI 3 とは関係のないことを意味します。 このような API の例としては、App Lifecycle、Windowing、Toast Notifications などがあります。
WinUI 3 アプリをビルドするには、Visual Studio を使用する必要がありますか?
Windows App SDK/WinUI 3 アプリの開発には、Visual Studio 2022 バージョン 17.1 以降を使用することを強くお勧めします。 最新バージョンの Visual Studio を使用することで、Hot Reload などの豊富な開発機能を利用することができます。
他の IDE や開発ワークフローを使用できる場合もありますが、現在のところ、Windows アプリ SDK/WinUI 3 で正式にサポートされている IDE は Visual Studio のみです。 XAML や Windows アプリ SDK/WinUI 3 を使用するプロジェクトをコンパイルするには、MSBuild が必要であることにご注意ください。
Windows App SDK/WinUI 3 を使用してアプリをビルドしているとき、私は「WinUI 3 アプリ」をビルドしているのでしょうか?
はい、「WinUI 3 アプリ」という言葉を使うことをお勧めします。
WinUI 2 コンポーネントを徐々に WinUI 3 コンポーネントに置き換えることで WinUI 2 アプリを WinUI 3 へ段階的に更新できますか?
いいえ。 Windows App SDK を UWP アプリで使用することはできません。WinUI 2 が WinUI 3 と混在することはできません。 「UWP から Windows アプリ SDK への移行」を参照してください。
UWP アプリを Windows App SDK/WinUI 3 に移行するのは難しいですか?
UI コンポーネントの移行は一般的に単純です (C# と C++/WinRT の場合)。 それ以外の場合、UWP から Windows App SDK/WinUI 3 への移行のコストは、主に次の要因に依存します。
- プロジェクト ファイルと MSBuild のカスタマイズ: プロジェクトの移行は、高度な MSBuild 機能を使用するかどうかによって、相当な労力が必要になる場合があります。
- .NET API の移行: UWP アプリが .NET に依存している場合は、.NET 6 以降にアップグレードする必要があります。 ほとんどの場合、.NET 6 を採用することは簡単です。
- UI コンポーネント ライブラリ: UI コンポーネント ライブラリを使用する場合は、WinUI 3 をターゲットとする新しいバージョンのライブラリが必要です。
- UWP ソース コードが現在置き換えられた C++/CX で記述されている場合は、一部のソース コードの移植が必要になります。 「C++/CX から C++/WinRT への移行」をご覧ください。
UWP 移行の詳細については、「UWP から Windows アプリ SDK への移行」を参照してください。
既存の UWP アプリが Store にある場合、同じ識別子を使用して新たにパッケージ化した WinUI 3 アプリを公開できますか?
はい。アップグレードされたアプリは、アプリケーションの ID を更新することなく公開できます。 古いバージョンを持つユーザーは、新しいバージョンに更新されます。 このガイダンスは、デスクトップ アプリだけに適用されます。 Xbox、HoloLens、Surface Hub のアプリは、WinUI 3 に移行できません。
WinUI 3 アプリをパッケージ化/配布するにはどうすればよいですか?
「展開の概要」をご覧ください。
Windows App SDK の移行ガイダンスはどこにありますか?
「UWP から Windows アプリ SDK への移行」を参照してください。
WinUI 3 を使用する場合は、XAML マークアップを使用する必要がありますか?
いいえ。 UI コントロールは、コードで作成できます。 しかし、WinUI 3 UI を宣言的な XAML マークアップの形で表現することは、開発者の体験を向上させるなど、多くの利点があります。
UWP から WinUI 3 に移行する場合は、XAML マークアップと UI 関連のコードの多くを再利用できる可能性があります (ただし、構文の一部を更新する必要があります)。 WPF から WinUI 3 に移行する場合は、たくさんの概念を再利用できますが、コントロール セットと API は異なるでしょう。
Visual Studio に WinUI 3 用のデザイン サーフェス/GUI デザイナーがありますか?
いいえ。 これは WinUI 3 開発者の経験における差であると考えています。 XAML Hot Reload のようなツールは、多くのシナリオで役に立ちます。
Windows App SDK には WinUI 3 が含まれていますか?
はい。 WinUI 3 は Windows App SDK に付属しています。
Windows App SDK には WinUI 2 が含まれていますか?
いいえ。 WinUI 2 は UWP プラットフォームの一部です。
WinUI 2 と WinUI 3 は、同じ技術で作られているのですか?
そうとも言えません。 WinUI 3 は WinUI 2 のコードベースからスタートしましたが、両社は別個の技術です。 WinUI 2 と WinUI 3 はどちらも XAML ベースの UI フレームワークで、.NET と C++ で動作します。 なお、WinUI 2 と WinUI 3 は相互に互換性がありません。
Windows App SDK を使用せずに WinUI 3 を使用することはできますか?
いいえ。 WinUI 3 は Windows App SDK に付属しています。
パッケージ化されていないアプリで WinUI 3 を使用できますか?
はい。 Windows App SDK のすべての技術は、WinUI 3 を含めて、パッケージ化されていないアプリで動作します。
XAML Islands と WinUI 3 の違いは何ですか?
XAML Islands を使用すると、最新の WinUI コントロールを既存の Win32 UI と共に、WinForms や WPF などの他のフレームワークからホストできます。 現在、XAML Islands は ほとんどの システム XAML コントロールと WinUI 2 コントロールでサポートされています。 詳細については、 こちら をご覧ください。 WinUI 3 コントロールに対する XAML Islands のサポートは、Windows アプリ SDK 1.4 以降で利用できます。
WinUI 3 を使用している場合、アプリは Windows 11 と Windows 10 の両方で最新の外観になりますか?
はい。あなたのアプリの UI は、Windows 11 およびバージョン 1809 までの Windows 10 のすべてのサポート対象バージョンで、パッケージ化されたシナリオとパッケージ化されていないシナリオの両方において、最新の Fluent UI 設計原則を継承します。
Windows アプリ SDK でビルドされたアプリでマイカ (Windows 11) やアクリル (Windows 10) の背景を使用できますか?
はい。 「Windows 11 のデスクトップ アプリでマイカ素材またはアクリル素材を適用する」を参照してください。
WinUI 3 のサンプルはどこにありますか?
「サンプルとリソース」を参照してください。 いくつかの注目すべきリポジトリ:
- WindowsAppSDK-サンプル: 特定の Windows App SDK API セットを使用する方法を示します。
- WinUI 3 デモ: Microsoft の WinUI 3 プレゼンテーションで使用されるデモが含まれています。
- WinUI ギャラリー: WinUI 3 と Windows アプリ SDK が表示されます。 Microsoft Store で WinUI ギャラリーを取得することもできます。
UWP と WinUI 2
UWP アプリを Microsoft Store の外部に配布できますか?
はい。 MSIX パッケージが署名されている場合、署名証明書はターゲット デバイス上で有効かつ信頼できるものでなければなりません。
UWP XAML UI コントロールを Win32、WPF、または WinForms UI コントロールと混在させることができますか?
はい - XAML Islands では、このようなことができます。 XAML Islands の詳細については、こちらをご覧ください。
プラットフォーム間の開発
WinUI 3 と App SDK から始めて、最終的にクロスプラットフォーム シナリオをターゲットにしたい場合、後で .NET MAUI を統合することは可能ですか?
現時点ではありません。 .NET MAUI アプリは Windows 上で動作するときは Windows App SDK/WinUI 3 を使用しますが、複数のプラットフォームをターゲットにする必要があると予想される場合は、.NET MAUI または React Native for Windows で開始することをお勧めします。
Windows と Xbox で動作するアプリをビルドしたい場合は、何を使えばいいでしょうか?
Xbox、HoloLens、IoT に対応する必要があるアプリの場合は、UWP を使用することをお勧めします。 Windows App SDK では、これらのプラットフォームはサポートされていません。 ゲーム開発には、 Microsoft Game Development Kit を使用することをお勧めします。
Windows と Surface Hub で動作するアプリをビルドしたい場合は、何を使えばいいでしょうか?
Windows と Surface Hub の両方をターゲットにしている場合は、UWP を使用することをお勧めします。
ネイティブ感覚のプログレッシブ Web アプリ (PWA) を Windows 上でビルドするにはどうすればよいですか?
「Windows での Web 開発」と「プログレッシブ Web アプリの概要」をご覧ください。
パッケージ化、展開、更新
パッケージ アプリ、非パッケージ アプリ、および外部の場所でパッケージ化されたアプリの違いは何ですか?
パッケージ アプリ、非パッケージ アプリ、および外部の場所でパッケージ化されたアプリの定義については、「展開の概要」を参照してください。 このトピックでは、各方法の長所と短所も説明されています。
私の WinUI 3 アプリはエンドユーザーにアップデートが自動的に行なわれますか?
Windows App SDK/WinUI 3 アプリは、Store、.appinstaller ファイル、または既存の MSI または setup.exe パッケージで配信できます。 Store と AppInstaller では自動更新を有効にしているエンド ユーザーの場合は自動更新がサポートされていますが、MSI/setup.exe アプリには独自のアップデーターが必要です。
MSBuild を使用せずに Windows App SDK を使用することはできますか?
一般的に言えば、いいえです。 WinUI 3 と Windows アプリ SDK は MSBuild を必要とするため、Windows アプリ SDK/WinUI 3 のアプリケーション開発には Visual Studio が必須となります。 WinUI 3 を使用しない Windows アプリ SDK のアプリを他のツールチェーンを使ってビルドすることは技術的には可能ですが、これはサポートされていません。
パフォーマンスと最適化
Windows アプリをエンドユーザーに気持ちよく使ってもらうためには、どうしたらいいでしょうか?
「アプリを Windows に最適にする」をご覧ください。
互換性
私のユーザーは、Windows App SDK/WinUI 3 アプリを使用するために Windows をアップデートする必要がありますか?
Windows 10 バージョン 1809 以降のユーザーは、OS をアップデートすることなく、WinUI 3/Windows App SDK アプリをインストールすることができます。
WinUI 3 アプリで Arm64 をターゲットにすることはできますか?
はい。
非推奨と移行
UWP/WinUI 2 は非推奨なのですか?
いいえ。 UWP と WinUI 2 は引き続きサポートされており、バグ、信頼性、およびセキュリティの修正が行われます。 ただし、最新の .NET ランタイムのサポートを含むほとんどの新機能は、Windows App SDK/WinUI 3 だけに追加されます。
UWP/WinUI 2 アプリは、いつ WinUI 3 に移行すればよいですか?
UWP 開発者は、UWP とその機能セットに満足しているのであれば、アプリを Windows App SDK へ移行する必要はないはずです。 アプリによっては、移行しないことが最良の選択となる場合もあります。 Microsoft の最新の Windows プラットフォームと .NET への投資の恩恵を受けたいアプリの場合は、Windows App SDK への移行を検討する必要があります。 「UWP から Windows App SDK への移行」をご覧ください。
UWP + WinUI 2 アプリを WinUI 3 に移行しない方が良いのはどんな場合ですか?
Xbox、Surface Hub、HoloLens 向けにビルドしている場合は、引き続き UWP を使用することをお勧めします。
WPF は非推奨ですか?
いいえ。 WPF はまだサポートされていて、いくつかの機能アップデートを受けることもできます。
WinForms は非推奨ですか?
いいえ。 WinForms はまだサポートされていて、いくつかの機能アップデートを受けることもできます。
Windows ランタイム (WinRT) は非推奨ですか?
いいえ。 WinRT とは、複数の言語間での相互運用を可能にするアプリケーション バイナリ インターフェイス (ABI) を指します。 WinRT は COM の進化系です。 Windows App SDK は、その機能のほとんどを WinRT API を通じて提供します。
リリース ノート
Windows App SDK のリリース ノートはどこにありますか?
「安定チャネルのリリース ノート」と「プレビュー チャネルのリリース ノート」を参照してください。