ユニバーサル Windows プラットフォーム (UWP) アプリとは

UWP は、Windows用のクライアント アプリケーションを作成する多くの方法の 1 つです。

注記

Windows アプリの開発を開始する場合は、UWP ではなく Windows アプリ SDKWinUI の使用を検討することをお勧めします。 UWP は引き続きサポートされていますが、積極的な開発は行われていません。 詳細については、「start developing Windows appsを参照してください。

Windows アプリを開発するために必要なツールをダウンロードするには、まず「Windows アプリ SDK 用のツールのインストール」を参照し、それから「最初のアプリの作成」を行います。

UWP は、Microsoft開発ストーリーのどこに収まりますか?

UWP は、Windows 10およびWindows 11デバイスで実行され、他のプラットフォームと組み合わせることができるアプリを作成するための 1 つの選択肢です。 UWP アプリでは、Win32 API と .NET クラスを利用できます (UWP アプリの場合は API セット UWP アプリの場合はDll、UWP アプリの場合は .NET を参照)。

UWP アプリの機能

UWP アプリには次のような特長があります。

  • 高いセキュリティ。UWP アプリはアクセスするデバイス リソースとデータを宣言します。 ユーザーは、そのアクセスを承認する必要があります。
  • Windowsを実行するすべてのデバイスで共通の API を使用できます。
  • デバイス固有の機能を使用して、異なるデバイスの画面サイズ、解像度、DPI に合わせて UI を調整することができます。
  • Windows 10またはWindows 11で実行されるすべてのデバイス (または指定したデバイスのみ) でMicrosoft Storeから使用できます。 Microsoft Storeには、アプリで利益を上げる複数の方法が用意されています。
  • コンピューターへのリスクや "コンピューターの劣化" を気にせずにインストールおよびアンインストールできます。
  • 魅力的にする方法: ライブタイル、プッシュ通知、WindowsタイムラインやCortanaの「中断した場所から再開」を利用してユーザーとのエンゲージメントを高めます。
  • C#、C++、Visual Basic、JavaScript でプログラム可能です。 UI には、WinUI、XAML、HTML、または DirectX を使用します。

これらをさらに詳しく見てみましょう。

セキュリテイ保護

UWP アプリでは、マイク、位置情報、Web カメラ、USB デバイス、ファイルなどへのアクセスに必要なデバイスの機能をマニフェストで宣言します。 アプリに機能が付与される前に、ユーザーがそのアクセスを確認して承認する必要があります。

すべてのデバイスに共通の API インタフェース

Windows 10、Windowsを実行するすべてのデバイスで共通のアプリ プラットフォームを提供するユニバーサル Windows プラットフォーム (UWP)が導入されました。 UWP コア API は、すべてのWindows デバイスで同じです。 アプリでコア API のみを使用する場合は、デスクトップ PC、Xbox、Mixed Reality ヘッドセットなどをターゲットにしているかどうかに関係なく、Windowsデバイスで実行されます。

C++/WinRT で記述された UWP アプリは UWP の一部である Win32 API にアクセスします。 これらの Win32 API は、すべてのWindows デバイスによって実装されます。

拡張 SDK が特定のデバイスの種類に固有の機能を公開する

ユニバーサル API を対象とする場合は、Windows 10 以降を実行するすべてのデバイスでアプリを実行できます。 ただし、UWP アプリでデバイス固有の API を利用したい場合は、そうすることもできます。

拡張 SDK では、さまざまなデバイスに特化した API を呼び出すことができます。 たとえば、UWP アプリで IoT デバイスをターゲットにしている場合、IoT デバイスに固有の機能をターゲットにしたプロジェクトに IoT 拡張 SDK を追加できます。 拡張 SDK の追加に関する詳細については、「拡張 SDK を使用するプログラミング」の拡張 SDK のセクションを参照してください。

特定の種類のデバイスでのみ実行されるようにアプリを作成し、その配布をMicrosoft Storeからその種類のデバイスのみに制限することができます。 または、実行時に API の存在を条件付きでテストし、結果に応じてアプリの動作を調整できます。 詳細については、「拡張 SDK を使用するプログラミング」のコードの記述のセクションを参照してください。

アダプティブ コントロールおよび入力

UI 要素では、そのレイアウトやスケールを調整して、アプリが実行されている画面のサイズや DPI に対応します。 UWP アプリは、キーボード、マウス、タッチ、ペン、ゲーム コントローラなど、複数の種類の入力で適切に動作します。 特定の画面サイズやデバイスに合わせて UI をさらに調整する必要がある場合は、新しく追加されたレイアウト パネルとツールを使用して、アプリが実行されるさまざまなデバイスやフォーム ファクターに合わせて調整可能な UI を設計できます。

Windows電源デバイス

Windowsは、次の機能を使用して複数のデバイスに UI をターゲットにするのに役立ちます。

  • UI をデバイスの画面の解像度に合わせて最適化するために役立つユニバーサル コントロールとレイアウト パネル。 たとえば、ボタンやスライダーなどのコントロールは、デバイスの画面サイズや DPI 密度に合わせて自動的に調整されます。 レイアウト パネルは、画面のサイズに基づいてコンテンツのレイアウトを調整するのに役立ちます。 デバイス間での解像度と DPI の相違を調整するアダプティブ スケーリング。
  • 一般的な入力処理によって、タッチ、ペン、マウス、キーボード、またはゲーム コントローラを介して入力を受け取ることができます。
  • さまざまな画面の解像度に合わせて変化する UI の設計に役立つツール。

アプリの UI の一部はデバイス間で自動的に対応します。 ただし、アプリのユーザー エクスペリエンスの設計では、アプリが実行されているデバイスへの対応が必要になる場合があります。 たとえば、フォト アプリが小型のハンドヘルド デバイスで実行されている場合、UI を片手での使用に適するように調整できます。 フォト アプリがデスクトップ コンピューターで実行されている場合、UI は広い画面スペースを利用するように調整する必要があります。

1 つのストアですべてのデバイスに対応する

統合アプリ ストアを使用すると、PC、タブレット、Xbox、HoloLens、Surface Hub、モノのインターネット (IoT) デバイスなどのWindowsデバイスでアプリを使用できるようになります。 開発者は、アプリをストアに提出し、すべての種類のデバイスまたは選択した種類のデバイス向けに販売できます。 Windows デバイスのすべてのアプリを 1 か所で送信して管理します。 UWP 機能を使用して最新化し、Microsoft ストアで販売する C++ デスクトップ アプリがありますか? 問題ありません。

UWP アプリは、詳細なテレメトリや分析のために Application Insights に統合されています。これは、ユーザーを理解し、アプリの品質を向上させるために欠かせないツールです。

UWP アプリは、MSIX を使用してパッケージ化し、Microsoft Storeまたはその他の方法で配布できます。 MSIX を使用すると、アプリがどのような方法で配布されても、アプリを更新できます。「ストアに公開されていないアプリ パッケージをコードから更新する」をご覧ください。

アプリの収益の獲得

アプリを収益化する方法を選択できます。 アプリで収益を得る方法は多数あります。 必要なのは、ニーズに合った最適な方法を選ぶことだけです。たとえば、次のような方法があります。

  • 有料のダウンロードは最も簡単な方法です。 必要な作業は価格の指定だけです。
  • 試用版を使うとユーザーは購入前にアプリを試すことができ、従来の "フリーミアム" オプションよりも目につきやすく、コンバージョンも簡単です。
  • セール価格はユーザーに対して動機付けとなります。
  • アプリ内購入。

関連するリアルタイム情報をユーザーに表示して繰り返し集客する

UWP アプリに対するユーザーのエンゲージメントを維持するためのさまざまな方法があります。

  • ライブ タイルとロック画面タイルでは、アプリからのコンテキストに関連したタイムリーな情報をひとめでわかるように表示します。
  • プッシュ通知は、ユーザーがリアルタイムの通知に注目できるようにします。
  • ユーザー アクティビティでは、異なるデバイスでも、アプリで前回中断したところから作業を始めることができます。
  • アクション センターでは、アプリの通知を整理できます。
  • バックグラウンドの実行とトリガーにより、ユーザーが必要とするときにアプリが有効になります。
  • アプリで音声と Bluetooth LE デバイスを使うと、ユーザーはそれらのデバイスを中心に広がる世界とやり取りすることができます。
  • 音声コマンド機能をアプリに追加するには、Cortana を統合します。

使い慣れた言語の使用

UWP アプリでは、オペレーティング システムによって提供されるネイティブ API Windows ランタイムを使用します。 この API は C++ で実装され、C#、Visual Basic、C++、JavaScript でサポートされています。 UWP アプリを作成するための一部のオプションを次に示します。

  • XAML UI と、C#、VB、または C++
  • DirectX UI と C++
  • JavaScript と HTML
  • WinUI

準備

準備」を確認し、アプリの作成を始めるために必要なツールをダウンロードしてから、初めてのアプリを作成してください。

アプリをデザインする

Microsoftデザイン システムは Fluent という名前です。 Fluent Design System は、すべての種類のWindows搭載デバイスで美しく動作するアプリを作成するためのベスト プラクティスと組み合わせた一連の UWP 機能です。 Fluent エクスペリエンスは、タブレット、ノート PC、デスクトップ、テレビから、仮想現実デバイスまで、さまざまなデバイスに対応し、自然に操作できます。 Fluent Design の概要については、UWP アプリ向けの Fluent Design System に関するページを参照してください。

適切な設計とは、アプリの外観や機能に加えて、ユーザーによるアプリの操作方法を決定するプロセスです。 ユーザー エクスペリエンスは、ユーザーがアプリでどの程度満足するかを判断する場合に大きな役割を果たします。そのため、この手順は必ず守ってください。 Design の基本では、ユニバーサル Windows アプリの設計について説明します。 ターゲットにするすべての異なるフォーム ファクターでアプリを使用する際の操作エクスペリエンスを検討するために役立つ、デバイスの基本情報に関するページをご覧ください。

さまざまなデバイスでの操作に加えて、複数のデバイスで動作する利点を取り入れるようにアプリの計画を行います。 次に、例を示します。

サービスの追加

アプリをストアに提出する

Partner Center を使用すると、Windows デバイスのすべてのアプリを 1 か所で管理および送信できます。 Microsoft Storeで公開するアプリを送信する方法については、「Publish Windows アプリとゲーム>

新しい機能が追加されたことで、より高度な管理が可能になった一方、プロセスは簡単になりました。 また、詳しい分析レポートに加えて、支払いの詳細も得られるようになりました。いずれもアプリの宣伝と顧客エンゲージメントの獲得に役立ちます。

入門資料については、「Windows 10 デバイス用Windows アプリの構築の概要」を参照してください>

高度なトピック

  • User アクティビティを使用して、アプリ内のユーザー アクティビティが Windows タイムラインと Cortana の [中断した場所を選択] 機能に表示されるようにする方法について説明します。
  • UWP アプリのタイル、バッジ、通知の使用方法に関するページを参照してください。
  • UWP アプリで利用可能な Win32 API の完全な一覧については、UWP アプリの API セットおよび UWP アプリの DLL に関するページをご覧ください。
  • .NET UWP アプリの記述の概要については、 .NET のUniversal Windows アプリに関するページを参照してください。
  • UWP アプリで使用できる.NETの種類の一覧については、「UWP アプリの.NET
  • .NET とネイティブ AOT を使用して UWP アプリを変更する - 最新の.NET機能にアクセスするための新規および既存の UWP アプリに推奨
  • .NET Native を使用したアプリのコンパイル - レガシ ツールチェーン (セキュリティ更新プログラムのみ)
  • 既存のデスクトップ アプリにWindows ユーザー向けの最新のエクスペリエンスを追加し、Desktop Bridge を使用してMicrosoft Storeで配布する方法について説明します。

ユニバーサル Windows プラットフォームとWindows ランタイム API の関係

ユニバーサル Windows プラットフォーム (UWP) アプリを構築している場合は、"ユニバーサル Windows プラットフォーム (UWP)" と "Windows ランタイム (WinRT)" という用語を多かれ少なかれ同義として扱うので、多くの走行距離と利便性を得ることができます。 ただし、テクノロジの実体を明らかにして、この 2 つの概念の違いを確認しておくことも可能です。 この最後のセクションは、この点に興味があるユーザーを対象としています。

Windows ランタイム API と WinRT API は、Windows API の進化です。 当初、Windows アプリはフラットな C スタイルの Win32 API を使用して作成され、そのアプリには COM API (DirectX が追加されました。 Windows フォーム、WPF、.NET、マネージド言語などの後のテクノロジでは、独自の API テクノロジを使用してWindows アプリを記述する独自の方法も提供されます。 内部では、Windows ランタイムは COM の次のステージです。 実際のアプリケーション バイナリ インターフェイス (ABI) レイヤーで、COM におけるそのルーツが可視化されます。 しかし、COM とは異なり、Windows ランタイムは、より自然な方法でさまざまなプログラミング言語から呼び出し可能に設計されています。 その結果、Windows ランタイムへのアクセスは、言語プロジェクションと呼ばれるものを介して利用できるようになります。 プロジェクションでは COM の詳細が非表示になり、特定の言語に対してより自然なプログラミング エクスペリエンスが提供されます。 C#、Visual Basic、標準 C++、JavaScript などへのWindows ランタイム言語プロジェクションがあります。 さらに、適切にパッケージ化されると (Desktop Bridge を参照)、Win32、.NET、WinForms、WPF、UWP など、さまざまなアプリケーション モデルで構築されたアプリから WinRT API を呼び出すことができます。

UWP は、Windows ランタイムの上に構築されたアプリケーション モデルです。 技術的には、UWP アプリケーション モデルは CoreApplication に基づいていますが、選択したプログラミング言語によっては、その詳細が非表示になる可能性があります。 UWP は単一のバイナリを記述するのに役立ちます。選択した場合は、Microsoft Storeに公開し、上で説明したように、さまざまなデバイス フォーム ファクターで実行できます。 UWP アプリのデバイス到達範囲は、Windows ランタイム API のうち、アプリで呼び出すことを制限するサブセット、または条件付きで呼び出すサブセットによって決まります。

このセクションでは、Windows ランタイム API の基盤となるテクノロジと、ユニバーサル Windows プラットフォームのメカニズムとビジネス価値の違いについて説明できました。