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

# Pub/Sub 経由でのイベントおよびユーザー属性の取り込み

> Pub/Sub を使用したユーザーイベントおよび属性のパブリッシュガイド

<Note>
  日本語版はAIによる翻訳です。正確な情報については[英語版](/data-ingestion/data-connections/gcp-pubsub/events-and-users-attributes-ingestion-via-pubsub)をご参照ください。
</Note>

## 概要

このドキュメントでは、Pub/Sub 上の Auxia システムを使用してユーザーイベントとユーザー属性をパブリッシュする方法を説明します。textproto データの正しい構造と、Pub/Sub からの結果メッセージについて解説します。

## お客様側の要件

Pub/Sub 統合を設定するには、以下を提供してください。

1. **トピック名（フルパス）**
   * 例: `projects/my-company/topics/user-events`

2. **トピックに対する権限**
   * Auxia のサービスアカウント（`data-transfer@auxia-gcp.iam.gserviceaccount.com`）に上記トピックの `pubsub.subscriptions.create` 権限を付与してください。これにより、Auxia 側でサブスクリプションを作成できます。

## イベント:

### ユーザーイベントのスキーマ:

Event Transaction データのドキュメントに記載されているスキーマを参照してください。以下のリンクで提供されている正確なスキーマを使用してください: [Auxia ユーザーイベントスキーマ](/ja/data-ingestion/overview/event-data)

### イベントパブリッシュ用の Textproto フォーマット:

Auxia システムでユーザーイベントをパブリッシュするには、以下の textproto フォーマットを使用します。Event および LogEventsRequest メッセージのスキーマはドキュメントに従います。

**サンプル textproto:**

```protobuf theme={null}
project_id: "1874"
user_id: "12345"
events {
  event_name: "shop_transaction"
  event_properties {
    key: "spent_current_ammount"
    value {
      long_value: 200
    }
  }
  event_properties {
    key: "shop_id"
    value {
      long_value: 123
    }
  }
  event_properties {
    key: "shop_item_ids"
    value {
      string_value: "abc, def, ghi"
    }
  }
  client_event_timestamp {
    seconds: 1705932201
    nanos: 915585000
  }
  server_received_timestamp {
    seconds: 1705927421
    nanos: 0
  }
}
```

### Pub/Sub からプルしたサンプルメッセージ:

```json theme={null}
{
"ackId": "<>",
"message": {
	"attributes": {
	"data_type": "EventData"
	},
	"data": "CgQxODc0EgUxMjM0NRp3ChBzaG9wX3RyYW5zYWN0aW9uGiAKDXNob3BfaXRlbV9pZHMSDxoNYWJjLCBkZWYsIGdoaRoNCgdzaG9wX2lkEgIIexocChVzcGVudF9jdXJyZW50X2FtbW91bnQSAwjIASoMCOnPw7wGEOjvyrQDMgYIyZfDvAY=",
	"messageId": "<>",
	"publishTime": "2025-01-22T12:43:22.345Z"
	}
}
```

### **Pub/Sub からのメッセージのデコード:**

Pub/Sub からメッセージをプルした後、読み取り可能なフォーマットにデコードする必要があります。メッセージの data フィールドには base64 エンコードされた文字列が含まれています。この文字列を LogEventsRequest のスキーマに一致する JSON 構造にデコードする必要があります。

**サンプルデコード済みメッセージ:**

```json theme={null}
{
  "projectId": "1874",
  "userId": "12345",
  "events": [
    {
      "eventName": "shop_transaction",
      "eventProperties": {
        "spent_current_ammount": {
          "longValue": "200"
        },
        "shop_id": {
          "longValue": "123"
        },
        "shop_item_ids": {
          "stringValue": "abc, def, ghi"
        }
      },
      "clientEventTimestamp": "2025-01-22T12:43:21.915585Z",
      "serverReceivedTimestamp": "2025-01-22T10:43:21Z"
    }
  ]
}
```

## **ユーザー属性:**

### **ユーザー属性のスキーマ:**

ユーザー属性の[ドキュメント](/ja/data-ingestion/overview/attributes-data)を参照してください。以下の正確なスキーマを使用してください。

```protobuf theme={null}
syntax = "proto3";

import "google/protobuf/timestamp.proto";

message UserAttributePb {
  string user_id = 1;
  map<string, PropertyValuePb> user_properties = 2;
  google.protobuf.Timestamp update_timestamp = 3;
}

message PropertyValuePb {
  oneof property_value {
    int64 long_value = 1;
    double double_value = 2;
    string string_value = 3;
    bool boolean_value = 4;
    google.protobuf.Timestamp timestamp_value = 5;
  }
}
```

### ユーザー属性パブリッシュ用の Textproto フォーマット:

Auxia システムでユーザーイベントをパブリッシュするには、以下の textproto フォーマットを使用します。UserProperties メッセージのスキーマは上記のスキーマに従います。

**サンプル textproto:**

```protobuf theme={null}
user_id: "12345"
user_properties {
  key: "language"
  value {
    string_value: "en"
  }
}
user_properties {
  key: "last_access_country"
  value {
    string_value: "us"
  }
}
user_properties {
  key: "country"
  value {
    string_value: "ja"
  }
}
update_timestamp {
  seconds: 1705933702
  nanos: 693271000
}
```

### Pub/Sub からプルしたサンプルメッセージ:

```json theme={null}
{
  "ackId": "<>",
  "message": {
    "attributes": {
      "data_type": "UserAttribute"
    },
    "data": "CgUxMjM0NRIPCgdjb3VudHJ5EgQaAmphEhsKE2xhc3RfYWNjZXNzX2NvdW50cnkSBBoCdXMSEAoIbGFuZ3VhZ2USBBoCZW4aDAjG28O8BhDY88nKAg==",
    "messageId": "<>",
    "publishTime": "2025-01-22T13:08:23.141Z"
  }
}
```

### Pub/Sub からのメッセージのデコード:

Pub/Sub からメッセージをプルした後、読み取り可能なフォーマットにデコードする必要があります。メッセージの data フィールドには base64 エンコードされた文字列が含まれています。この文字列を AuxiaUserAttribute のスキーマに一致する JSON 構造にデコードする必要があります。

**サンプルデコード済みメッセージ:**

```json theme={null}
{
  "userId": "12345",
  "userProperties": {
    "language": {
      "stringValue": "en"
    },
    "last_access_country": {
      "stringValue": "us"
    },
    "country": {
      "stringValue": "ja"
    }
  },
  "updateTimestamp": "2025-01-22T13:08:22.693271Z"
}
```
