次の方法で共有


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

このガイドでは、ユーザー アクティビティを作成および更新するための推奨されるプラクティスについて説明します。 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 つのコンテンツがアクティビティです。 以下のより具体的なガイドラインをご覧ください。
    • 音楽: アルバム/アーティスト/ジャンル — ユーザーがアルバム、アーティスト、またはジャンルを選択して [再生] を押すと、そのコレクションがアクティビティになります。曲ごとに個別のアクティビティは記述しません。 1 つのアルバムのような短いコレクションやランダムな順序で再生されるコレクションの場合、ユーザーの現在の位置を反映するようにアクティビティを更新する必要がない場合があります。 アルバムやプレイリストなどの長時間の連続再生の場合は、アルバム内の位置を記録するのが理にかなっている場合があります。
    • 音楽: スマート プレイリスト — ランダムな順序で音楽を再生するアプリケーションでは、そのプレイリストの 1 つのアクティビティを記録する必要があります。 ユーザーがそのプレイリストを 2 回目に再生する場合は、同じアクティビティに対して追加の履歴レコードを作成します。 順序がランダムなので、プレイリスト内のユーザーの現在の位置を記録する必要はありません。
    • テレビ シリーズ -現在のエピソードが完了した後に次のエピソードを再生するようにアプリが構成されている場合は、そのテレビ シリーズ用に 1 つのアクティビティを記述する必要があります。 複数の視聴セッションでさまざまなエピソードを再生する場合は、シリーズ内の現在の位置を反映するようにアクティビティを更新します。複数の履歴レコードが作成されます。
    • 映画 - 映画は 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 は Steve と Angry Birds をプレイした) のシナリオを表します。

// 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