# Cloud Code C# モジュール

> Deploy reusable, server authoritative C# libraries that allow multiple entry points and generate type-safe client bindings.

モジュールは、Cloud Code サービスが再利用可能なサーバー認証コードを提供するために実行できる C# ライブラリです。Cloud Code スクリプトとは異なり、モジュールでは複数のエントリーポイントが認められており、モジュール内でのコードの再利用が簡単になります。

Unity エディターからモジュールのバインディングを生成して、Cloud Code クライアントとゲーム間で転送するデータの形式が同じであることを確認できます。

Unity で作成されたゲームから、または他のクライアントまたはサーバーからモジュールを呼び出すことができます。

| オーサリング方法                                                            | 説明                                                                                                                              |
| ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| [Unity エディター](./how-to-guides/write-modules/unity-editor.md)        | Unity エディターを使用して、Deployment (デプロイ) ウィンドウを使用したモジュールの作成とデプロイ、ワークフローの自動化を行い、他の Unity サービスとともに Cloud Code をデプロイします。                 |
| [Unity Gaming Services CLI](./how-to-guides/write-modules/cli.md)   | CLI を使用して、コマンドラインからモジュールをデプロイおよび管理します。一度に複数の Unity サービス設定をデプロイし、CI/CD と統合します。                                                   |
| [Unity Dashboard](./how-to-guides/write-modules/unity-dashboard.md) | Unity Dashboard を使用して、デプロイしたモジュールのリストをプレビューします。同じ場所から [Remote Config](/remote-config.md) などの他の Unity Gaming Services にアクセスできます。 |
| [REST API](./how-to-guides/write-modules/rest-api.md)               | REST API を使用して、モジュールを作成、デプロイ、管理します。                                                                                             |

> **Note:**
>
> Cloud Code C# モジュールは、`UnityEngine` 名前空間または \[Unity のスクリプティング API] の他の場所からのクラスを使用できません。これは、Cloud Code がオープンソースの [.NET runtime] を使用しているためです (バージョン 9 までがサポートされています)。これは Unity Runtime から分離されており、その \[スクリプティングバックエンド] のいずれにも依存しません。

[.NET runtime]: https://github.com/dotnet/runtime#net-runtime

## 典型的なワークフロー##typical-workflow

以下のプロセスは、一般的な開発サイクルの詳細を示します。

1. [C# ライブラリプロジェクトを作成](./getting-started.md) します。[Unity エディター](./getting-started.md) でソリューションを作成するか、[UGS CLI](./how-to-guides/write-modules/cli.md) を使用して新しいモジュールプロジェクトを作成します。
2. [コードを記述](./how-to-guides/write-modules.md) します。Cloud Code C# サービス SDK を使用して、他の [Unity サービス](./how-to-guides/unity-services-integration.md) と統合します。HTTP クライアントを使用して、[外部サービスと統合](./how-to-guides/external-services-integration.md) します。
3. [テストおよびデバッグ](./how-to-guides/unit-testing.md) します。モジュールの単体テストプロジェクトを作成して、すべてが意図したとおりに動作することを検証するか、開発環境にライブラリをデプロイして実際のユーザーデータでテストします。
4. [モジュールをデプロイ](./getting-started.md#deploy-the-module) します。[Unity エディターの Deployment (デプロイ) ウィンドウ](./getting-started.md#deploy-the-module) または [UGS CLI](./how-to-guides/write-modules/cli.md) からプロジェクトをデプロイするか、Cloud Code 内で利用できるようにします。
5. [モジュールをプロジェクトと統合](./getting-started.md#call-a-module-function-from-your-game) します。Cloud Code SDK をゲームにインポートし、提供されているメソッドのどれかを使用してスクリプトを呼び出します。

## 使用の準備##getting-started

モジュールの作成と実行の基礎を説明します。

| トピック                                           | 説明                                                                                                                                                                                                            |
| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [モジュールの作成](./getting-started.md)               | モジュールの使用を準備します。                                                                                                                                                                                               |
| [モジュール構造](./how-to-guides/module-structure.md) | モジュールプロジェクトの構造を説明します。                                                                                                                                                                                         |
| [モジュールの記述](./how-to-guides/write-modules.md)   | [Unity エディター](./how-to-guides/write-modules/unity-editor.md)、[UGS CLI](./how-to-guides/write-modules/cli.md)、または [REST API](./how-to-guides/write-modules/rest-api.md) を使用してモジュールを記述する方法を説明します。               |
| [モジュールの実行](./how-to-guides/run-modules.md)     | [REST API](./how-to-guides/run-modules/rest-api.md) を使用するか [Multiplay サーバー](./how-to-guides/run-modules/game-server.md) から、[Unity Runtime](./how-to-guides/run-modules/unity-runtime.md) のモジュールを実行する方法を説明します。 |
| [エラー処理](./how-to-guides/error-handling.md)     | モジュール内でエラーを処理する方法を説明します。                                                                                                                                                                                      |
| [ロギング](../logging/overview)                    | ロギングを使用してモジュールをデバッグする方法を説明します。                                                                                                                                                                                |
| [制限](./reference/limits.md)                    | Cloud Code モジュールの制限について説明します。                                                                                                                                                                                 |
| [コスト](./reference/cost.md)                     | Cloud Code モジュールのコストについて説明します。                                                                                                                                                                                |

## 開発の要点##development-essentials

モジュールの構成方法を説明します。開発を容易にするために、モジュールでは依存性注入、DTO、およびカスタムシリアル化がサポートされます。

| トピック                                                                    | 説明                                                  |
| ----------------------------------------------------------------------- | --------------------------------------------------- |
| [モジュール構造](./how-to-guides/module-structure.md)                          | モジュールプロジェクトの構造を説明します。                               |
| [依存性注入](./how-to-guides/initialize-modules/dependency-injection.md)     | コードで依存関係を分離する方法を説明します。                              |
| [単体テスト](./how-to-guides/unit-testing.md)                                | モジュールの単体テストを記述する方法を説明します。                           |
| [カスタムシリアル化](./how-to-guides/initialize-modules/custom-serialization.md) | `Newtonsoft.Json` プロパティを使用してカスタムシリアル化を使用する方法を説明します。 |
| [リクエストのバッチ処理](./how-to-guides/batch-requests.md)                        | リクエストをバッチ処理する方法を説明します。                              |

## デプロイの自動化##automate-deployment

モジュールの開発とデプロイを合理化するには、プロセスを自動化します。

| トピック                                                         | 説明                                  |
| ------------------------------------------------------------ | ----------------------------------- |
| [CI/CD とのインテグレーション](./how-to-guides/automation.md)           | モジュールのデプロイを CI/CD パイプラインと統合します。     |
| [ローカルデプロイの自動化](./how-to-guides/automate-local-deployment.md) | Cloud Code サービスへのモジュールのデプロイを自動化します。 |

## さらなるインテグレーション##integrate-further

モジュールを他の Unity Gaming Services や任意の外部サービスと統合し、クロスプレイヤーデータにアクセスできます。

C# SDK を使用して他のサービスと統合するには、`NuGet` パッケージをインストールするか、HTTP クライアントを使用できます。

| トピック                                                                   | 説明                                                   |
| ---------------------------------------------------------------------- | ---------------------------------------------------- |
| [認証](./how-to-guides/authentication.md)                                | Cloud Code でゲームクライアントを認証する方法を説明します。                  |
| [サービスとアクセストークンのサポート](./how-to-guides/token-support.md)                 | Cloud Code がサポートする UGS サービスとアクセストークンについて説明します。       |
| [利用可能なライブラリ](./reference/available-libraries.md)                       | Cloud Code モジュールに含まれる利用可能な UGS SDK があります。            |
| [アクセス制御](./how-to-guides/access-control.md)                            | アクセスを制御し、望ましくない使用を防ぐ方法を説明します。                        |
| [Unity サービスとのインテグレーション](./how-to-guides/unity-services-integration.md) | Cloud Code を他の Unity サービスに接続する方法を説明します。              |
| [外部サービスとのインテグレーション](./how-to-guides/external-services-integration.md)  | 外部サービスと統合する方法を説明します。                                 |
| [クロスプレイヤーデータの操作](./how-to-guides/cross-player-data.md)                 | 他のプレイヤーのデータにアクセスして更新する方法を説明します。                      |
| [プレイヤーへのプッシュメッセージの送信](./how-to-guides/push-messages.md)                | プレイヤーにプッシュメッセージを送信する方法を説明します。                        |
| [Triggers](/triggers.md)                                               | トリガーを使用して、スケジュールに従って、またはイベントに反応してモジュールを実行する方法を説明します。 |

## 上級者向けの設定##advanced-configuration

モジュールの詳細な設定が必要な場合は、以下のガイドを使用できます。

> **Important:**
>
> **重要**: これらのトピックは、特定のユースケースに合わせてモジュールを最適化したい上級ユーザーを対象としています。

| トピック                                                                                                        | 説明                                                                             |   |
| ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | - |
| [手動ワークフロー](./how-to-guides/manual-workflow.md)                                                              | モジュールを手動で作成、パッケージ化、デプロイする方法を説明します。                                             |   |
| [コードのパッケージ化](./how-to-guides/package-code.md)                                                               | モジュールコードをデプロイのために `.ccm` ファイルにパッケージ化する方法について説明します。                             |   |
| [プロジェクトファイルを使用したローカルデプロイの自動化](./how-to-guides/automate-local-deployment.md#automate-using-the-project-file) | プロジェクトファイルを使用して、モジュールのデプロイを自動化します。                                             |   |
| [データ転送オブジェクト](./how-to-guides/initialize-modules/dto.md)                                                    | データ転送オブジェクトを使用して、Cloud Code クライアントとゲーム間で転送されるすべてのデータが同じ形式を使用することを確認する方法を説明します。 |   |
