# 制限

> Understand the API rate limits, data size limits, and other constraints for Cloud Code modules.

Cloud Code モジュールには、処理できるデータ量に制限があります。

## Cloud Code API##cloud-code-api

* Cloud Code Client API サービスは、各プレイヤーを 1 分あたり 12,000 リクエストに制限します。
* Cloud Code Admin API サービスは、各サービスアカウントを 1 分あたり 120 リクエストに制限します。
* Admin API のレート制限の方が低いため、プレイヤーごとに Admin API を呼び出さないでください。

## Cloud Code C# モジュール##cloud-code-c-modules

* モジュールを含む .ccm ファイルのサイズが 10 MB を超えることはできません。
* プロジェクト内のすべての .ccm ファイルの合計サイズが 128 Mb を超えることはできません。
* モジュールを実行するときのレスポンス本文 (モジュールの出力) の合計サイズは、2 MiB を超えることはできません。
* プロジェクト内のすべての環境にまたがるモジュール数は 20 以下である必要があります。
* モジュール関数の実行時間が 15 秒を超えることはできません。関数がこの時間制限を超えた場合、プロセスは強制停止されます。
* モジュールは最大 10 個のタグを持つことができ、タグキーとタグ値ごとに使用できる最大文字数は 128 です。
* モジュールが過去 15 分間にトラフィックを受信しなかった場合、コールドスタートの待ち時間が発生する可能性があります。その後のモジュールへの呼び出しは、より高速になります。
* `async void` パターンはエラーの原因になります。常に `Task` または `Task<T>` を返します。非同期プログラミングのベストプラクティスについては、[Microsoft の公式ドキュメント](https://learn.microsoft.com/en-us/archive/msdn-magazine/2013/march/async-await-best-practices-in-asynchronous-programming) を参照してください。
* Cloud Code は、Cloud Code 関数の静的メソッドをサポートしていません。

### 呼び出し間でのモジュールの永続性##module-persistence-between-invocations

モジュールの状態が呼び出し間で持続する保証はありません。モジュールは別のワーカーでリロードされる可能性があるため、モジュール関数の呼び出し間で常に共有状態に依存できるとは限りません。ただし、モジュールがロードされたままである間は、静的変数とシングルトン依存関係は呼び出し間で共有されます。

この動作を有効活用して、静的変数またはシングルトン依存関係にデータをキャッシュし、外部サービスからフェッチする必要があるデータの量を減らすことができます。データ (特にすべてのプレイヤーに対して一貫性を保つ必要のあるデータ) を保持するためにこのモジュールの動作を使用しないでください。

### 依存性注入##dependency-injection

* 複数のワーカーがある場合、API 呼び出しが毎回同じワーカーを対象にする保証はないため、モジュール関数呼び出し間の共有状態に依存しないでください。
* Cloud Code のワーカーが 256 MB のメモリ制限を超えた場合、ワーカーは最終的にクラッシュします。
* `ICloudCodeSetup` 設定は、1 つのモジュール内の単一クラスによってのみ実装する必要があります。

### プッシュメッセージ##push-messages

* WebSocket 接続経由で送信されるメッセージには 10 KB の制限があります。

### UGS CLI とエディターのデプロイ##ugs-cli-and-editor-deployment

* UGS CLI と Deployment (デプロイ) ウィンドウでは、同じプロジェクト内に複数のモジュールが含まれるモジュールをデプロイすることはできません。
* UGS CLI と Deployment (デプロイ) ウィンドウはモジュールタグをサポートしていないため、それらを無視します。

### エディターのバインディング##editor-bindings

* 生成されたバインディングでは、必須パラメーターとオプションパラメーターは区別されません。
* タプルは、パラメーターまたは戻り値としてサポートされていません。

## Cloud Code と他の Unity サービスのインテグレーション##cloud-code-integration-with-other-unity-services

* すべての Unity サービスには、API の過剰な使用を防ぐためにプレイヤーごとのレート制限があります。Cloud Code レート制限は、ゲームとサーバーコード間で共有されます。例えば、Cloud Code とゲームの両方から Economy を使用する場合、予期しないレート制限エラーを受け取る可能性があります。これらのエラーをデバッグする際には、両方の使用タイプを考慮することが重要です。
* モジュールは、モジュールを保存したのと同じ [環境](/services/service-environments.md) にデプロイする他の UGS リソースにのみアクセスできます。モジュールは、他の環境内のサービスにアクセスできません。

Cloud Code と統合する方法について詳しくは、[他の Unity サービスとのインテグレーション](../how-to-guides/unity-services-integration) のページを参照してください。
