Windows アプリの作成の概要
内容
このモジュールでは、3 つの異なる Windows テクノロジを使用する 3 つの異なる方法で、同じアプリを作成する方法を学習します。 C# を使用しますが、これをユニバーサル Windows プラットフォーム (UWP)、Windows Presentation Foundation (WPF)、Windows フォームの 3 つの開発フレームワークと組み合わせます。
その後、Windows Template Studio (WTS) を紹介します。モダン アプリの中核を最小限の労力でいかにすばやく生成できるかを確認できます。
3 つのプラットフォームについて
長年にわたり、テクノロジや要件が異なることにより、Windows で実行されるアプリケーションの作成方法が数多く開発されてきました。 その目標は変わることはなく、常に開発者が容易にユーザー インターフェイスを作成して、不可欠な定型コードを生成できるようにし、独自の機能を追加してアプリを便利なものにすることです。 テキストをピクセル単位で表示したり、メニューやウィンドウを構成する図形を描画したりするコードを記述したいと思っている開発者は 1 人もいません。 開発者が望んでいるのは、これらすべての機能 (に加え、他の多くの機能も) 処理する、一貫性を備え、実績があり、信頼性の高い、すぐに利用できるコードを作成することです。
そのために、Microsoft では、数多くのツールとライブラリを作成してきました。 このラーニング パスでは、UWP、WPF、および Windows フォームの 3 つについて見ていきます。 基本的なアプリケーションをビルドするための方法は、3 つともよく似ています。
ユニバーサル Windows プラットフォーム
Windows 10 ではユニバーサル Windows プラットフォーム (UWP) が導入され、Windows を実行する各デバイスで共通のアプリ プラットフォームが提供されます。 UWP のコア API は、すべての Windows デバイスで同じです。 アプリでコア API のみを使用する場合は、デスクトップ PC、Xbox、複合現実ヘッドセットなど、あらゆる Windows 10 デバイスで動作します。
Windows をターゲットとし、Windows の API と機能に邪魔のない形でアクセスしたい場合は、UWP が最適です。 UWP には、最新のアプリケーション プラットフォームの他の利点もあります。 次のような利点があります。
- DPI と画面サイズの変更に適応するための組み込みサポートを備えた Extensible Application Markup Language (XAML) ベースの UI モデル。
- ユーザーがアプリにデバイス機能へのアクセス権を明示的に付与するセキュリティ モデル。
- クリーン インストールと、Microsoft Store への直接公開機能をサポートするパッケージ化モデル。
Windows Presentation Foundation
Windows Presentation Foundation (WPF) は、デスクトップ クライアント アプリケーションを作成するための UI フレームワークです。 WPF の開発プラットフォームでは、次のような幅広いアプリケーション開発機能のをサポートしています。
- アプリケーション モデル
- リソース
- コントロール
- グラフィックス
- Layout
- データ バインディング
- ドキュメント
- セキュリティ
これは .NET の Windows 固有のライブラリの一部であるため、ASP.NET Core や Windows フォームを使用して .NET でアプリケーションをビルドした経験があれば、プログラミングに慣れているはずです。 WPF では XAML を使用してアプリケーション プログラミング用の宣言型モデルを提供します。
WPF と Windows フォームは、C++ や Win32 より高いレベルのコーディングの生産性が必要な場合に最適です。 最新の .NET の UI 以外の部分はクロスプラットフォームになったため、一部の .NET のコードとライブラリを macOS や Linux などの他のプラットフォームと共有することもできます。
Windows フォーム
Windows フォームは、.NET 用のオープンソースのグラフィカル ユーザー インターフェイスであり、一般的なアプリケーション タスクを簡略化する標準の基本クラス ライブラリと API のセットです。 Visual Studio などの開発環境を使用する場合、情報を表示して、ユーザーからの入力を要求し、ネットワーク経由でリモート コンピューターと通信する Windows フォームのスマート クライアント アプリケーションを作成できます。 Windows フォームの最新のプラットフォームは、.NET Framework の古い UI プラットフォームをベースとするため、WPF と UWP によって提供される機能の一部が不足しています。
このトレーニング モジュールでは、これら 3 つのプラットフォームに焦点を当てています。 ただし、開始する前に、WinUI と Win32 という他の 2 つのオプションを簡単に見てみましょう。
WinUI と Windows App SDK
WinUI 3 は、(Windows SDK から切り離された) Windows App SDK に付属するネイティブ UI プラットフォーム コンポーネントです。 Windows App SDK には、Windows 10 以降を対象とした実稼働デスクトップ アプリを作成し、Microsoft Store に公開するために使用できる、API とツールの統合セットが用意されています。
Note
現時点では、Windows UI ライブラリ (WinUI) に、UWP 用 WinUI 2 と Windows App SDK の WinUI 3 という異なる 2 つの世代が存在します。 どちらも、Windows 10 以降の運用環境向けアプリで使用できますが、開発ターゲットはそれぞれで異なります。 「WinUI 3 と WinUI 2 の比較」をご覧ください。
Windows アプリの作成については、もう 1 つのオプションである Win32 を語らずして説明することはできません。
Win32 (Windows API) と C++
Win32 API (より正確にいうと、Windows API) によって、アプリケーションで Windows の機能を使用できるようになります。 この API を使用することで、各バージョンに固有の機能を活用しながら、すべてのバージョンの Windows で正常に実行するアプリケーションを開発できます。 Win32 は、最高レベルのパフォーマンスや効率を実現する必要がある場合や、ネイティブの OS 機能にアクセスしたり、DirectX テクノロジをターゲットとしたりする場合にお勧めします。
この方法では、メモリの割り当てや、SSE や AVX 命令などのパフォーマンス重視の CPU 機能を直接制御することで、アプリの最高のパフォーマンスを実現できます。 低レベルで高パフォーマンスのグラフィックス アクセスの場合は、DirectX テクノロジをターゲットとするのが最適な方法です。 C++ コードは、すべての種類の Windows アプリケーション間で、また Windows 以外のプラットフォームと共有することができます。 その代償として、たとえば、C# や WPF と比較すると、基本的な機能でも実装するにはかなりの作業量になる可能性があります。
Note
詳細については、「Windows 用アプリの作成: 開発テクノロジの選択」を参照してください。
作成するアプリ
このモジュールで作成するアプリはシンプルなものです。 ボタンを選択すると、テキストが表示され、色が変わります。
これは賞を取るような類いのものではありませんが、開発プラットフォーム間の類似点と相違点を示してくれます。
納得したら、次に進んで Windows Template Studio を試すことができます。 WTS を使って、もう少し目を引くアプリをビルドします。
開始の準備はできていますか?