

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

# ドメインデータセットグループの開始方法 (SDK for JavaScript v3)
<a name="getting-started-domain-js"></a>

このチュートリアルでは、AWS SDK for JavaScript v3 を使用して VIDEO\$1ON\$1DEMAND ドメインのドメインデータセットグループを作成する方法を示します。このチュートリアルでは、*Top Picks for You* ユースケースのレコメンダーを作成します。

 このチュートリアルで使用されているコードを GitHub で確認するには、**AWS SDK コードサンプルリポジトリの「[SDK for JavaScript v3 の Amazon Personalize コードサンプル](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/personalize)」を参照してください。

開始方法の演習を完了したら、不要な料金が発生しないように、作成したリソースを削除します。詳細については、「[Amazon Personalize リソースを削除するための要件](deleting-resources.md)」を参照してください。

**Topics**
+ [前提条件](#gs-js-sdk-domain-prerequisites)
+ [チュートリアル](#domain-gs-js-domain-tutorial)

## 前提条件
<a name="gs-js-sdk-domain-prerequisites"></a>

このチュートリアルを完了するための前提条件となる手順は次のとおりです。
+ [開始方法の前提条件](gs-prerequisites.md) を完了して必要な権限を設定し、トレーニングデータを作成します。[ドメインデータセットグループの開始方法 (コンソール)](getting-started-console-domain.md) も完了していれば、同じソースデータを再利用できます。独自のソースデータを使用する場合は、前提条件に示しているようにそのデータがフォーマットされていることを確認します。
+ **「AWS SDK for JavaScript デベロッパーガイド」の「[SDK for JavaScript の設定](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-up.html)」の手順で指定されているように、AWS 認証情報を設定します。

## チュートリアル
<a name="domain-gs-js-domain-tutorial"></a>

次の手順では、必要な依存関係をインストールします。次に、データセットグループを作成し、データをインポートし、ユースケースの*上位のおすすめ*向けのレコメンダーを作成して、レコメンデーションを取得します。

Node.js を使用する場合は、サンプルを JavaScript ファイルとして保存してから実行することで、`node <fileName.js>` を実行できます。

### ステップ 1: Amazon Personalize の依存関係をインストールする
<a name="domain-gs-js-install-dependencies"></a>

前提条件を満たしたら、Amazon Personalize の以下の依存関係をインストールします。
+ @aws-sdk/client-personalize
+ @aws-sdk/client-personalize-runtime
+ @aws-sdk/client-personalize-events (このチュートリアルではオプションですが、レコメンダーを作成した後に[イベントを記録する](recording-events.md)場合は必須)

次は、使用できる `package.json` ファイルの例です。Node.js を使用して依存関係をインストールするには、`package.json` ファイルを保存した場所に移動して `npm install` を実行します。

```
{
  "name": "personalize-js-project",
  "version": "1.0.0",
  "description": "personalize operations",
  "type": "module",
  "author": "Author Name <email@address.com>",
  "license": "ISC",
  "dependencies": {
    "@aws-sdk/client-personalize": "^3.350.0",
    "@aws-sdk/client-personalize-events": "^3.350.0",
    "@aws-sdk/client-personalize-runtime": "^3.350.0",
    "fs": "^0.0.1-security"
  },
  "compilerOptions": {
    "resolveJsonModule": true,
    "esModuleInterop": true
  }
}
```

### ステップ 2: Amazon Personalize のクライアントを作成する
<a name="domain-gs-js-clients"></a>

依存関係をインストールしたら、Amazon Personalize クライアントを作成します。このチュートリアルでは、`libs` というディレクトリに保存された `personalizeClients.js` という名前のファイルにクライアントを作成することを前提としています。

次は、`personalizeClient.js` ファイルの例です。

```
import { PersonalizeClient } from "@aws-sdk/client-personalize";
import { PersonalizeRuntimeClient } from "@aws-sdk/client-personalize-runtime";
import { PersonalizeEventsClient } from "@aws-sdk/client-personalize-events";
// Set your AWS region.
const REGION = "region"; //e.g. "us-east-1"

const personalizeClient = new PersonalizeClient({ region: REGION});
const personalizeEventsClient = new PersonalizeEventsClient({ region: REGION});
const personalizeRuntimeClient = new PersonalizeRuntimeClient({ region: REGION});

export { personalizeClient, personalizeEventsClient, personalizeRuntimeClient };
```

### ステップ 3: データをインポートする
<a name="domain-gs-js-import-dataset"></a>

Amazon Personalize のクライアントを作成したら、「[開始方法の前提条件](gs-prerequisites.md)」の完了時に作成した履歴データをインポートします。過去のデータを Amazon Personalize にインポートするには、次の操作を実行します。

1.  次の Avro スキーマを JSON ファイルとして作業ディレクトリに保存します。このスキーマは、「[トレーニングデータの作成 (ドメインデータセットグループ)](gs-prerequisites.md#gs-data-prep-domain)」を完了時に作成した CSV ファイルの列と一致します。

   ```
   {
     "type": "record",
     "name": "Interactions",
     "namespace": "com.amazonaws.personalize.schema",
     "fields": [
         {
             "name": "USER_ID",
             "type": "string"
         },
         {
             "name": "ITEM_ID",
             "type": "string"
         },
         {
             "name": "EVENT_TYPE",
             "type": "string"
         },
         {
             "name": "TIMESTAMP",
             "type": "long"
         }
     ],
     "version": "1.0"
   }
   ```

1. 以下の `createDomainSchema.js` コードを使用して Amazon Personalize でドメインスキーマを作成します。`SCHEMA_PATH` を、先ほど作成した schema.json へのパスに置き換えます。`createSchemaParam` を更新してスキーマの名前を指定し、`domain` を `VIDEO_ON_DEMAND` と指定してください。

   ```
   // Get service clients module and commands using ES6 syntax.
   import { CreateSchemaCommand } from "@aws-sdk/client-personalize";
   import { personalizeClient } from "./libs/personalizeClients.js";
   
   // Or, create the client here.
   // const personalizeClient = new PersonalizeClient({ region: "REGION"});
   
   import fs from "node:fs";
   
   const schemaFilePath = "SCHEMA_PATH";
   let mySchema = "";
   
   try {
     mySchema = fs.readFileSync(schemaFilePath).toString();
   } catch (err) {
     mySchema = "TEST"; // for unit tests.
   }
   
   // Set the domain schema parameters.
   export const createDomainSchemaParam = {
     name: "NAME" /* required */,
     schema: mySchema /* required */,
     domain:
       "DOMAIN" /* required for a domain dataset group, specify ECOMMERCE or VIDEO_ON_DEMAND */,
   };
   
   export const run = async () => {
     try {
       const response = await personalizeClient.send(
         new CreateSchemaCommand(createDomainSchemaParam),
       );
       console.log("Success", response);
       return response; // For unit tests.
     } catch (err) {
       console.log("Error", err);
     }
   };
   run();
   ```

1. 次の`createDomainDatasetGroup.js`コードを使用して、Amazon Personalize コンソールにドメインデータセットグループを作成します。`domainDatasetGroupParams` を更新してデータセットグループの名前を指定し、`domain` を `VIDEO_ON_DEMAND` と指定してください。

   ```
   // Get service clients module and commands using ES6 syntax.
   import { CreateDatasetGroupCommand } from "@aws-sdk/client-personalize";
   import { personalizeClient } from "./libs/personalizeClients.js";
   
   // Or, create the client here.
   // const personalizeClient = new PersonalizeClient({ region: "REGION"});
   
   // Set the domain dataset group parameters.
   export const domainDatasetGroupParams = {
     name: "NAME" /* required */,
     domain:
       "DOMAIN" /* required for a domain dsg, specify ECOMMERCE or VIDEO_ON_DEMAND */,
   };
   
   export const run = async () => {
     try {
       const response = await personalizeClient.send(
         new CreateDatasetGroupCommand(domainDatasetGroupParams),
       );
       console.log("Success", response);
       return response; // For unit tests.
     } catch (err) {
       console.log("Error", err);
     }
   };
   run();
   ```

1. 次の `createDataset.js` コードを使用して Amazon Personalize でアイテムインタラクションデータセットを作成します。`createDatasetParam` を更新して、先ほど作成したデータセットグループとスキーマの Amazon リソースネーム (ARN) を指定し、データセットに名前を付け、`datasetType` を `Interactions` と指定してください。

   ```
   // Get service clients module and commands using ES6 syntax.
   import { CreateDatasetCommand } from "@aws-sdk/client-personalize";
   import { personalizeClient } from "./libs/personalizeClients.js";
   
   // Or, create the client here.
   // const personalizeClient = new PersonalizeClient({ region: "REGION"});
   
   // Set the dataset's parameters.
   export const createDatasetParam = {
     datasetGroupArn: "DATASET_GROUP_ARN" /* required */,
     datasetType: "DATASET_TYPE" /* required */,
     name: "NAME" /* required */,
     schemaArn: "SCHEMA_ARN" /* required */,
   };
   
   export const run = async () => {
     try {
       const response = await personalizeClient.send(
         new CreateDatasetCommand(createDatasetParam),
       );
       console.log("Success", response);
       return response; // For unit tests.
     } catch (err) {
       console.log("Error", err);
     }
   };
   run();
   ```

1. 次の `createDatasetImportJob.js` コードを使用してデータをインポートします。`datasetImportJobParam` を更新して次のように指定します。
   + ジョブの名前を指定し、インタラクションデータセットの ARN を指定します。
   + `dataLocation` で、トレーニングデータを保存した Amazon S3 バケットへのパス (`s3://https://amzn-s3-demo-bucket.s3.region-code.amazonaws.com/folder name/ratings.csv`) を指定します。
   + `roleArn` には、Amazon Personalize サービスロールの Amazon リソースネームを指定してください。このロールは [開始方法の前提条件](gs-prerequisites.md) の一部として作成しました。

   ```
   // Get service clients module and commands using ES6 syntax.
   import { CreateDatasetImportJobCommand } from "@aws-sdk/client-personalize";
   import { personalizeClient } from "./libs/personalizeClients.js";
   
   // Or, create the client here.
   // const personalizeClient = new PersonalizeClient({ region: "REGION"});
   
   // Set the dataset import job parameters.
   export const datasetImportJobParam = {
     datasetArn: "DATASET_ARN" /* required */,
     dataSource: {
       /* required */
       dataLocation: "S3_PATH",
     },
     jobName: "NAME" /* required */,
     roleArn: "ROLE_ARN" /* required */,
   };
   
   export const run = async () => {
     try {
       const response = await personalizeClient.send(
         new CreateDatasetImportJobCommand(datasetImportJobParam),
       );
       console.log("Success", response);
       return response; // For unit tests.
     } catch (err) {
       console.log("Error", err);
     }
   };
   run();
   ```

### ステップ 4: レコメンダーを作成する
<a name="domain-gs-js-create-recommender"></a>

データセットのインポートジョブが完了すると、レコメンダーを作成する準備が整います。レコメンダーを作成するには、次の `createRecommender.js` コードを使用します。`createRecommenderParam` を次のように更新します: レコメンダーの名前を指定し、データセットグループの ARN を指定して、`recipeArn` に対して `arn:aws:personalize:::recipe/aws-vod-top-picks` を指定してください。

```
// Get service clients module and commands using ES6 syntax.
import { CreateRecommenderCommand } from "@aws-sdk/client-personalize";
import { personalizeClient } from "./libs/personalizeClients.js";

// Or, create the client here.
// const personalizeClient = new PersonalizeClient({ region: "REGION"});

// Set the recommender's parameters.
export const createRecommenderParam = {
  name: "NAME" /* required */,
  recipeArn: "RECIPE_ARN" /* required */,
  datasetGroupArn: "DATASET_GROUP_ARN" /* required */,
};

export const run = async () => {
  try {
    const response = await personalizeClient.send(
      new CreateRecommenderCommand(createRecommenderParam),
    );
    console.log("Success", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

### ステップ 5: レコメンデーションを取得する
<a name="domain-gs-js-get-recommendations"></a>

キャンペーンを作成したら、そのキャンペーンを使用してレコメンデーションを取得します。次の `getRecommendations.js` コードを使用して、ユーザー向けのレコメンデーションを取得します。`getRecommendationsParam` を更新して前のステップで作成したレコメンダーの ARN を指定し、ユーザ ID (例:`123`) を指定します。

```
// Get service clients module and commands using ES6 syntax.
import { GetRecommendationsCommand } from "@aws-sdk/client-personalize-runtime";
import { personalizeRuntimeClient } from "./libs/personalizeClients.js";
// Or, create the client here.
// const personalizeRuntimeClient = new PersonalizeRuntimeClient({ region: "REGION"});

// Set the recommendation request parameters.
export const getRecommendationsParam = {
  recommenderArn: "RECOMMENDER_ARN" /* required */,
  userId: "USER_ID" /* required */,
  numResults: 15 /* optional */,
};

export const run = async () => {
  try {
    const response = await personalizeRuntimeClient.send(
      new GetRecommendationsCommand(getRecommendationsParam),
    );
    console.log("Success!", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```