この記事のベスト プラクティスは、世界中で約 15 億人の多様な PC ユーザーにリーチし、喜びを提供する優れた Windows アプリを構築するのに役立ちます。 この記事は、次のセクションに分かれています。
- ユーザー エクスペリエンス: このセクションのガイダンスは、アプリの外観、操作性、使いやすさの向上に役立ちます。
- パフォーマンスと基礎: このセクションのガイダンスは、アプリのパフォーマンスとリソース使用率の向上に役立ちます。
- オペレーティング システム/ハードウェアの最適化: このセクションのガイダンスは、さまざまなハードウェア構成のパッケージ化と配布を最適化するのに役立ちます。
- アプリケーションの検出と管理: このセクションのガイダンスでは、ユーザーがアプリを簡単に検出、インストール、更新、アンインストールできます。
- アクセシビリティ: このセクションのガイダンスは、アクセシビリティと包括的なエクスペリエンスを構築するのに役立ちます。
- セキュリティとプライバシー: このセクションのガイダンスは、セキュリティ リスクを軽減し、ユーザーのプライバシー ニーズを満たすのに役立ちます。
ユーザー エクスペリエンス (UX)
Windows 11は、Windows オペレーティング システムを視覚的に進化させ、Windows の外観、操作性、使いやすさを向上させます。 調査によると、ユーザーは Windows アプリに対して高い期待を持っています。
- Windows アプリは、さまざまな入力で動作することが期待されています。
- 現在および将来のデバイスでネイティブに見える設計と対話動作のパターンが期待されています。
- 最新のウィンドウ化ワークフローとシェル統合ポイントのサポートが期待されています。
アプリケーションが Windows スタイルと標準的な Windows 動作に準拠している場合、ユーザーは対話式操作パターンを再学習する必要はありません。 この一貫性により、ユーザーはアプリを使用しやすくなります。 見栄えの良いアプリは優れた第一印象を生み出すことができますが、使いやすく、ユーザーが目標を達成するのに役立つアプリは、大きな印象を与えます。
Windows 11は、Windows 11設計原則に基づいて構築されています。 アプリを構築するときにこれらのガイドラインに従うと、優れたアプリ エクスペリエンスに対する顧客の期待に応えるのに役立ちます。 最新の推奨される Windows アプリケーション UI/UX パターンを Windows アプリケーションに組み込むことを検討するときは、次の 5 つの領域に焦点を当てます。
- レイアウト
- UI インタラクション
- 視覚スタイル
- ウィンドウの動作
- シェル統合ポイント
WinUI には、共通のコントロールを使用して、これらのエクスペリエンスとスタイルの多くをサポートする組み込みサポートが用意されています。 WinUI を使用できない場合は、 デザイン ツールキット と WinUI 3 ギャラリーで示されているスタイルをエミュレートすることを検討してください。
レイアウト
Windows アプリケーションは、ユーザーのニーズに合ったさまざまな構成で実行されます。 さまざまなディメンション、デバイス、ウィンドウ サイズ、DPI 設定、スケール設定にわたって、アプリケーションのウィンドウとページをテストします。 小さいディメンションにサイズ変更された場合でも、アプリケーションは期待どおりに動作する必要があります。
DPI 対応
WinUI アプリケーションは、実行されているディスプレイごとに自動的にスケーリングされます。 その他の Windows プログラミング テクノロジ (Win32、WinForms、WPFなど) では、モニターごとの DPI スケーリングは自動的には処理されません。 モニターごとのDPIスケーリングをこれらのテクノロジーでサポートするための追加の作業が行われない場合、アプリケーションがぼやけて表示されたり、サイズが正しく表示されなかったりする可能性があります。 詳細については、「 Windows での高 DPI デスクトップ アプリケーション開発」を参照してください。
レスポンシブ レイアウト
レスポンシブ デザインの手法を使用して、さまざまなウィンドウ サイズに合わせてアプリ ページを最適化します。 ユーザーが常にコンテンツにアクセスできるように、アプリウィンドウのサイズがどんなに小さくなっても、「パンまたはスクロール」のガイドラインに従ってください。
UI インタラクション
Windows ユーザーは、さまざまな入力デバイスからアプリケーションを操作できます。また、Windows には、ユーザーが使い慣れている固有のシステム エクスペリエンスがあります。 アプリケーションがこれらのエクスペリエンスに準拠している場合、ユーザーはアプリケーションを確実に使用することができます。 アプリがこれらの規則に従っていない場合、ユーザーは混乱や不満を感じる可能性があります。
オブジェクト上のコマンド
コンテキスト メニュー、スワイプ コマンド、キーボード ショートカットなどのオブジェクト上のコマンドを使用します。 Windows 11は右クリック コンテキスト メニューの動作を改善するため、アプリでコンテキスト メニューを作成する場合は、最新の context メニュー 統合ガイダンスを参照してください。 WinUI テキスト コントロールでは、切り取り、コピー、貼り付けのコマンドが自動的に公開されますが、他のコントロールでは、これらのコマンドをサポートするために追加の作業が必要になる場合があります。
テキスト操作
アプリケーションにテキストがある場合、ユーザーはテキストを選択してコピーできることを期待します。 テキストが編集可能な場合は、切り取って貼り付けることも望みます。 一貫したショートカットを提供することで、ユーザーはタスクをより効率的に完了させることができます。 ユーザーがキーボード、マウスまたはトラックパッド、タッチ、ペンを使用してこれらのアクションを実行できることを確認します。
パンニングとスクロール
スクロールする必要のない 1 つのページ内にアプリケーションの UI が完全に収まるのは一般的ではありません。 少数の UI 要素しかない場合でも、ユーザーはアプリ ウィンドウのサイズを自由に変更し、一部の UI 要素を非表示にすることができます。 アプリケーションの UI でスクロールとパン (キーボード、マウス、トラックパッド、タッチ、ペンを使用) が適切にサポートされていることを確認して、表示されているウィンドウ領域から移動する可能性のある UI 要素をユーザーがaccessできるようにします。
視覚スタイル
Windows 11は、Windows 11設計の原則:楽、落ち着き、個人的、身近、完全+コヒーレントに基づいて構築されています。 これらの原則に従ったエクスペリエンスは、Windows での優れたユーザー エクスペリエンスをもたらします。
素材: アクリルとマイカ
アクリルとマイカは、対話型 UI コントロールに独特の "隠された" ビジュアル スタイルを提供するビジュアル素材です。
- アクリルを使用して、コンテキスト メニュー、フライアウトなど、ユーザーが解除できる一時的なサーフェスに半透明のスタイルを適用します。
- Mica を使用して、有効期間の長い UI サーフェスに微妙なアダプティブ 濃淡を追加します。
マイカは非常にパフォーマンスの高い素材であり、アプリがアクティブか非アクティブかの状態を伝えるために、TitleBar のような長時間表示される UI サーフェスに使用することを想定しています。 マイカは、バッテリの消費を抑えながら、視覚的な楽しみもあるテクスチャです。
- マイカは、アプリのアクティブな状態を伝えるためにアプリの UI のベース レイヤーに使用され、アプリにフォーカスがないときには単色にフォールバックされます。 そのため、TitleBar の背景にマイカを使用することをお勧めします。
- NavigationView などの一部のコントロールは、既に既定の動作が組み込まれています。
- Mica を使用するアプリがWindows 10または旧バージョンのWindowsで実行されると、スムーズに変化します (Mica は単色に切り替わります)。
- マイカは長期間使用される表面に使用するものであり、一時的な表面に使用することをアクリルとは異なります。
- アクリル素材を使用している場合は、色をより鮮やかに更新したので、既存の アクリルガイダンス に従ってください。
濃色テーマと淡色テーマ
ダーク テーマとライト テーマを使用すると、ユーザーはアプリを視覚的な好みに合わせて調整できます。 Windows 11は、純粋な白と黒を避けることで、目に柔らかい色調を更新し、色をより楽しくします。
WinUI では、既定で濃色テーマと淡色テーマの切り替えがサポートされています (「XAML テーマ リソース」を参照)。 Win32 アプリについては、「Win32 アプリでの淡色テーマと濃色テーマのサポート」を参照してください。 (Win32 アプリのタイトル バーは、ダーク テーマに自動的に適応しません。必ず、この記事の タイトル バーのガイダンス に従ってください)。
更新された UI 要素
Windows 11は、アプリで活用できる Windows オペレーティング システムに美しい UI イノベーションをもたらします。 Windows 11 geometry は、最新のアプリ エクスペリエンスをサポートします。 徐々に丸くなる角、入れ子になった要素、および一貫性のある間隔の組み合わせにより、目的の統一性と使いやすさを重視した、ソフトで落ち着きがあり、親しみやすい効果が実現されています。
視覚的および動作の変更は WinUI に組み込まれています。 WinUI を使用して、Windows 開発チームが既に行った作業を活用できます。 WinUI を使用できない場合は、 デザイン ツールキット と WinUI 3 ギャラリーで示されているスタイルをエミュレートすることを検討してください。
一般的なコントロール は、これらの更新プログラムをすぐに利用できる 1 つの方法です。 最新の共通コントロールをできるだけ使用することで、互換性とアクセシビリティの利点を無料で得ることができます。 また、メンテナンスとテストのコストを考慮すると、これらの共通コントロールは、独自のカスタム コントロールを構築するよりもコスト効率が高くなります。
コンテキスト メニュー拡張機能と共有ターゲット
コンテキスト メニューは、ユーザーが操作しているコントロールのコンテキストに関連するコマンドのメニューを表示するために、ユーザーが右クリックまたは長押し操作で呼び出すショートカット メニューです。 ユーザーは、Windows 全体で一貫したコンテキスト メニューの外観と動作が提供されることを求めています。 可能な限りプラットフォーム提供のコンテキスト メニューを使用して、システムの他の部分と一貫性を保つようにします。
Windows 11は、File Explorerと [共有] ダイアログの右クリック コンテキスト メニューでのコンテキスト ファイル操作の動作を調整します。 アプリでコンテキスト メニューを作成したり、共有ターゲットを定義したりする場合は、Windows 11で適切に動作するようにいくつかの変更を加える必要がある場合があります。
コンテキスト メニュー
Windows 11では、いくつかの方法でコンテキスト メニューの動作をFile Explorer改善しました。
- [切り取り]、[コピー]、[貼り付け]、[削除] などの一般的なコマンドがメニューの上部に移動されました。
- Open と Open with がグループ化されるようになりました。
- アプリの拡張機能は、シェルの動詞の下にグループ化されました。 複数の動詞を持つアプリは、アプリの属性と共にポップアップにまとめられました。
- クラウド ファイル プロバイダー アプリ は、ファイルをハイドレートまたは退避するためにシェル コマンドの横に配置されます。
- Windows 10の古いコンテキスト メニュー (以前のコンテキスト メニューの使用頻度の低いコマンド) は、メニューの下部にある Show more options 項目から引き続き使用できます。 Shift + F10 またはキーボード メニュー キーもWindows 10コンテキスト メニューを読み込みます。
アプリでコンテキスト メニュー拡張機能が定義されている場合、拡張機能が新しいWindows 11コンテキスト メニューに表示されるようにするには、次の要件を満たす必要があります。 それ以外の場合、アプリのコンテキスト メニュー拡張機能は、[ その他のオプションの表示 ] 項目で使用できる古いコンテキスト メニューに表示されます。
- コンテキスト メニュー拡張機能は、 IExplorerCommand インターフェイスを使用して実装する必要があります。 IContextMenu を実装するコンテキスト メニュー拡張機能は、代わりに古いコンテキスト メニューに表示されます。
- 実行時にパッケージ ID が設定されるように、アプリは "パッケージ化アプリ" である必要があります。 アプリをパッケージ化するための一部のオプションについては、「 パッケージ ID を必要とする機能 」を参照してください。
[共有] ダイアログ
Windows 11の場合、いくつかの方法で [共有] ダイアログの動作が改善されました。
- 近くの共有に関する検出可能性設定がダイアログの上部に表示され、下部にはその他の設定が表示されます。
- パッケージ化されていないデスクトップ アプリや Microsoft Edge 経由でインストールされた PWA など、すべてのアプリがターゲットとして [共有] ダイアログに表示されるようになりました。
- 以前にパッケージ化されていないデスクトップ アプリは、外部の場所でパッケージ化した場合、共有ダイアログにターゲットとして参加できます (外部の場所で パッケージ化してパッケージ ID を付与するを参照)。 そのto do方法を示すサンプル コードについては、SparsePackages サンプル アプリを参照してください。
- PWA が Web 共有ターゲット API を実装している場合、PWA は [共有] ダイアログに参加できます。
アイコンとタイポグラフィ
Windows 11には、更新されたアイコン ("Segoe Fluent Icons")、アニメーションアイコンのサポートが強化され、新しいUIフォント ("Segoe UI Variable") が導入されています。 可能な限り、Windows 11上でこれらの新しいアイコンとフォントを使用して、一貫性を保ってください。 この新しいフォントは、よりソフトな形状を実現し、テキストの読みやすさが格段に向上しています。
- モノライン アイコンには "Segoe Fluent Icons" という新しいアイコンが導入されました。 WinUI 2.6 以降のコントロールには、新しいアイコンとタイポグラフィが自動的に使用されます。
- ファイルの種類のアイコンが更新されました。
imageres.dllまたはshell32.dllでアイコンを使用しているアプリの場合、アイコンは自動的に更新されます。 それ以外の場合は、スタイルの手動更新が必要になることがあります。 - アプリ アイコン - スタート画面やタスク バーのランチャーなどの場所で使用される Windows アプリのアイコン に関する最新のガイダンスに従います。
- アニメーション アイコン - Lottie アニメーションのサポートが WinUI に追加され、 AnimationIcon 機能を使用してアイコンを意味のある方法でアニメーション化することをお勧めします。 他のスタイルの変更と同様に、WinUI 2.6 以降が必要です。
- コードに
Segoe UIを指定する XAML で書かれたカスタム エクスペリエンスの場合は、代わりにSegoe UI Variableを指定してください。
注
新しいフォントを使用するアプリがWindows 10または下位レベルで実行されると、古いフォントを使用するようにフォールバックし、適切に低下します。
ウィンドウの動作とスタイル
アプリケーションは、Windows が提供するフレームで実行されます。 ユーザーは、組み込みの Windows の外観と動作がアプリ ウィンドウ間で一貫性を持つ必要があります。 Windows 11でユーザーが期待どおりにアプリの外観と機能を確認するには、ここに記載されている機能のサポートを検討してください。
タイトル バーとキャプション ボタン
ユーザーはタイトル バーとキャプション ボタン (最小化、最大化、閉じる) を操作して、アプリ ウィンドウのサイズ変更、移動、閉じます。 一貫性のあるエクスペリエンスは、ユーザーがアプリケーションをスムーズに使用するのに役立ちます。 Windows のタイトル バーとキャプション ボタンのデザインについてはWindows appタイトル バーを参照してください。
Windows App SDK API を使用して、WinUI、.NET、WinForms、WPF アプリのタイトル バーでアプリコンテンツを
スナップ レイアウト
ウィンドウ スナップはWindows 11で大幅に強化され、[スナップ レイアウト] メニューは、ユーザーがウィンドウ スナップの機能を検出して使用するのに役立つ新機能です。 [スナップ レイアウト] メニューを使用して、さまざまなスナップ レイアウトでアプリをテストし、アプリがさまざまなスナップ サイズ (例: 画面の 1/2、1/3、1/4) をサポートしていることを確認します。
スナップ レイアウトは、ウィンドウの最大化ボタンの上にマウスを置くか、Win + Z キーを押すことで簡単に使用できます。使用できるレイアウトを表示するメニューを呼び出した後、レイアウト内のゾーンをクリックしてウィンドウをその特定のゾーンにスナップし、さらにスナップ アシストを使用してウィンドウのレイアウト全体の構築を完了することができます。 スナップ レイアウトは、現在の画面サイズと向きに合わせて調整され、横長の大画面に 3 つのウィンドウを横に並べて表示したり、縦長の画面には上下に重ねて表示したりすることができます。
ほとんどのアプリでは、スナップ レイアウトを含むメニューが自動的にサポートされますが、場合によっては、それを実現するために少し作業が必要になることがあります。
- システムによる境界線と影の描画を許可します。
- 独自の境界線と影を描画する必要がある場合:
- Microsoft の API を使用して、キャプション ボタンの描画と実装をプラットフォームに行わせます。 Windows 11 上のデスクトップ アプリの
Support スナップ レイアウトを参照してください。
- Microsoft の API を使用して、キャプション ボタンの描画と実装をプラットフォームに行わせます。 Windows 11 上のデスクトップ アプリの
Windows App SDK のウィンドウ管理機能を使用すると、次の機能が自動的に利用できるようになります。
- 事前に定義されたテンプレートを使用して、ウィンドウのスタイルを構成します。
- ウィンドウのタイトル バーをカスタマイズします。
丸い角
私たちはWindows 11でウィンドウの境界線の角を丸めました。 Microsoft のユーザー調査チームは、角を丸い形状にすると、心理的に安心感を覚え、アプリの UI をはるかに把握しやすくなることを発見しました。 これにより、ユーザーは威圧感を覚えず、アプリをより魅力的に感じられるようになります。 丸みの程度も慎重に選択しました。 企業とユーザーの調査結果を踏まえて、プロフェッショナルな印象と、よりソフトで魅力的な印象とのバランスを検討しました。
ほとんどの場合、Windows 11では、アプリのウィンドウの角が既定で丸められます。 アプリ ウィンドウをカスタマイズし、角が丸くない場合は、いくつかできることについて「デスクトップ アプリで丸みを帯びた角を Windows 11 で適用する」を参照してください。 また、ウィンドウの境界線と影をカスタマイズしないようにする必要があります。これにより、システムがウィンドウの角を丸めるのを防ぐことができます。
シェル統合ポイント
Windows シェル統合を使用すると、フォアグラウンドで実行されていない場合や画面上に表示されている場合でも、アプリのメリットを得ることができます。 アプリが Windows とうまく統合されると、アプリは他のアプリと共にユーザーのワークフローの一部になり、シームレスなエクスペリエンスの作成に役立ちます。
トースト通知
トースト通知は、ユーザーの画面の下部と通知センターに表示される Windows の通知です。
- 通知をカスタマイズし、操作可能にし、通知がユーザーに役立つことを確認します。 ユーザーが知りたいことではなく、ユーザーが望むものを与えます。
- ノイズの多い通知を避けます。 アプリの中断が多すぎると、ユーザーはアプリに対してこの重要な通信チャネルをオフにできます。
- ユーザーの意図に答えます。 通知を選択すると、通知のコンテキストでアプリが起動する必要があります。 このガイドラインの唯一の例外は、ユーザーがバックグラウンド タスク (クイック返信など) にアタッチされている通知のボタンを選択した場合です。
- 一貫した通知センター エクスペリエンスを提供します。 以前の通知をクリアして、通知センターを整理します。
トースト通知の詳細については、通知の設計の基本に関するページを参照してください。
パフォーマンスと基本原理
Windows ユーザーは、Windows アプリが優れたパフォーマンスと基本要素を示すことを期待しています。 アプリを設計して構築するときは、メモリ使用量、電力消費量、応答性、信頼性、および長期的な持続可能性への影響を最適化することに留意してください。 アプリケーションの基礎とパフォーマンスをテストおよび測定するための時間を割り当てることで、ユーザーが一流のエクスペリエンスを得られるようにします。
このセクションのベスト プラクティスに従うと、これらの条件全体で顧客の期待を満たすことができます。
-
- フォアグラウンド メモリの使用量を減らします。
- バックグラウンド作業を最小限に抑えます。
- バックグラウンドでリソースを解放します。
- アプリケーションがメモリをリークしないようにします。
-
- オプション機能の "利用に応じた料金制度" を有効にします。
- キャッシュのサイズが効率的であることを確認します。
- ディスク効率の高い方法で新しいエクスペリエンスを実装します。
- 可能な場合は、個々のバイナリ サイズを最適化します。
バックグラウンド作業を最小限に抑えることによる、消費電力とバッテリ寿命の改善:
- バックグラウンドで CPU をウェイクアップしたり、システム リソースを使用したりしないでください。
-
- 主要な操作シナリオを定義し、測定する ETW イベントを追加します。
- ユーザーの期待に関連付けられている相互作用クラスに基づいて目標を設定します。
詳細については、 パフォーマンスと基礎の概要を参照してください。 この記事では、「アプリケーションのパフォーマンスとは何か、なぜ重要なのか」や「Windows アプリケーションのパフォーマンスを測定するために使用できるツール」などの質問に回答します。また、アプリケーションが地球に与える影響を減らすことで、パフォーマンス エンジニアリングが持続可能性とどのように交差するかに関するケース スタディ、関連ブログ、サポート コミュニティ、情報にもリンクしています。
オペレーティング システムとハードウェアの最適化
Windows アプリは、さまざまな方法でビルド、パッケージ化、配信できます。 このセクションのベスト プラクティスは、ハードウェア構成全体でアプリケーションのこれらの側面を最適化するのに役立ちます。
Windows は、従来のデバイスだけでなく、ますます多様化する最新のデバイスでも実行されています。 現在のデバイスには、x86/x64 ベースだけでなく、Arm ベースのアーキテクチャもあります。マウスとキーボードだけでなく、タッチスクリーン、タッチパッド、ペンも使用できます。カメラ、GPS、ジャイロスコープのようなセンサーを使用する。と素晴らしいビジュアルだけでなく、ハードウェアアクセラレータ人工知能(AI)を可能にするグラフィックスとニューラル処理チップセットを備えています。 お客様は、(お金を払って購入した) ハードウェアがアプリによって活用され、デバイスのフォーム ファクターが認識され、適切に最適化されたエクスペリエンスが提供されることを期待しています。
- さまざまな入力と対話をサポートする - 入力と対話の概要
- AI を活用した生産性を実現するには、Win ML - Windows Machine Learning 入門を使用します。
- ローカルで実行される AI モデルを使用し、Copilot+ PC 上の Windows 機能で Microsoft Foundry を強化する - Windows ML とは。
- Copilot+ PC でローカルに実行される Windows App SDK および machine learning (ML) モデルで、Windows AI API でサポートされているさまざまな AI を利用する機能を使用します ( Windows AI API とは何ですか?。
Azure Virtual Desktop と MSIX アプリのアタッチ
エンタープライズ環境でアプリを最適に実行するには、MSIX アプリアタッチのサポートを追加します。
MSIX アプリアタッチを使用すると、MSIX アプリケーションを物理アプリケーションとvirtual machinesの両方に配信できます。 これは、クラウド上で実行されるデスクトップおよびアプリ仮想化サービスである Azure Virtual Desktop (AVD) 専用に作成されています。 MSIX アプリ アタッチと AVD を使用すると、ユーザーのサインイン時間を短縮し、企業のインフラストラクチャ コストを削減できます。
Arm 版 Windows
Windows は Arm デバイスで実行できます。 Arm PC は、バッテリ寿命の延長とモバイル データ ネットワークの統合サポートの恩恵を受けます。 また、これらの PC にはアプリケーションの互換性が十分に備わっており、既存の x86 と x64 のアプリケーションを変更せずに実行できます。
最適なパフォーマンスを得るために、フル Arm バージョンを構築するか、ネイティブ パフォーマンスの利点を最大限に活用するコードベースの部分を最適化することで、アプリでエネルギー効率の高い Arm プロセッサ アーキテクチャを最大限に活用できるようにします。 これらの技術の詳細については、「Windows on Arm」および「Arm64EC for Windows 11 アプリ on Arm」をご覧ください。
プッシュ通知
Push 通知を使用すると、パフォーマンス最適化された方法でクラウド サービスからアプリに情報を送信できます。 プッシュ通知には、ローノーティフィケーション、バッジ通知、トースト通知があり、これらはクラウドサービスから送信されます。
- ユーザーのデバイスのパフォーマンスを最適化するために常に実行したままにするのではなく、プッシュ通知を使用してアプリまたはクライアントをウェイクアップします。
- 通知チャネルを使用して広告を送信しないでください。
-
retry-afterヘッダーを尊重する – この方法では、サービスを保護し、通知配信の成功を保証します。 - 期限切れまたは失効したチャネルをシステムから削除します。 Windows Notification Service (WNS) は、期限切れまたは失効したチャネルの要求を処理しません。
- WNS に対する突然の大量の要求のバーストを避けてください。 このパターンにより、応答が制限される可能性があります。
-
MS-CVヘッダーを利用します。 このヘッダーは、エンドツーエンドの追跡可能性と診断に役立ちます。 - 通知が機能しない場合のバックアップ メカニズムを用意します。
- Azure Notification Hubs (ANH) を使用します。 ANH を使用すると、対象ユーザーのターゲット設定、通知のスケジュール設定、通知のブロードキャストなどのエンゲージメント機能にaccessできます。 現在 Windows のみの開発者の場合、ANH を使用すると、通知インフラストラクチャを将来他のプラットフォームに簡単に移行できます。
アプリケーションの検出と管理
信頼性の高いインストール、更新、アンインストールのエクスペリエンスは、一貫した高品質のユーザー エクスペリエンスの重要な部分です。 次のベスト プラクティスは、ユーザーがアプリケーションを検出して管理するときに、アプリケーションが良好な印象を与えるのに役立ちます。
アプリケーションの検出
- Microsoft Store にアプリを一覧表示すると、ユーザーがアプリを見つけやすくなります。
- 複数のチャネル (Web サイトや Microsoft Store など) でアプリをホストする場合は、すべてのチャネルで一貫したアプリケーション ID と更新メカニズムを使用します。
- Microsoft Store を通じてアプリを配布することで、ユーザーがより見つけやすくします。 Windows ユーザーは、Windows Package Manager WinGet を通じてストアアプリにアクセスすることに注意してください。 Microsoft Store に公開しない場合でも、WinGet リポジトリを介して WinGet でアプリを簡単に検出できるようにすることができます。
インストールとアンインストール
- ユーザーごとのインストールをサポートします。 このサポートにより、ユーザーはより簡単にインストールでき、UAC プロンプトを回避できます。
- アプリケーションのインストールにエラーがなく、透過的で、ファイル管理に配慮していることを確認します。 アプリケーションのインストールでは、一時ファイルを放置しないでください。
- 可能な場合は、インストールするために管理者特権のアクセス許可を要求したり、オペレーティング システムの再起動を要求したりしないようにします。
- サイレント インストールをサポートします。 このサポートは、エンタープライズ環境でのアプリの管理性にとって重要です。
- アプリが [ アプリ ] ->[インストールされているアプリ ] の一覧に表示されていることを確認します。
- MSIX を使用して、シームレスなインストール、更新、アンインストールのユーザー エクスペリエンスを実現することを検討してください。 MSIX を使用すると、アプリのバイナリとデータが自動的に削除されます。 パッケージ化されたアプリでファイルとレジストリ エントリを処理する方法については、「Windows でパッケージ化されたデスクトップ アプリが動作するしくみについて」を参照してください。
- パッケージ化されていないアプリの場合は、[設定] の [ アプリ ] ->[インストール済みアプリ ] リストを使用して、ユーザーがアプリケーションを簡単にアンインストールできることを確認します。 ユーザーがアプリケーションをアンインストールする場合は、スタート メニューのエントリ、ファイル、ディレクトリ、レジストリ エントリ、および一時ファイルも削除されていることを確認します。 アプリケーションをアンインストールするときに、データを保持するオプションをユーザーに提供することを検討してください。
- アンインストール中に、アプリによってすべてのバイナリとアプリケーション データが削除されることを確認します。 ユーザーが作成したコンテンツは、
Documentsなどの場所に格納する必要があります。これは、アプリがアンインストールされた後でもユーザーが保持できます。 - 再起動が必要になる可能性があるシステム バイナリのインストールや更新は避けてください。
- RestartManager と統合して、OS 更新プログラム間で状態を保存および復元します。
更新
- ユーザーにとって便利なときにアプリを再起動できるようにする更新メカニズムをサポートします。 Windows App SDK再起動 API を使用して、WinUI アプリのアプリの動作を管理することを検討してください。
- 更新する必要がある重要な変更されたコンポーネントのみが更新メカニズムによってダウンロードされるようにします。 この方法により、必要なネットワーク帯域幅が最小限に抑えられます。
- アプリを更新して修復する方法を提供します。 更新プログラムの修復を自動的に処理する MSIX を検討してください。 詳細については、「アプリの自動更新と修復」を参照してください。
- プッシュ通知ベースの更新プログラムを使用するか、アプリの起動時または再起動時に利用可能な更新プログラムを確認することを検討してください。
その他のリソース
アクセシビリティ
アクセシビリティの高い Windows アプリケーションは、できるだけ多くのユーザーに対して豊富で 包括的なエクスペリエンス をサポートします。 包括的な設計により、すべてのユーザーにとって良い製品が作成されます。 アクセシビリティと包括性を備えたアプリにするには、以下の点について、機能性と使いやすさの向上が何を意味するかを検討します。
- 障がいを持つユーザー (一時的なものと永続的なものの両方)。
- 個人設定。
- 特定の作業スタイル。
- 状況的な制約 (共有の作業場、運転、料理、まぶしさなど)。
実際、世界保健機関は、障碍を個人の特徴としてではなく、人とその周囲の物理的およびデジタルの世界との間の不一致の相互作用として定義しています。
アクセシビリティは、人とビジネスの両方に適しています
アクセシビリティは責任です
世界中で 10 億人以上の人々が何らかの障碍を持っています。 しかし、10人に1人だけが、私たちの経済や社会に完全に参加するために必要な支援技術にaccessしています。 一般的に、障碍者の失業率は、障碍のない人の 2 倍です。 障瞝は、状況、一時的、永続的のいずれであっても、いつでも私たちに影響を与える可能性があります。
アクセシビリティは機会です
Microsoft アクセシビリティ アプローチ データシートによると、職場で障碍のある人を雇用およびサポートするためのベスト プラクティスを採用する包括的な組織は、業績が同業他社を上回り、優秀な人材の獲得と維持に優れています。 世界の従業員の75% であるミレニアル世代は、通常、その価値観を反映する雇用主を選びます。 ダイバーシティとインクルージョンは、そのリストのトップです。
アクセシビリティの組み込み
Windows アプリにアクセシビリティを組み込むことで、ユーザーエンゲージメントが最大化され、製品の満足度が向上し、製品のロイヤルティが促進されます。 アクセシビリティの高いエクスペリエンスを事前に設計して実装すると、通常、長期的に開発とメンテナンスのコストが削減されます。
一般的なソリューションとしては、ビデオの字幕などの代替形式で情報を提供することや、スクリーン リーダーなどのユーザー補助テクノロジの使用を有効化することなどがあります。
アクセシビリティを考慮してアプリケーションを設計すると、メンテナンス、更新、再設計が容易になります。 アクセシビリティを考慮することで、障がいを持つユーザーが使いやすいアプリになるだけでなく、アプリのメンテナンス コストを削減することができます。
アクセシビリティの高い Windows アプリの構築に関する詳細なガイダンスについては、「 Windows のアクセシビリティ」を参照してください。
アクセシビリティ テスト
Accessibility Insights は、開発者がアプリやサービスのアクセシビリティをテストするための強力なツール スイートです。 アクセシビリティをテストするには、次のツールを使用します。
- Accessibility Insights for Windows で調べます。 アクセシビリティ ツリーを調べて、ラベルのヒント、間違った役割、その他の問題など、簡単に改善できる点を見つけます。
- Accessibility Insights for Windows · Accessibility Insights でのイベント監視。 イベント監視の詳細については、「Supporting UI Automation Control Types を参照してください。
- PR または CI/CD で Accessibility Insights 自動チェックを実行します。 詳細については、「axe-pipelines-samples>」を参照してください。
- 見つけたバグはすべてアクセシビリティに直接影響を与えるので修正します。
セキュリティとプライバシー
安全でないアプリケーションは、攻撃者が悪意のあるアクティビティを実行できるようにするエントリ ポイントになる可能性があります。 アプリにセキュリティのバグがない場合でも、不適切なアクターはアプリを使用して、フィッシングやその他の形式のソーシャル エンジニアリングを通じて攻撃を開始し、セキュリティとプライバシーの境界に違反する可能性があります。 このセクションのベスト プラクティスは、セキュリティとユーザーのプライバシーに関連するリスクを軽減するのに役立ちます。
Windows の強化されたセキュリティ機能
Windows はセキュリティとプライバシーの基盤上に構築されており、Windows 11は Windows の最も安全なバージョンとして設計されており、Windows の最新のセキュリティ機能を利用するセキュリティで保護されたアプリの構築に取り組んでいます。
- Windows Hello生体認証サインイン (Windows Hello の概要で Windows アプリとバックエンド サービスを保護します。
- オンライン、エンタープライズ、政府機関のアプリケーションと支払いにパスキーサインインを実装します。詳細はパスキー入門を参照してください。
- デジタル証明書を使用してアプリに署名し 、Smart App Control がアプリの整合性を検証できることを確認します。 コード署名 と Microsoft 信頼されたルート プログラムの要件の概要です。
セキュリティ ガイドライン
- すべての開発のセキュリティ開発ライフサイクルに従います。
- 脅威モデリングは、セキュリティ上の欠陥を回避するのに役立ちます。
- セキュリティで保護されたライブラリ、言語、ツールを使用すると、実装上の欠陥が最小限に抑えられます。
- セキュリティで保護された既定値は、ユーザー エラーによって発生するセキュリティの問題を防ぐことができます。
- アプリを "インストール" するために管理者特権を要求しないでください。
- 理想的には、アプリは管理インストールとユーザーごとのインストールの両方をサポートする必要があります。
- MSIX パッケージの使用は、この目標を達成するための 1 つの方法です。
-
アプリを "実行" するために管理者特権を要求しないでください。
- もし特定の機能が管理特権を必要とする場合は、それらを独自のプロセスに分離して、攻撃対象領域を減少させます。
- C#、JavaScript、Rust など、メモリの安全性が保証された言語を使用します。特に、信頼されていないデータの解析などの危険なコード パスに使用します。
- コンパイラとツールセットによって提供されるすべてのセキュリティ軽減策を使用します (Visual C++ の場合は、Microsoft Visual C++ のセキュリティ機能に関するページを参照してください)。
- 暗号化やその他のセキュリティに依存するコードには、選択した言語またはフレームワークの標準ライブラリを常に使用してください。 独自のビルドを試みないでください。
- インストーラーだけでなく、アンインストーラー (存在する場合) も含め、アプリケーションのすべてのコンポーネントにデジタル署名します。 また、アプリを構成するすべての EXE、DLL、その他の実行可能ファイルに署名します。
- デジタル署名を使用すると、ユーザーはアプリの信頼性を確認でき、エンタープライズ管理者は Windows Defender アプリケーション制御を使用してデバイスをセキュリティで保護できます。
- MSIX パッケージの使用は、この目標を達成するための 1 つの方法です。
- すべてのネットワーク通信が SSL などのセキュリティで保護されたトランスポート経由であることを確認します。
- 攻撃者によって強制された場合でも、誤って有害なアクションを実行しないようにユーザーを保護するのに役立つガードレールやその他の軽減策を提供します。
- 本当にXを実行しますか? ユーザーが [はい] をクリックするように条件付けされているため、通常は [はい] / [いいえ] ダイアログは有効ではありません。
最新のアプリのほとんどは、さまざまな理由で大量のデータ (個人データを含む) を収集して使用します。 テレメトリ、製品の改善、収益化は、データを使用する 3 つの一般的な理由ですが、ユーザーと規制機関は同様に、これらのプラクティスのプライバシーへの影響に対してより敏感になっています。 アプリによって収集および使用されるデータに対する透明性と制御が期待されます。 次のヒントを使用して、ユーザーのプライバシー ニーズを満たします。
プライバシーのガイドライン
プライバシー ポリシー
プライバシーに関する声明を発見しやすく、わかりやすくすることで、アプリケーションに対するユーザーの信頼と信用が高まります。 アプリが正確なプライバシー ポリシーを提供していることを確認します。 理想的には、カジュアルな対象ユーザー (ユーザー) 向けに作成された要約ドキュメントと、長い形式の法的ポリシー (弁護士向けに作成) の両方を提供します。
次の条件を満たすプライバシー ポリシーにします。
- 製品によってアクセス、収集、または送信される個人情報をユーザーに通知する。
- その情報がどのように使用され、格納され、保護されるかを示す。
- その情報が開示される当事者の種類を示す。
- ユーザーが自分の情報の使用と共有に対して持っているコントロールと、情報をaccessする方法について説明します。
- 適用される法律と規制に準拠する。 アプリが利用可能な市場でのプライバシー規制について理解します。 アプリが開示、使用権、削除要求、その他のプライバシーに関する懸念事項を満たすか、それを超えているか確認します。
- 製品に新機能を追加するたびに最新の状態に維持する。
データ コレクション
- アプリのエクスペリエンスを完了するために必要な最小限の個人データを収集します。
- "念の場合" にデータを収集しないでください。顧客のエクスペリエンスの向上や収益化の促進など、すべてのデータを収集する正当な理由があります。
- 個人データを収集して保存する前に、常にユーザーの同意を得ます。 ユーザーに、将来の意思決定を元に戻す簡単な方法を提供します。 同意ダイアログで [いいえ] ボタンよりも [はい] ボタンを大きくしたり、目立つようにしたりするなどの "ダーク パターン" は避けてください。
- 特定の種類のデータに対して必要な具体的な開示と同意を決定するには、該当する規制に相談してください。 たとえば、一部の地域では、保存したデータをユーザーが表示、変更、または削除できる場合があります。
- ネットワーク経由でデータを送信する必要がある場合は、TLS 経由の接続など、セキュリティで保護された接続を常に使用します。
- Web サイトなどの一元的な場所に個人データを格納しないようにします。 個人データを保存する必要がある場合は、保存するデータの量を最小限に抑え、厳密に必要な期間だけ保存し、安全に暗号化されるようにします。
- 使用するサード パーティ製のライブラリまたは SDK にも適切なプライバシー プラクティスがあることを確認します。 この懸念は、単なる広告 SDK に限定されるものではなく、インターネットに接続するすべてのライブラリがアプリのユーザーのプライバシーに影響を与える可能性があります。
関連記事
Windows developer