Windows アプリの復元: アプリの価値を最大にする

ユーザーが新しいデバイスに移動する際に、アプリをできる限り引き続き使ってもらうためには、アプリで (Windows アプリの復元と組み合わせて) 最良の復元エクスペリエンスを提供する必要があります。 このトピックでは、アプリでそのようなエクスペリエンスを提供し、できるだけ多くの顧客に使い続けてもらえるようにする、Windows アプリの復元の原則を定義します。

アプリの復元が重要な理由

アプリのユーザーは、次の Windows PC に移動するときに、安心してアプリを新しいデバイスに転送できる必要があります。

Windows は、ユーザーのアプリの一覧をクラウドにバックアップし、復元の間に、新しい Windows PC 上に固定されたアプリ プレースホルダーを作成して、ユーザーが期待する場所でアプリを見つけられるようにします。 これにより、アプリのインストールは非常に簡単になります。 ただし、アプリケーションのインストールに加えて、ユーザーは、アプリの構成と設定の残りの部分も新しいデバイスに転送されることを望みます。

Windows アプリの復元機能の有効性を最大にするためのベスト プラクティスにアプリが従っていれば、ユーザーは新しい PC での生産性を可能な限り早く元に戻すことができます。 これにより、新しい PC でもユーザーにアプリを使ってもらうことができます。 このトピックの残りの部分では、これらのベスト プラクティスについて説明します。

アプリの復元の原則

これらの原則は、バックアップと復元のエクスペリエンスをアプリのユーザーにとって最適なものにできるガイドラインとベスト プラクティスです。 これらは、Microsoft が収集した既存のベスト プラクティスをまとめたものです。

  • Microsoft Store にアプリを発行する。 アプリでは、Microsoft Store を通じた信頼できる配布を有効にする必要があります (「Windows アプリとゲームを公開する」をご覧ください)。 これは、ユーザーに信頼できるシームレスな (より少ないクリック数と考えてください) エクスペリエンスを提供するための最も簡単な方法です。
  • アプリをパッケージ化する。 アプリをパッケージ化する必要があります (定義については、「デプロイの概要」をご覧ください)。 アプリをパッケージ化すると、アプリにとって重要なファイル、データ、設定をシステムが理解しやすくなり、システムは必要に応じてアプリをいっそう簡単に復元できるようになります。
  • 重要なアプリの状態をクラウドに格納する。 アプリでは、重要なアプリの状態をクラウドに格納する必要があります。 新しいデバイスにアプリをインストールすることは、最初のステップにすぎません。 ユーザーを以前のアプリの状態 (最近、お気に入り、好み) にシームレスに戻すことが目標です。これを行う最善の方法は、その重要なユーザー状態情報をクラウドに格納することです。 ローカルな状態は、一時的な最適化としてのみ考える必要があります。
  • ユーザーが生成したコンテンツを既知のフォルダーに書き込む。 アプリでは、ユーザーが生成したコンテンツを Windows の既知のフォルダーに書き込む必要があります (KnownFolders クラスを参照してください)。 それをアプリの状態とは別にしておきます。ユーザー生成コンテンツ (ファイル、サウンド クリップ、ビデオなど) をアプリで生成する場合は、そのコンテンツを Windows の既知のフォルダーに書き込む必要があります (ドキュメント、画像、音楽、ビデオなど)。 これにより、Windows は OneDrive を介してそれらのファイルをクラウドにバックアップし、ファイル オンデマンド テクノロジを使ってデバイス間でスムーズに同期を維持できます。

Microsoft Store へのアプリ発行

Microsoft Store は、Windows アプリ用の最も信頼できる配布クラウドです (「Windows アプリとゲームを公開する」をご覧ください)。 ユーザーは、インストールするアプリを簡単に検索して見つけることができます。

ユーザーが新しいオペレーティング システム (OS) をインストールして、以前の PC からの復元を選ぶと、Microsoft Store にあるアプリが [すべてのアプリ] の一覧に自動的に表示され、[スタート] メニューやタスク バーの以前と同じ場所にピンが表示されます。 それらのショートカットを使って、ユーザーはすぐにアプリにアクセスしてインストールできます。

アプリをパッケージ化する

ユーザーのための優れたエクスペリエンスの作成に関するもう 1 つの鍵は、アプリを確実にインストールし、正しく動作させることです。 これを行う最善の方法は、パッケージ化されたアプリを使うことです (「デプロイの概要」をご覧ください)。

パッケージ化されたアプリ (パッケージ化されたデスクトップ アプリまたはユニバーサル Windows プラットフォーム アプリ) は MSIX を使ってパッケージ化され、軽量アプリ コンテナーの内部で実行されます。 パッケージ化されたアプリのプロセスとその子プロセスは、コンテナー内で実行され、ファイル システムとレジストリの仮想化を使って分離されます。 パッケージ化のこれらの側面により、インストールの信頼性が非常に高くなり、アプリが誤って動作したり、ユーザーがアンインストールしたときにレジストリ構成やアプリのファイルが PC に残ったりしないことが保証されます。

パッケージ化に MSIX を使う利点について詳しくは、「MSIX とは」をご覧ください。

MSIX 形式とパッケージ化されたアプリの利点は、アプリの信頼性だけではありません。 アプリをパッケージ化すると、ユーザーが新しい PC に移行するときにすばやくインストールできることも意味します。 インストールの後で、Windows は復元したパッケージ化されたアプリのリハイドレートを開始します。 リハイドレートには時間がかかるため、アプリがリハイドレートされる前にユーザーがリンクをクリックすると、ユーザーができるだけ早くアプリを実行できるように、Windows はすぐにアプリをダウンロードしてインストールします。

重要なアプリの状態をクラウドに格納する

ご覧のように、Windows は、顧客がアプリを見つけて新しい PC にインストールするのを助ける上で大きな役割を果たします。 しかし、アプリの設定のような、アプリのデータについてはどうでしょうか。 最善のユーザー エクスペリエンスを提供するため、クラウドを使ってアプリの状態を格納することをお勧めします。 クラウドにアプリのデータを格納することで、ユーザーはデバイスが違っても同じエクスペリエンスを使用できます。 また、ユーザーの満足度は、アプリの設定を再構成する必要がなければ大幅に向上します。

アプリの設定をクラウドに格納するには、サービスが必要です。 Microsoft は、可能な限り優れたエクスペリエンスを提供するため、サーバーの起動、データベースの選択、スケーリングやセキュリティについての心配などを不要にする、さまざまなサービスを提供しています。 それらのサービスにより、SQL または NoSQL API を使ってクラウドにアプリケーション データを格納できる優れた開発者エクスペリエンスが提供されています。 また、スケーラブルで堅牢なアプリケーションを構築するには、すべてのデバイス上のデータを同期し、ネットワーク接続の有無に関係なくアプリケーションが動作できるようにすることもできます。 Microsoft サービスについて詳しくは、「クラウドからモバイル アプリケーション データを格納、同期、照会する」をご覧ください。

アプリ データの格納のベスト プラクティスについて詳しくは、「設定と他のアプリ データを保存して取得する」をご覧ください。

ユーザーが生成したコンテンツを既知のフォルダーに書き込む

Windows Vista で既知のフォルダーが導入されました。 それ以来、ユーザーはアプリで作成したコンテンツがそれらの場所で見つかることを期待できるようになっています。 ユーザーが生成したコンテンツをそれらの場所に書き込むと、有効になっている場合は OneDrive によってそれらのフォルダーがバックアップされ、ユーザーは新しい PC でそれらを確実に使用できるという利点が加わります (「OneDrive を使用してフォルダーをバックアップする」をご覧ください)。 標準の Windows API を使って、ユーザーが生成したコンテンツを既知のフォルダーに書き込むことで、ユーザー エクスペリエンスが向上し、アプリを導入する際の手間が軽減されます。

ユーザーが見ることのできるファイル

ユーザーが表示して操作できるようにするファイルは、ユーザーのプロファイル内の適切なフォルダーに格納する必要があります。 一般的なファイルは、FOLDERID_Documents の場所 (通常はサブフォルダー内) に格納する必要があります。 また、画像、音楽、動画は、適切な FOLDERID_PicturesFOLDERID_MusicFOLDERID_Videos の場所に格納する必要があります。

コンピューター固有のアプリ データ

アプリが現在実行されているコンピューターに固有のデータは、FOLDERID_LocalAppData フォルダー (通常はサブフォルダー内) に格納する必要があります。 それには、次のようなデータが含まれます。

  • システム パフォーマンス メトリック。 現在のコンピューターに関して収集および保存され、その特定のコンピューターでのアプリの動作を最適化するために使われる情報。 たとえば、(最適なレンダリング品質を決定するために) コンピューターのグラフィックス機能とパフォーマンスに関する情報を収集した場合、そのデータはローミングしないようにする必要があります。
  • コンピューター固有の機能に結び付けられているユーザーのカスタマイズ。 コンピューターのグラフィックス機能とパフォーマンスに基づいてレンダリング パフォーマンスを最適化するアプリでは、ユーザーがそれらの基本設定に対して行うことができる変更も、コンピューター固有のデータとして格納する必要があります。 そうすることで、ユーザーは、たまたまアプリを実行することになったコンピューターでも、自分が決定した最適なエクスペリエンスを利用できます。

ヒント

コンピューター固有のデータを既知のフォルダーに格納しないことをお勧めする理由は、それらのユーザー固有のフォルダーはユーザーと共にコンピューター間を移動する (ローミングする) ためです。 そのため、コンピューター固有のデータを格納すると、ユーザーが複数のコンピューターでアプリを使用するときや、アップグレードの後で、競合や問題が発生する可能性があります。

コンピューター固有ではないアプリ データ

コンピューター固有ではないデータは、FOLDERID_Documents の場所 (通常はサブフォルダー内) に格納する必要があります。 多くの場合、それらのファイルには、起動時に実行する既定のアクション、カスタム背景、コンピューターが変わっても変化してはならないその他のデータなど、ユーザーが指定したアプリのカスタマイズが含まれます。

パッケージ化されていないアプリのベスト プラクティス

アプリをパッケージ化できない場合は、インストーラーで以下の推奨事項が実装されていることを確認してください。 そうすることで、バックアップから復元された新しいコンピューターへのインストールを可能にする [スタート] メニューのショートカットを、バックアップおよび復元できるようになります。

  • インストーラーのアンインストール レジストリ キーで InstallLocation の値が指定されていることを確認します。 Windows インストーラーを使用する場合は、ARPINSTALLLOCATION を使ってこれを指定します。 これは、[スタート] メニューのショートカットを製品にマッピングできるようにするために必要です。
  • その場所が製品に固有であることを確認します。通常は、C:\Program Files\<Publisher>\<Application> の下のサブディレクトリです。
  • [スタート] メニューのショートカットに、コンピューターに依存しない System.AppUserModel.ID (AMUID) の値があることを確認します。 それを行う最善の方法は、ショートカット メタデータで明示的に指定することです。 詳しくは、「AppUserModelID を割り当てる場所」をご覧ください。