# Unity Gaming Services CLI

> Use the Unity Gaming Services command-line interface to create, deploy, and manage Cloud Code modules.

[Unity Gaming Services CLI](https://services.docs.unity.com/guides/ugs-cli/latest/general/overview) を使用して、Cloud Code モジュールを操作できます。CLI を使用して、コマンドラインから Cloud Code モジュールを作成、デプロイ、管理できます。

## 前提条件##prerequisites

CLI を深く掘り下げて調べるには、[Unity Gaming Services CLI の使用の準備ガイド](https://services.docs.unity.com/guides/ugs-cli/latest/general/get-started/install-the-cli/) のステップに従います。

このガイドに従うには、最初に以下のアクションを実行する必要があります。

1. [UGS CLI をインストール](https://services.docs.unity.com/guides/ugs-cli/latest/general/get-started/install-the-cli/) します。

2. プロジェクト ID と環境を以下のように設定します。
   `ugs config set project-id <your-project-id>`
   `ugs config set environment-name <your-environment-name>`

3. [Cloud Code](https://services.docs.unity.com/docs/service-account-auth/index.html#cloud-code-editor) と [環境管理](https://services.docs.unity.com/docs/service-account-auth/index.html#unity-environments-admin) に必要なロールでサービスアカウントを設定します。[認証の取得](https://services.docs.unity.com/guides/ugs-cli/latest/general/get-started/get-authenticated/) を参照してください。

## CLI の使用##using-the-cli

すべてのコマンドとオプションの完全なリファレンスについては、[Cloud Code コマンドラインのドキュメント](https://services.docs.unity.com/guides/ugs-cli/latest/cloud-code/Cloud%20Code%20Command%20Line/overview) を参照してください。

> **Note:**
>
> **ノート:** `ugs cloud-code modules` コマンドは `ugs cc m` としても使用可能です。

> **Note:**
>
> **ノート:** CLI は現在モジュールのカスタムタグをサポートしておらず、それらは無視されます。カスタムのキーと値のペアをモジュールにアタッチする場合は、[Cloud Code API](./rest-api.md) を使用します。

### モジュールの作成##create-modules

サンプルモジュールでソリューションをローカルに作成するには、`new-file` コマンドを実行します。

```bash
ugs cloud-code modules new-file <module-name> <module-directory>
```

コマンドにより、サンプルモジュールとともに新しいソリューションが作成されます。

ソリューションをそのまま使用することも、ニーズに合わせて変更することもできます。

> **Note:**
>
> **ノート:** ストレージ制限が適用されます。[Cloud Code 制限](../../reference/limits#cloud-code-c-modules) を確認してください。

### モジュールのデプロイ##deploy-modules

`Deploy` コマンドにより、Cloud Code モジュールをリモート環境にデプロイできます。コマンドでは、`.ccm` 形式の事前コンパイルされたモジュールと、デプロイ前に自動的にコンパイルおよび圧縮される C# ソリューションの両方がサポートされます。

デフォルトでは、デプロイはソリューションの `Release` ビルド設定に基づいて行われます。サイズを減らすため、この設定にはテストプロジェクトなど余分な内容を加えないことをお勧めします。ビルド設定の詳細については、[Rider](https://www.jetbrains.com/help/rider/Build_Configurations.html) または [Visual Studio](https://learn.microsoft.com/en-us/visualstudio/ide/understanding-build-configurations?view=vs-2022) のドキュメントを参照してください。

一度に複数のモジュールをデプロイするには、複数のファイルパスを指定するか、複数のファイルを含むディレクトリを指定します。

```bash
ugs deploy <path-to-ccm-file> <path-to-sln-file>
```

```bash
ugs deploy <path-to-directory>
```

#### C# ソリューションのデプロイ##deploy-c-solutions

C# ソリューションをデプロイできます。また、デプロイ前に自動的にコンパイルおよび圧縮できます。

コンパイルをサポートするには、ソリューションに [メインプロジェクト](../module-structure#main-project) の公開プロファイルが含まれている必要があります。

公開プロファイルの作成方法については、特定の IDE ドキュメントを参照してください。

* JetBrains Rider - [公開プロファイル](https://www.jetbrains.com/help/rider/Publishing_Web_Apps.html#publish-profiles)
* Visual Studio - [ASP.NET Core アプリケーションデプロイ用の Visual Studio 公開プロファイル (.pubxml)](https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/visual-studio-publish-profiles?view=aspnetcore-7.09)
* Visual Studio - [Visual Studio for Mac を使用したフォルダーへの公開](https://learn.microsoft.com/en-us/visualstudio/mac/publish-folder?view=vsmac-2022\&toc=%2Faspnet%2Fcore%2Ftoc.json\&bc=%2Faspnet%2Fcore%2Fbreadcrumb%2Ftoc.json#customize-publish-options)

ソリューションをデプロイする場合、それらはデプロイ前に自動的にコンパイルおよび圧縮されます。結果はローカル一時フォルダー (例えば `<temp-folder>/<solution-name>`) に保存されます。

C# ソリューションをデプロイするには、`.sln` ファイルへのパスをコマンドへの引数として指定します。

```bash
ugs deploy <path-to-sln-file>
```

> **Warning:**
>
> **重要**: 現在、ソリューションデプロイはソリューションごとに 1 つのメインプロジェクトのみをサポートします。メインプロジェクトは、公開プロファイルを含むプロジェクトです。複数のモジュールを含むソリューションはデプロイできません。また、このソリューションのすべてのプロジェクトが、フォルダー階層内のソリューションファイルの下にあることを確認します。ソリューションを構造化する方法を理解するには、[モジュール構造](../module-structure) を参照してください。

#### 事前コンパイルされたモジュールのデプロイ##deploy-pre-compiled-modules

事前コンパイルされたモジュールをデプロイするには、`.ccm` ファイルへのパスをコマンドへの引数として指定します。

```bash
ugs deploy <path-to-ccm-file>
```

> **Note:**
>
> **ノート:** ほとんどのユースケースでは、[ソリューションのデプロイ](#deploy-c-solutions) ワークフローを使用できます。より高度なワークフローとしては、事前コンパイル済みのモジュールをパッケージ化してデプロイできます。モジュールを `.ccm` ファイルに圧縮する方法については、[コードのパッケージ化](../package-code) を参照してください。

### 環境の同期##environment-synchronization

1 つの環境からすべてのモジュールを移動し、それらを別の環境にデプロイできます。

以下のコマンドを実行して、現在の環境内のすべてのモジュールのアーカイブを生成します。

```bash
ugs cloud-code modules export <out-dir> <file-name>
```

次に、以下のコマンドを実行することで、モジュールをインポートし、それらを別の環境にデプロイできます。

```bash
ugs cloud-code modules import <in-dir> <file-name> --environment-name <environment-name>
```

> **Note:**
>
> **ノート:** `Import` はデフォルトで環境を上書きしません。インポート前に既存のモジュールを削除するには、`--reconcile` フラグを使用します。

### モジュールの取得##retrieve-modules

デプロイした単一のモジュールに関する情報を取得するには、以下のコマンドを実行します。

```bash
ugs cloud-code modules get <module-name>
```

モジュール名は、.ccm アーカイブに含まれている .NET クラスライブラリの名前です。以下のコマンドを実行して、Cloud Code に現在デプロイされているすべてのモジュールをリストすることもできます。

```bash
ugs cloud-code modules list
```

### モジュールの削除##delete-module

モジュールを削除するには、以下のコマンドを実行します。

```bash
ugs cloud-code modules delete <module-name>
```
