# Cloud Code の設定

> Set up Cloud Code scripts or modules to use with the Triggers service.

Triggers サービスを使用するには、Cloud Code スクリプトまたは Cloud Code モジュールを定義する必要があります。

| ###### Cloud Code C# モジュールタイプセーフプログラミング言語と強力な .NET コンポーネントを使用して、サーバーサイドコードを記述します。NuGet のようなツールを使用して、プロジェクトバンドル動的リンクライブラリ (DLL) 内の必要な他のコンテンツを消費します。[Cloud Code C# モジュールの使用を準備します。](/cloud-code/modules/overview.md)                                                                     |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ###### Cloud Code JavaScript スクリプトサーバーサイドコードを簡単に記述して言語をイテレートします。JavaScript フロントエンドバックグランドから来た場合は、同じエコシステムを利用します。Cloud Code コマンドラインですぐに使用可能なサポートされる CommonJS および ECMAScript モジュールシステムを通じて、コードを再利用可能な部分とバンドルします。[Cloud Code JavaScript スクリプトの使用を準備します。](/cloud-code/scripts/overview.md) |

トリガー設定を定義した場合、このスクリプトまたはモジュールは、トリガーが発生したときに実行されます。

## 実行の戻り値##execution-return-value

現在、Triggers サービスは Cloud Code からの戻り値を操作しません。ゲームロジックを直接実行するモジュールとスクリプトを作成することで、これを考慮します。

## コンテキスト属性##context-attributes

Triggers サービスはサービスアカウントによって認証されるため、特定の属性はスクリプトの `context` オブジェクトと実行中のモジュールの `IExecutionContext` インターフェースでは使用できません。

プレイヤー認証がないため、以下の属性は使用できません。

* `playerId`
* `accessToken`
* `unityInstallationId`
* `analyticsUserId`
* `correlationId`

スクリプトとモジュールがこれらの属性に依存しないことを確認してください。

> **Note:**
>
> **ノート:** `serviceToken` を使用して認証することはできます。これにより、Lobby サービスなどの他の UGS サービスを呼び出して、プレイヤーデータを取得できます。

## クロスプレイヤーデータ##cross-player-data

Cloud Code を使用してクロスプレイヤーデータを変更するには、`serviceToken` を使用して認証し、他の UGS サービスを呼び出す必要があります。

Cloud Code ロジックを記述するときにコンテキストオブジェクトからプレイヤー ID を取得することはできません。ただし、トリガーが UGS から発行されたイベントとペアになっている場合は、多くの場合、イベントペイロードからプレイヤー ID を取得し、プレイヤーデータを操作できます。サポートされるイベントとそれらのペイロードの詳細については、[サポートされる UGS イベント](/triggers/manage-events/supported-ugs-events.md) を参照してください。

他の Unity Gaming Services を呼び出してプレイヤーデータを取得することもできます。例えば、スクリプトまたはモジュールでこれらのサービスを呼び出すことで、Leaderboards からのプレイヤーまたは Lobby サービスのプレイヤーを取得できます。

[ユースケースサンプル: ゲーム内通貨で上位プレイヤーに報酬を与える](../tutorials/use-cases/reward-top-players) にある例を参照してください。

## ペイロードパラメーター##payload-parameters

Cloud Code モジュールおよびスクリプトは、一連のパラメーター付きで呼び出すことができます。これらのパラメーターは、イベントのペイロードで定義されます。スケジュールされたイベントのペイロードは、スケジュール設定でユーザーによって定義されます。UGS イベントの場合、イベントペイロードのコンテンツについては [サポートされている UGS イベント](/triggers/manage-events/supported-ugs-events.md) を参照してください。

パラメーターは、他のスクリプトまたはモジュールの場合と同じ方法で定義する必要があります。

トリガーイベントのペイロードは、Cloud Code 呼び出しの引数セットとして使用されます。イベントペイロード内のキーに一致する定義済みパラメーターが設定されます。すべてのイベントペイロードには `projectId`、`environmentId`、`correlationId` が自動的に含まれます。

例えば、以下のスクリプトに文字列パラメーター `name` がある場合、

### JavaScript##javascript

```javascript
module.exports = async ({ params, context, logger }) => {
  return "Hello " + params.name;
};
```

または、モジュールに文字列パラメーター `name` を持つ関数 `SayHello` がある場合、

```csharp
using Unity.Services.CloudCode.Core;

namespace ExampleModule;

public class MyModule
{
    [CloudCodeFunction("SayHello")]
    public string Hello(string name)
    {
        return $"Hello, {name}!";
    }
}
```

スケジュールされた設定のペイロードを以下のように定義します。

```json
{
  "name": "hello-world-test",
  "eventName": "hello-world-test",
  "type": "one-time",
  "schedule": "2023-08-28T15:20:00Z",
  "payloadVersion": 1,
  "payload": "{\"name\": \"World\"}"
}
```

トリガーが発生すると、ペイロードパラメーターが設定された Cloud Code スクリプトまたはモジュールが実行されます。

> **Note:**
>
> **ノート:** 制限が適用されます。詳細については、[制限](/triggers/limits.md) を参照してください。
