

**サポート終了通知:** 2026 年 10 月 30 日に、 AWS は Amazon Pinpoint のサポートを終了します。2026 年 10 月 30 日を過ぎると、Amazon Pinpoint コンソールまたは Amazon Pinpoint のリソース (エンドポイント、セグメント、キャンペーン、ジャーニー、分析) にアクセスできなくなります。詳細については、「[Amazon Pinpoint のサポート終了](https://docs.aws.amazon.com/console/pinpoint/migration-guide)」を参照してください。**注:** SMS、音声、モバイルプッシュ、OTP、電話番号の検証に関連する APIs は、この変更の影響を受けず、 AWS エンドユーザーメッセージングでサポートされています。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ユーザーを Amazon Pinpoint エンドポイントに関連付ける
<a name="audience-define-user"></a>

エンドポイントには、*ユーザー*を定義する属性を含めることができます。このユーザーは、対象者のユーザーを表します。例えば、ユーザーはモバイルアプリケーションをインストールしたユーザー、またはウェブサイトのアカウントを持つユーザーを表します。

ユーザーを定義するには、一意の ID を指定し、オプションでカスタムのユーザー属性を指定します。複数のデバイスでアプリを使用する場合、または複数のアドレスでメッセージを送信できる場合は、同一のユーザー ID を複数のエンドポイントに割り当てることができます。この場合、ユーザー属性は、Amazon Pinpoint によってこれらのエンドポイント間で同期されます。そのため、1 つのエンドポイントにユーザー属性を追加すると、その属性は Amazon Pinpoint によって、同一のユーザー ID が含まれる各エンドポイントに追加されます。

個々の属性に適用するデータを追跡するには、ユーザー属性を追加します。この属性は、ユーザーが使用しているデバイスによって異なります。例えば、ユーザーの名前、年齢、アカウントステータスの属性を追加することができます。

**ヒント**  
アプリケーションで Amazon Cognito ユーザープールを使用してユーザー認証を行っている場合、Amazon Cognito はユーザー ID と属性を自動的にエンドポイントに追加します。Amazon Cognito は、ユーザープールのユーザーに割り当てられている `sub` をエンドポイントユーザー ID 値に割り当てます。Amazon Cognito でユーザーを追加する方法については、『*Amazon Cognito デベロッパーガイド*』の「[Using amazon pinpoint analytics with amazon cognito user pools](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-pinpoint-integration.html)」を参照してください。

エンドポイントにユーザー定義を追加すると、さらに多くの方法で対象者を分類することができます。セグメントの定義は、ユーザー属性に基づき、またはユーザー ID のリストをインポートして行うことができます。ユーザーに基づき、セグメントにメッセージを送信する場合の送信先の例として、セグメント内の各ユーザー ID に関連付けられている各エンドポイントがあります。

また、メッセージは他の方法で対象者に送信することもできます。キャンペーンを使用してユーザーのセグメントにメッセージを送信したり、ユーザー ID のリストに直接メッセージを送信したりできます。メッセージをパーソナライズするには、ユーザーの属性値に置き換えられているメッセージ変数を含めることができます。

## 例
<a name="audience-define-user-example"></a>

エンドポイントにユーザー定義を追加する方法を以下の例に示します。

------
#### [ AWS CLI ]

Amazon Pinpoint を使用するには、AWS CLI でコマンドを実行します。

**Example Update Endpoint コマンド**  
ユーザーをエンドポイントに追加するには、[update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/update-endpoint.html) コマンドを使用します。`--endpoint-request` パラメータでは、新しいエンドポイントを定義することができます。この定義でユーザーを含めることができます。または、変更する属性のみ指定して、既存のエンドポイントを更新します。ユーザー属性のみ指定して、既存のエンドポイントにユーザーを追加する方法を以下の例に示します。  

```
$ aws pinpoint update-endpoint \
> --application-id application-id \
> --endpoint-id endpoint-id \
> --endpoint-request file://endpoint-request-file.json
```
コードの説明は以下のとおりです。  
+ *application-id* は、エンドポイントを追加または更新する Amazon Pinpoint プロジェクトの ID です。
+ *endpoint-id* は、新しいエンドポイントに割り当てる ID、または更新するエンドポイントの ID です。
+ *endpoint-request-file.json* は、ローカル JSON ファイルへのファイルパスを表しており、`--endpoint-request` パラメータの入力を含みます。

**Example エンドポイントリクエストファイル**  
例の `update-endpoint` コマンドでは、`--endpoint-request` パラメータの引数として、JSON ファイルを使用します。このファイルには、次のようなユーザー定義が含まれます。  

```
{ 
    "User":{ 
        "UserId":"example_user",
        "UserAttributes":{ 
            "FirstName":["Wang"],
            "LastName":["Xiulan"],
            "Gender":["Female"],
            "Age":["39"]
        }
    }
}
```
ユーザーの定義に使用する属性については、*Amazon Pinpoint API リファレンス*の「[EndpointRequest](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-endpoints-endpoint-id.html#apps-application-id-endpoints-endpoint-id-schemas) スキーマ」の「`User` オブジェクト」を参照してください。

------
#### [ AWS SDK for Java ]

AWS SDK for Java が提供するクライアントにより、Java アプリケーションで Amazon Pinpoint API を使用できます。

**Example コード**  
エンドポイントにユーザーを追加するには、EndpointRequest オブジェクトを初期化し、`AmazonPinpoint` クライアントの `updateEndpoint` メソッドに渡します。このオブジェクトを使用して新しいエンドポイントを定義することができます。この定義でユーザーを含めることができます。または、変更するプロパティのみ更新して、既存のエンドポイントを更新します。次の例では、EndpointUser オブジェクトを EndpointRequest オブジェクトに追加して、ユーザーを既存のエンドポイントに追加します。  

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.pinpoint.PinpointClient;
import software.amazon.awssdk.services.pinpoint.model.EndpointRequest;
import software.amazon.awssdk.services.pinpoint.model.EndpointUser;
import software.amazon.awssdk.services.pinpoint.model.ChannelType;
import software.amazon.awssdk.services.pinpoint.model.UpdateEndpointRequest;
import software.amazon.awssdk.services.pinpoint.model.UpdateEndpointResponse;
import software.amazon.awssdk.services.pinpoint.model.PinpointException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
```

```
    public static void updatePinpointEndpoint(PinpointClient pinpoint, String applicationId, String endPointId) {
        try {
            List<String> wangXiList = new ArrayList<>();
            wangXiList.add("cooking");
            wangXiList.add("running");
            wangXiList.add("swimming");

            Map myMapWang = new HashMap<>();
            myMapWang.put("interests", wangXiList);

            List<String> myNameWang = new ArrayList<>();
            myNameWang.add("Wang ");
            myNameWang.add("Xiulan");

            Map wangName = new HashMap<>();
            wangName.put("name", myNameWang);

            EndpointUser wangMajor = EndpointUser.builder()
                    .userId("example_user_10")
                    .userAttributes(wangName)
                    .build();

            // Create an EndpointBatchItem object for Mary Major.
            EndpointRequest wangXiulanEndpoint = EndpointRequest.builder()
                    .channelType(ChannelType.EMAIL)
                    .address("wang_xiulan@example.com")
                    .attributes(myMapWang)
                    .user(wangMajor)
                    .build();

            // Adds multiple endpoint definitions to a single request object.
            UpdateEndpointRequest endpointList = UpdateEndpointRequest.builder()
                    .applicationId(applicationId)
                    .endpointRequest(wangXiulanEndpoint)
                    .endpointId(endPointId)
                    .build();

            UpdateEndpointResponse result = pinpoint.updateEndpoint(endpointList);
            System.out.format("Update endpoint result: %s\n", result.messageBody().message());

        } catch (PinpointException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
```

SDK の完全な例については、「[GitHub](https://github.com/)」の「[AddExampleUser.java](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javav2/example_code/pinpoint/src/main/java/com/example/pinpoint/AddExampleUser.java)」を参照してください。

------
#### [ HTTP ]

HTTP リクエストを直接 REST API に送信して Amazon Pinpoint を使用することができます。

**Example ユーザー定義を含む Put Endpoint リクエスト**  
エンドポイントにユーザーを送信するには、次の URI の [Endpoint](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-endpoints-endpoint-id.html) リソースに対して `PUT` リクエストを発行します。  
`/v1/apps/application-id/endpoints/endpoint-id`  
コードの説明は以下のとおりです。  
+ *application-id* は、エンドポイントを追加または更新する Amazon Pinpoint プロジェクトの ID です。
+ *endpoint-id* は、新しいエンドポイントに割り当てる ID、または更新するエンドポイントの ID です。
リクエストに、必要なヘッダーを含め、[EndpointRequest](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-endpoints-endpoint-id.html#apps-application-id-endpoints-endpoint-id-schemas) JSON を本文として指定します。リクエストボディで、新しいエンドポイントを定義することができます。この定義でユーザーを含めることができます。または、変更する属性のみ指定して、既存のエンドポイントを更新します。ユーザー属性のみ指定して、既存のエンドポイントにユーザーを追加する方法を以下の例に示します。  

```
PUT /v1/apps/application_id/endpoints/example_endpoint HTTP/1.1
Host: pinpoint.us-east-1.amazonaws.com
X-Amz-Date: 20180415T182538Z
Content-Type: application/json
Accept: application/json
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20180501/us-east-1/mobiletargeting/aws4_request, SignedHeaders=accept;content-length;content-type;host;x-amz-date, Signature=c25cbd6bf61bd3b3667c571ae764b9bf2d8af61b875cacced95d1e68d91b4170
Cache-Control: no-cache

{ 
    "User":{ 
        "UserId":"example_user",
        "UserAttributes":{ 
            "FirstName":"Wang",
            "LastName":"Xiulan",
            "Gender":"Female",
            "Age":"39"
        }
    }
}
```
リクエストが成功すると、次のようなレスポンスが表示されます。  

```
{
    "RequestID": "67e572ed-41d5-11e8-9dc5-db288f3cbb72",
    "Message": "Accepted"
}
```

------

## 関連情報
<a name="audience-define-user-related"></a>

Amazon Pinpoint API のエンドポイントリソースに関する詳細 (例: サポートされている HTTP メソッドやリクエストパラメータ) については、「*Amazon Pinpoint API リファレンス*」の「[エンドポイント](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-endpoints-endpoint-id.html)」を参照してください。

変数を使用したメッセージのパーソナライズの詳細については、『*Amazon Pinpoint ユーザーガイド*』の「[Message variables](https://docs.aws.amazon.com/pinpoint/latest/userguide/campaigns-message.html#campaigns-message-variables.html)」を参照してください。

ユーザー ID のリストをインポートしてセグメントを定義するには、『*Amazon Pinpoint ユーザーガイド*』の「[Importing segments](https://docs.aws.amazon.com/pinpoint/latest/userguide/segments-importing.html)」を参照してください。

ダイレクトメッセージを最大 100 のユーザー ID に送信するには、「*Amazon Pinpoint API リファレンス*」の「[ユーザーメッセージ](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-users-messages.html)」を参照してください。

エンドポイントに適用するクォータに関する情報 (割り当て可能なユーザー属性の数など) については、「[エンドポイントクォータ](quotas.md#quotas-endpoint)」を参照してください。