> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# アクティビティフィードの作成

> OneSignalのREST API、Event Streams、またはデバイス上のロジックを使用して、ユーザー通知履歴を追跡および表示するアプリ内アクティビティフィードを構築する方法を学びます。

## アクティビティフィードとは？

アクティビティフィードは、ユーザーがアプリ内で受信した通知の履歴を確認できるようにします。

OneSignalは通知の配信に焦点を当てていますが、現在、各個別ユーザーに送信されたメッセージの履歴を保存していません。この機能を構築するには、通知データを自分で保存する必要があります—バックエンドサーバーまたはユーザーのデバイス上に直接保存します。

<Tabs>
  <Tab title="オプション1">
    ## サーバーへの保存

    **推奨アプローチ**

    アプリでのバックグラウンド処理に依存するのではなく、[Create notification](/reference/create-message) REST APIを使用して各通知を送信し、サーバーにコピーを保存します。その後、アプリが起動すると、サーバーで更新を確認できます。

    データが保存されると、いつでもユーザーの通知履歴を取得して表示できます。
  </Tab>

  <Tab title="オプション2">
    ## OneSignal Event Streamsを使用してアクティビティフィードを作成

    OneSignalの[Event Streams](./event-streams)機能は、アプリからバックエンドシステムまたはデータウェアハウスにリアルタイムイベントをストリーミングするスケーラブルな方法を提供します。これにより、アプリ内でフィードを手動で更新することなく、フォロー、コメント、購入、通知イベントなどのアプリ内ユーザー行動を反映するフィードを構築できます。

    ### 仕組み

    Event Streamsは、次のようなライブイベントデータをエクスポートします：

    * 通知配信
    * メール/SMSの開封とクリック
    * ユーザーによってトリガーされたアクション

    宛先には次が含まれます：

    * Webhook（HTTPエンドポイント）
    * Amazon Kinesis
    * Amazon S3
    * Google Cloud Storage
    * BigQuery
    * その他

    システムは、これらのイベントが発生すると受信し、フィードUIまたは分析パイプラインを更新するために使用できます。

    ## Event Streamsでアクティビティフィードをセットアップする手順

    <Steps>
      <Step title="Event Streamsを有効にする">
        * **OneSignalダッシュボード** > **Settings** > **Event Streams**に移動します。
        * Webhookまたはデータパイプライン（例：Amazon Kinesis）などの宛先を選択します。
        * ストリーミングするイベントを選択します（例：`message.sent`、`message.delivered`、`message.clicked`）。
      </Step>

      <Step title="イベントデータを処理するようにバックエンドを構成">
        * イベントデータを取り込むWebhookまたはConsumerを作成します。
        * イベントペイロードを解析して、次のような関連フィールドを抽出します：

          * `external_id`（ユーザーID）
          * `event`タイプ（`message.delivered`など）
          * `timestamp`
          * `contents`（通知メッセージ）
          * `additional_data`（カスタムメタデータ）
      </Step>

      <Step title="アクティビティフィードエントリを保存および構造化">
        * これらのイベントをクエリとレンダリングに適した形式でデータベースに保存します。

        ```json theme={null}
        {
          "message.id": "f3c9cd09-10d7-4f59-b9bc-66e16607f1d5",
          "message.name": "the-name-you-set",
          "message.title": "Claim 50% Off Today", // email subject example
          "message.title": "{'en':'the message title/headings'}", // push title example
          "message.contents": "{'en':'the message content'}",
          "message.template_id": "the-template-uuid-if-set",
          "message.url": "the-message-url",
          "message.app_url": "the-message-app-url",
          "message.web_url": "the-message-web-url"
        }
        ```
      </Step>

      <Step title="アプリでフィードをレンダリング">
        * ログインしたユーザーの最近のイベントをクエリして表示するフロントエンドコンポーネント（例：React、SwiftUI、またはAndroid View）を構築します。
        * オプションで、イベントタイプによるフィルターまたはグループ化を含めます。
      </Step>

      <Step title="追加のメタデータで強化">
        * 通知を送信するときは、`additional_data`を含めてフィードのコンテキストを提供します。例：

          ```json theme={null}
          {
            "action": "commented",
            "post_id": "xyz123"
          }
          ```

        * これにより、「Janeがあなたの投稿にコメントしました」などのリッチなフィードエントリを作成できます。
      </Step>
    </Steps>

    ### ユースケースの例

    * **Eコマース**：注文確認、配送更新、プロモーションを表示します。
    * **ソーシャルアプリ**：いいね、コメント、フォローを表示します。
    * **SaaSプラットフォーム**：タスク割り当て、メンション、アクティビティログを追跡します。

    ### メリット

    * イベントストリーミングによるリアルタイム更新
    * 完全にカスタマイズ可能なロジックと表示
    * スケーラブルなバックエンド駆動アーキテクチャ
  </Tab>
</Tabs>

***
