Windows 開発オプションの概要
[アーティクル] 10/13/2023
14 人の共同作成者
フィードバック
この記事の内容
この記事では、Windows デスクトップ環境用のアプリの作成を開始するために必要な情報を提供します。
Windows には、C++ 、.NET 、その他の新しいテクノロジ (WSL 上のオープンソース ツール や Rust ) など、アプリを構築するためのさまざまなオプションが用意されています。 選択肢が非常に多いので、どこから手を付ければよいか迷う場合があります。
言語とフレームワーク
Windows 用の多くのアプリは、 UWP 、WPF 、または Windows フォーム 使用して記述されており、これらはいずれも現在でも実行可能なツールです。 どれを使用すべきかの概要については、「Windows アプリの開発 - オプションと機能 」を参照してください。
Windows でのみ実行されるアプリの場合は、Windows App SDK と WinUI 3 を調査することもできます。 アプリをクロスプラットフォームにする必要がある場合は、.NET MAUI 、プログレッシブ Web アプリ (PWA) 、または Windows 用 React Native を検討してください。 他にも多くの選択肢がありますが (人気のあるオプションの一覧はこちら )、上記はいくつかの良い出発点です。
選択できるアプリの種類について詳しくは、次の各タブをご覧ください。
Windows UI ライブラリ (WinUI) 3 は、C# と .NET を使用するマネージド アプリや、C++ と Win32 API を使用するネイティブ アプリなど、Windows デスクトップ アプリに対応した最新のユーザー インターフェイス (UI) フレームワークです。 これはまだ非常に活発な開発の最中のため、すべてのニーズを今日満たすことができないかもしれませんが、リリースごとに 成熟しています。
WinUI は、すべてのエクスペリエンス、コントロール、およびスタイルに Fluent Design システム を採用することにより、最新の UI パターンを使用した、一貫性のある直感的でアクセスしやすいエクスペリエンスを提供します。 WinUI 3 は、Windows App SDK の一部として使用できます。 Windows App SDK によって提供される API とツールの統合セットは、対象の幅広い Windows OS バージョン上のどの C++ Win32 アプリや C# .NET アプリからでも一貫した方法で使用できます。
必要な開発者ツールを既にインストールしている場合は、最初の WinUI 3 プロジェクトを作成する 準備ができています。
Win32 デスクトップ アプリ ("クラシック デスクトップ アプリ " とも呼ばれます) は、Windows とハードウェアへの直接アクセスを必要とする、ネイティブ Windows アプリケーションの当初の種類です。 そのため、最高レベルのパフォーマンスと、システム ハードウェアへの直接アクセスを必要とするアプリケーションに適したプラットフォームと言えます。
C++ で Win32 API を使用すると、WinRT や .NET などのマネージド ランタイム環境以上のターゲット プラットフォームの制御の強化をアンマネージド コードを使用して行うことで、最高レベルのパフォーマンスと効率を実現できます。 ただし、アプリケーションの実行に対してこのようなレベルの制御を行うには、正しく行うための十分な慎重さと注意が必要です。また、実行時のパフォーマンスと開発の生産性が引き換えになります。
ここでは、高パフォーマンスのアプリケーションの構築を可能にする、Win32 API と C++ が提供するものについて説明します。
リソース割り当て、オブジェクトの有効期間、データ レイアウト、アラインメント、バイト パッキングなどの厳密な制御を含むハードウェア レベルの最適化。
組み込み関数による SSE や AVX などのパフォーマンス指向の命令セットへのアクセス。
テンプレートを使用した、効率的でタイプセーフな汎用プログラミング。
効率的で安全なコンテナーとアルゴリズム。
DirectX、特に Direct3D および DirectCompute (UWP は DirectX 相互運用機能も提供)。
C++/WinRT を使用すれば、Windows ランタイム (WinRT) API への最高レベルのアクセスを実現する、最新のデスクトップ Win32 アプリを作成できます。
Windows App SDK によって提供される Windows プラットフォームの最新の機能と API にもアクセスできます。 詳しくは、「デスクトップ アプリの現代化 」を参照してください。
WPF は、.NET または .NET Framework にアクセスできるマネージド Windows アプリケーション用に確立されたプラットフォームであり、XAML マークアップを使用してコードから UI を分離します。 このプラットフォームは、高度な UI、スタイルのカスタマイズ、およびグラフィックス集中型のシナリオを必要とするデスクトップ アプリケーションのために設計されています。 WPF の開発スキルは WinUI 3 の開発スキルに似ているため、WPF から WinUI 3 への移行は Windows フォームからの移行よりも簡単です。
Windows App SDK によって提供される Windows プラットフォームの最新の機能と API にもアクセスできます。 詳しくは、「デスクトップ アプリの現代化 」を参照してください。
ユニバーサル Windows プラットフォーム (UWP) には、ユニバーサル Windows プラットフォームのすべてのデバイスに共通の型システム、API、およびアプリケーション モデルが用意されています。 UWP は、Windows PC 用のデスクトップ アプリケーションを作成できるだけでなく、Xbox、HoloLens、および Surface Hub にわたって実行される単一のネイティブなユニバーサル アプリを記述するのに唯一サポートされているプラットフォームでもあります。 UWP アプリは、ネイティブでもマネージドでもかまいません。
UWP は、XAML マークアップを使用してコード (ビジネス ロジック) から UI (プレゼンテーション) を分離する、高度にカスタマイズ可能なプラットフォームです。 UWP は、高度な UI、スタイルのカスタマイズ、およびグラフィックス集中型のシナリオを必要とするデスクトップ アプリに適しています。 また、UWP には、既定の UX エクスペリエンスのための Fluent Design System の組み込みサポートもあり、Windows ランタイム (WinRT) API へのアクセスを提供します。
Windows App SDK によって提供される API にはアクセスできません。 Windows App SDK を使用するには、UWP アプリを WinUI 3 に移行する必要があります。 詳細については、Windows App SDK への移行 に関するページを参照してください。
WinUI は、さまざまなコーディング言語を使用して優れたネイティブ Windows エクスペリエンスを提供するクロスプラットフォーム テクノロジの基礎としても機能します。 .NET MAUI と Windows 用 React Native は、Windows での WinUI の機能を利用しながら、他のオペレーティング システムでの実行も可能にします。 もう 1 つのクロスプラットフォーム オプションであるプログレッシブ Web アプリ (PWA) は、Windows や他のサポートされているプラットフォームではインストールされたネイティブ アプリと同じように機能しながら、ブラウザーでは通常の Web サイトと同様に機能する Web サイトです。
.NET Multi-platform App UI (MAUI) は、単一の .NET コード ベースから各プラットフォームのネイティブ UI とサービスを活用する、Android、iOS、macOS、Windows アプリケーションを構築するための、オープンソースのクロスプラットフォーム フレームワークです。 .NET MAUI では、プラットフォーム ネイティブなエクスペリエンスが好まれるため、アプリで Windows 上での最新のユーザー エクスペリエンスが得られるように、WinUI3 と Windows App SDK を使用します。 これにより、WinUI 3 から提供されるすべてのものに対するアクセスのほか、他のプラットフォームにリーチする機能をアプリに提供します。
Windows 用の .NET MAUI は、次の場合に適しています。
モバイル アプリケーションやデスクトップ アプリケーション間で可能な限り .NET コードを共有する必要がある。
Windows を超えてネイティブ プラットフォームのエクスペリエンスが使用される他のデスクトップやモバイルのターゲットにアプリケーションを公開する必要がある。
クロスプラットフォーム アプリの構築に C# や XAML を使用する必要がある。
Web 開発に Blazor を使用しており、そのすべてまたは一部をモバイル アプリケーションやデスクトップ アプリケーションに含めたいと考えている。
.NET MAUI の詳細については、次のリンクを参照してください。
プログレッシブ Web アプリ (PWA) では、クロスプラットフォームの相互運用性を提供するためのオープン Web テクノロジにアクセスできます。 PWA は、デバイス用にカスタマイズされたアプリのようなエクスペリエンスをユーザーに提供します。 PWA は、サポートされている (Windows などの) プラットフォームではインストールされたネイティブ アプリのように機能しながら、他のブラウザーでは通常の Web サイトと同様に機能するように段階的に拡張されている Web サイトです。
Windows にインストールされた PWA は、他のアプリと同じです。 次に例を示します。
PWA は、[スタート] メニューに追加できます。
PWA は、タスク バーにピン留めできます。
PWA は、ファイルを処理できます。
PWA は、ユーザーがサインインしたときに実行できます。
PWA は、何百万人もの Windows ユーザーが他の Windows アプリと共に検出して簡単にインストールできる Microsoft Store に送信できます。
PWA の構築について詳しくは、次のリンクを参照してください。
React Native は、クロスプラットフォーム アプリの作成を可能にする開発プラットフォームです。
Windows 用 React Native によって Windows 10 および Windows 11 SDK で React Native がサポートされるようになり、JavaScript を使用して、Windows 10 と Windows 11 でサポートされているすべてのデバイス用のネイティブ Windows アプリをビルドできます。 これには PC、タブレット、2 in 1、Xbox、Mixed Reality デバイスなどが含まれます。
Windows 用 React Native では、ほとんどまたはすべてのアプリ コードを JavaScript (または TypeScript) で記述し、フレームワークによりネイティブの UWP XAML アプリケーションが生成されます。 アプリでプラットフォーム API を呼び出す必要がある場合は、通常、多くのコミュニティ モジュール の 1 つを通じて行うことができます。また、モジュールがまだ存在しない場合は、簡単にネイティブ モジュールを記述して公開する ことができます。
Windows 用 React Native を選択する理由には、次のようなものがあります。
できる限り複数のプラットフォーム間でコードを共有したい。または。コードを共有する Web プロパティがある。
高速リフレッシュによる、開発者の生産性と内部ループの向上。
アプリの基本要素 (パフォーマンス、アクセシビリティ、国際化) がネイティブの UWP アプリと同じ。
JavaScript または TypeScript の使用経験があったり、好んで使っている
npmjs.com で JavaScript のみのライブラリや多くのネイティブ ライブラリを活用したい。
アプリでネイティブのコントロール、外観、アニメーション、および色が使用されるため、Windows で使用されるデザイン言語に統合される。 さらに、Windows 用 React Native は、フレームワークによってプラットフォーム API を呼び出したり、独自のビュー マネージャーとネイティブ モジュールを記述したりできるため、呼び出せる一連の API を侵害することがありません。
多数のコミュニティ モジュール により、コミュニティが大規模だったり、成長を続けたりしている。
Windows 用 React Native の詳細については、次のリンクを参照してください。