次の方法で共有


ユーザー アクティビティのベスト プラクティス

このガイドでは、ユーザー アクティビティを作成および更新するための推奨プラクティスについて説明します。 Windows のユーザー アクティビティ機能の概要については、「デバイス間でもユーザー アクティビティを続行 」を参照してください。 または、他の開発プラットフォームでのアクティビティの実装については、Project Rome の「ユーザー アクティビティ」セクションを参照してください。

2021 年 7 月以降、Microsoft アカウント (MSA) を介して Windows デバイス間でアクティビティ履歴が同期されているユーザーは、タイムラインで新しいアクティビティをアップロードするオプションがなくなりました。 タイムラインを引き続き使用し、ローカル PC でアクティビティ履歴 (最近のアプリ、Web サイト、ファイルに関する情報) を確認できます。 AAD に接続されたアカウントは影響を受けることはありません。

ユーザー アクティビティを作成または更新するタイミング

すべてのアプリは異なるため、アプリ内のアクションをユーザー アクティビティにマップする最適な方法を決定するのは、開発者によって異なります。 ユーザー アクティビティは Cortana とタイムラインで紹介されます。これは、ユーザーが過去にアクセスしたコンテンツに戻ることを支援することで、ユーザーの生産性と効率を向上させることに重点を置きます。

一般的なガイドライン

  • 関連するユーザー アクションのグループの 1 つのアクティビティを記録します。 これは、音楽プレイリストやテレビ番組に特に関連します。1 つのアクティビティを一定の間隔で更新して、ユーザーの進行状況を反映させることができます。 この場合、複数の履歴アイテムを含む 1 つのユーザー アクティビティが複数の日または数週間にわたるエンゲージメント期間を表します。 同じことが、ユーザーがアプリ内で段階的に進行するドキュメント ベースのアクティビティにも当てはまります。
  • ユーザー データをクラウドに格納します。 クロスデバイス アクティビティをサポートする場合は、このアクティビティの再参加に必要なコンテンツがクラウドの場所に格納されていることを確認する必要があります。 デバイス固有のアクティビティは、アクティビティが作成されたデバイスのタイムラインに表示されますが、他のデバイスには表示されない場合があります。
  • ユーザーが再開する必要のないアクションのアクティビティは作成しないでください。 アプリケーションを使用して、状態を保持しない単純な 1 回限りの操作を完了する場合は、ユーザー アクティビティを作成する必要がない可能性があります。
  • 他のユーザーが完了したアクションのアクティビティは作成しないでください。 外部アカウントがユーザーにメッセージを送信したり、アプリ内で @メンションを送信したりする場合は、これに対するアクティビティを作成しないでください。 この種類のアクションは、アクション センターの通知によって提供される方が適しています。
    • コラボレーション シナリオは例外です。複数のユーザーが同じアクティビティ (Word 文書など) で作業している場合、ユーザーの後に別のユーザーが変更を加える場合があります。 この場合は、ドキュメントに加えられた変更を反映するように、既存のアクティビティを更新できます。 これには、新しい履歴項目を作成せずに既存のユーザー アクティビティ コンテンツ データを更新する必要があります。

特定の種類のアプリのガイドライン

すべてのアプリは異なりますが、ほとんどのアプリは次のいずれかの対話パターンに分類されます。

  • ドキュメント ベースのアプリ — ドキュメントごとに 1 つのアクティビティを作成し、使用期間を反映した 1 つ以上の履歴アイテムを作成します。 ドキュメントに変更が加えられたら、アクティビティを更新することが重要です。
  • ゲーム — セーブ データまたはワールドごとに 1 つのアクティビティを作成します。 ゲームでサポートされているレベルのシーケンスが 1 つだけの場合は、時間の経過と同時に同じアクティビティを再発行できますが、最新の進行状況や実績を表示するようにコンテンツ データを更新することもできます。
  • ユーティリティ アプリ — アプリ内にユーザーが退出して再開する必要がない場合は、ユーザー アクティビティを使用する必要はありません。 良い例は、電卓のような簡単なアプリです。
  • 基幹業務アプリ — 単純なタスクやワークフローを管理するための多くのアプリが存在します。 アプリを介してアクセスされる個別のワークフローごとに 1 つのアクティビティを作成します (たとえば、経費明細書はそれぞれ個別のアクティビティになるため、ユーザーはアクティビティをクリックして特定のレポートが承認されたかどうかを確認できます)。
  • メディア再生アプリ — コンテンツの論理的なグループ化 (プレイリスト、プログラム、スタンドアロン コンテンツなど) ごとに 1 つのアクティビティを作成します。 アプリ開発者にとって根本的な問題は、コンテンツの各部分 (テレビ エピソード、曲) がスタンドアロン コンテンツとしてカウントされるか、コレクションの一部としてカウントされるかです。 原則として、ユーザーがコレクションまたはシーケンシャル コンテンツを再生することを選択した場合、コレクション全体がアクティビティになります。 1 つのコンテンツを再生することを選択した場合、そのコンテンツの 1 つの部分がアクティビティになります。 以下のより具体的なガイドラインを参照してください。
    • 音楽: アルバム/アーティスト/ジャンル — ユーザーがアルバム、アーティスト、またはジャンルを選択して再生をクリックした場合、そのコレクションはアクティビティです。各曲に個別のアクティビティを記述しないでください。 単一のアルバムやコレクションなどの短いコレクションがランダムな順序で再生される場合は、ユーザーの現在位置を反映するようにアクティビティを更新する必要がない場合があります。 アルバムやプレイリストなどの長いシーケンシャル再生では、アルバム内の位置を記録することは理にかなっているかもしれません。
    • 音楽:スマートプレイリスト — ランダムな順序で音楽を再生するアプリケーションは、そのプレイリストの単一のアクティビティを記録する必要があります。 ユーザーが再生リストを 2 回目に再生する場合は、同じアクティビティに対して追加の履歴レコードを作成します。 プレイリスト内のユーザーの現在位置を記録する必要はありません。順序はランダムであるためです。
    • TV シリーズ — 現在のエピソードが完了した後でアプリが次のエピソードを再生するように構成されている場合は、テレビ シリーズの 1 つのアクティビティを記述する必要があります。 複数の視聴セッションでさまざまなエピソードを再生すると、アクティビティが更新され、シリーズ内の現在の位置が反映され、複数の履歴レコードが作成されます。
    • 映画 — 映画は単一のコンテンツであり、独自の履歴レコードを持っている必要があります。 ユーザーが途中で映画の視聴を停止した場合は、自分の位置を記録することが望ましいです。 将来的に再開する場合、アクティビティは中断した場所で映画を再開したり、最初に再開または開始するかどうかをユーザーに尋ねたりすることもできます。

ユーザー アクティビティの設計

ユーザー アクティビティは、アクティブ化 URI、ビジュアル データ、コンテンツ メタデータの 3 つのコンポーネントで構成されます。

  • アクティブ化 URI は、特定のコンテキストでアプリケーションを再開するために、アプリケーションまたはエクスペリエンスに渡すことができる URI です。 通常、これらのリンクはスキームのプロトコル ハンドラーの形式になります (例: "my-app://page2?action=edit")。 アプリで URI パラメーターを処理する方法は開発者が決定する必要があります。 詳細については、「URI アクティブ化 を処理する」を参照してください。
  • 必要なプロパティと省略可能な一連のプロパティ (タイトル、説明、アダプティブ カード要素など) で構成されるビジュアル データを使用すると、ユーザーはアクティビティを視覚的に識別できます。 アクティビティのアダプティブ カード ビジュアルの作成に関するガイドラインについては、以下を参照してください。
  • コンテンツ メタデータは、特定のコンテキストでアクティビティをグループ化および取得するために使用できる JSON データです。 通常、これは http://schema.org データの形式になります。 このデータの入力に関するガイドラインについては、以下を参照してください。

アダプティブ カードの設計ガイドライン

アクティビティがタイムラインに表示されると、アダプティブ カード フレームワークを使用して表示されます。 開発者がアクティビティごとにアダプティブ カードを提供しない場合、タイムラインは、アプリ名/アイコン、必要なタイトル フィールド、およびオプションの [説明] フィールドに基づいて、単純なカードを自動的に作成します。

アプリ開発者は、単純なアダプティブ カード JSON スキーマを使用してカスタム カードを提供することをお勧めします。 アダプティブ カード オブジェクトを構築する方法の技術的な手順については、アダプティブ カードのドキュメント を参照してください。 ユーザー アクティビティでのアダプティブ カードの設計については、以下のガイドラインを参照してください。

  • 画像を使用する
    • 可能であれば、アクティビティごとに一意のイメージを使用します。 アプリケーション名とアイコンは、アクティビティのカードの横に自動的に表示されます。追加の画像は、ユーザーが探しているアクティビティを見つけるのに役立ちます。
    • 画像には、ユーザーが読み取ることが期待されるテキストを含めてはなりません。 このテキストは、アクセシビリティのニーズを持つユーザーには使用できず、検索できません。
    • 画像にテキストが含まれていないため、約 2:1 の比率でトリミングできる場合は、背景画像として使用する必要があります。 これにより、タイムラインで目立つ太字のアクティビティ カードが作成されます。 画像は、テキストがカードに表示されたままになるように少し暗くなり、小さいテキストが読みにくくなる可能性があり、この場合はアクティビティ名のみを使用することをお勧めします。
    • 画像を 2:1 にトリミングできない場合は、アクティビティ カード内に配置する必要があります。
      • 縦横比が [正方形] または [縦] の場合は、余白なしでカードの右側に画像を固定します。
      • 縦横比がランドスケープの場合、画像をカードの右上隅に固定します。
  • 各アクティビティは、常に表示する必要があるアクティビティ名を指定する必要があります。
    • この名前は、大きな太字のテキスト オプションを使用して、カードの左上隅に表示されます。 Cortana のシナリオでアクティビティが表示されるときにユーザーに表示されるのはこれが唯一の部分であるため、名前が簡単に認識可能であることが重要です。 タイムラインに同じ名前を表示すると、ユーザーは多数のアクティビティを簡単に参照できます。
  • ユーザーがタイムラインでアプリのアクティビティを簡単に見つけられるように、アプリのすべてのアクティビティに同じビジュアル スタイルを使用します。
    • たとえば、アクティビティはすべて同じ背景色を使用する必要があります。
  • 補足テキスト情報は控えめに使用してください。
    • カードにテキストを入力しないようにし、ユーザーが適切なアクティビティを見つけるのに役立つ補足情報のみを使用するか、状態情報 (特定のタスクの現在の進行状況など) を反映します。

コンテンツ メタデータのガイドライン

ユーザー アクティビティにはコンテンツ メタデータを含めることもできます。コンテンツ メタデータは、Windows と Cortana がアクティビティの分類と推論の生成に使用します。 その後、特定のトピック (ユーザーが休暇を調査している場合)、オブジェクト (ユーザーが何かを調査している場合)、アクション (ユーザーがさまざまなアプリや Web サイトで特定の製品を買い物している場合) など、特定のトピックを中心にアクティビティをグループ化できます。 名詞とアクティビティに関係する動詞の両方を表すのが良い考えです。

次の例では、Schema.orgの標準に従ったコンテンツ メタデータ JSON は、"John played Angry Birds with Steve" というシナリオを表しています。

// John played angry birds with Steve.
{
  "@context": "http://schema.org",
  "@type": "PlayAction",
  "agent": {
    "@type": "Person",
    "name": "John"
  },
  "object": {
    "@type": "MobileApplication",
    "name": "Angry Birds."
  },
  "participant": {
    "@type": "Person",
    "name": "Steve"
  }
}

主要なAPI