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