> ## Documentation Index
> Fetch the complete documentation index at: https://factory-changelog-jun25.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Cloud Templates

> ローカル開発環境を再現するクラウドホスト型テンプレートをすぐに起動できます。インストールは不要です

<Warning>
  **Cloud Templatesは[Droid Computers](/jp/cli/features/droid-computers)に置き換えられました。**

  Cloud Templatesは引き続きサポートされていますが、安定性のため切り替えを強くお勧めします。
</Warning>

クラウドテンプレートを使えば、「私のマシンでは動く」問題に悩まされることなく、**どこでも**コーディングできます。各テンプレートは事前設定済みの環境で、クラウド上で動作し、数秒で起動し、セットアップコマンドを実行するようにカスタマイズできます。

## クラウドテンプレートを使う理由

| メリット         | あなたにとっての意味                                                    |
| ------------ | ------------------------------------------------------------- |
| **セットアップ不要** | セッションを開いてすぐにコーディング開始。ローカルインストールやVM管理は不要です。                    |
| **一貫性**      | すべてのチームメイト（そしてCIジョブ）が\_全く\_同じ環境で実行されます。                       |
| **速度**       | 重いビルドは強力なクラウドCPUで実行。あなたのノートパソコンのファンは静かなままです。                  |
| **分離**       | 実験は使い捨てのテンプレート内で行われ、ローカルマシンをクリーンに保ちます。                        |
| **コラボレーション** | テンプレートリンクを共有すれば、レビュアーがコードとポートが既に実行されている\_ライブ\_環境にすぐにアクセスできます。 |

***

<h2 id="installation-usage">
  インストールと使用方法
</h2>

**クラウドテンプレート**は、クラウド上に存在する完全に設定された、オンデマンドの開発環境です。クラウドテンプレートは、ローカルで期待するのと同じツールと依存関係を提供するため、Factoryから直接コードのビルド、テスト、実行を行うことができます。

<Note>
  クラウドテンプレートを最大限活用するには、テンプレート作成時に環境変数とセットアップスクリプトを設定します。セットアップスクリプトは依存関係をインストールし、開発環境を自動的に準備するため、すべてのチームメンバーが同一のセットアップを利用できます。
</Note>

### システム要件

* Factoryで有効化されたリポジトリ
* クラウドテンプレートを作成するためのユーザーロール以上の権限

<Steps>
  <Step title="Cloud Templates 設定を開く">
    1. Factoryで左サイドバーの**Settings**アイコンをクリックします。
    2. **Cloud Templates**を選択します。
  </Step>

  <Step title="新しいクラウドテンプレートを作成">
    1. **Create Template**をクリックします。
    2. 使用するリポジトリを入力します。
    3. テンプレートにわかりやすい名前（例: “frontend-template”）を付けます。
    4. （任意）テンプレート初期化時に実行するセットアップスクリプトを設定します。
    5. **Create**をクリックします。

    <Note>
      Factory がリポジトリをクローンして環境を準備します。大規模なプロジェクトでは少し時間がかかる場合があります。
    </Note>
  </Step>

  <Step title="テンプレートの準備完了を確認">
    新しいテンプレートがステータス表示付きで一覧に表示されます。**Ready**と表示されたら、どのセッションからでも使用できます。
  </Step>
</Steps>

### セッション内でクラウドテンプレートを起動する

<Steps>
  <Step title="セッションを開く、または開始する">
    通常どおり任意のFactoryセッションに参加します。
  </Step>

  <Step title="Cloud Machine に接続">
    1. セッション開始ページでMachine Connectionボタンをクリックします。
    2. **Remote**タブを選択します。
    3. 先ほど作成したテンプレートを選択します。
    4. Factoryがクラウドテンプレートをセッションに接続します。

    <Frame>
      <img src="https://mintcdn.com/factory-changelog-jun25/xfLDX69NpJ4YXSx3/images/web/machine-connection-start.gif?s=a2fa2416a8279a6cf4f49c5aa540055f" alt="Factoryのセッション設定UIでクラウドテンプレートを接続するフロー" width="1156" height="720" data-path="images/web/machine-connection-start.gif" />
    </Frame>
  </Step>

  <Step title="接続を確認">
    右上のプロフィールドロップダウンの横に、緑色のインジケーターとリモート作業ディレクトリが表示されます。これでクラウドテンプレートに接続されています。
  </Step>
</Steps>

### 日常的な使用方法

<CardGroup cols={2}>
  <Card title="CLIコマンドを実行" icon="terminal">
    **Terminal**ツールキットを使用して、次のようなコマンドを実行します:
    <pre>npm run dev
    pytest
    git status</pre>
    出力はチャットとログにライブでストリーミングされます。
  </Card>

  <Card title="ファイルを編集・保存" icon="file-code">
    リポジトリのファイルを開き、変更して保存します。
    ファイルはクラウドテンプレート上に保持され、準備ができたらアップストリームにコミットできます。
  </Card>

  <Card title="自動保存の制御" icon="save">
    自動保存はデフォルトで無効です。ライブファイル同期を使用したい場合は、**Session Settings**パネルから有効にします。
  </Card>
</CardGroup>

***

<h2 id="setup-script">
  セットアップスクリプト
</h2>

セットアップスクリプトは、Factory がテンプレート作成時に実行するシェルスクリプトです。リポジトリがクローンされた後、テンプレートがアクティブ化される前に実行されます。この機能を使うと、テンプレートをセットアップし、Droid がコードベースで作業するために必要なツールを用意できます。

### セットアップスクリプトの定義方法

1. テンプレート作成モーダルの「Setup Script (Optional)」セクションに初期化スクリプトを追加します。必要なコマンドをすべて含む複数行の bash スクリプトを記述できます。
2. 作成を実行します。スクリプトは入力したとおりにリポジトリルートで実行されます。厳密なエラーハンドリングが必要な場合は、スクリプトの先頭に `set -euo pipefail` を追加してください。スクリプトが失敗するとビルドは停止します。
3. スクリプトは非対話的で冪等性を保つようにしてください。安全に再実行できるコマンドを記述してください。
4. 何か失敗した場合は、ビルドログを確認してスクリプト実行の詳細な出力を確認してください。

例：

**Node.js (Next.js):**

```bash theme={null}
#!/usr/bin/env bash
set -euo pipefail

npm ci
npm run build
```

**PNPM monorepo:**

```bash theme={null}
#!/usr/bin/env bash
set -euo pipefail

pnpm -w i
pnpm -w build
```

**Python:**

```bash theme={null}
#!/usr/bin/env bash
set -euo pipefail

pip install -r requirements.txt
pytest -q
```

**多言語プロジェクト:**

```bash theme={null}
#!/usr/bin/env bash
set -euo pipefail

# Install Node.js dependencies
npm ci

# Install Python dependencies
pip install -r requirements.txt

# Run setup script
bash ./scripts/setup.sh
```

内部で何が起こるか：

* スクリプトは、リポジトリのクローン後、ビルドコンテナ内のリポジトリルートで実行されます。
* テンプレート設定で指定された環境変数は、スクリプト実行時に利用できます。
* エラーは明確に表示され（例：`Setup script failed: ...`）、迅速な修正が可能です。

### セットアップスクリプトのトラブルシューティングのヒント

| 問題                                   | 修正方法                                                                                             |
| ------------------------------------ | ------------------------------------------------------------------------------------------------ |
| セットアップが「Setup script failed: …」で失敗する | ビルドログで具体的なエラーメッセージを確認してください。ローカルでスクリプトを実行してデバッグし、エラーハンドリングを追加し、非対話的フラグ（例：`-y`）を使用してから、再試行してください。 |
| コマンドが見つからない                          | スクリプトの早い段階で必要なツールをインストールするか、ベースUbuntuイメージで利用可能であることを確認してください。                                    |
| Permission denied (scripts)          | スクリプトを実行可能にする（`chmod +x ./scripts/setup.sh`）か、インタープリター経由で呼び出してください（`bash ./scripts/setup.sh`）。   |
| 環境変数が見つからない                          | Environment Variables セクションで追加し、`$VAR` として参照してください。スクリプト内でシークレットを `echo` しないでください。               |
| 長いビルド                                | スクリプトは最小限に保ってください。`npm install` より `npm ci` のようなキャッシュされたインストールを優先し、重い非必須作業は避けてください。              |
| パス/ファイルが見つからない                       | スクリプトはリポジトリルートで実行されます。相対パスとクローン後にファイルが存在することを確認してください。                                           |

***

<h2 id="best-practices">
  ベストプラクティス
</h2>

クラウドテンプレートを使用すると、一貫性のある本番環境対応の開発環境を数秒で立ち上げることができます。以下は、テンプレートを高速で予測可能、かつチームに優しく保つための実証済みのプラクティスです。

### スマートセットアップスクリプトのプラクティス

| プラクティス                | 重要な理由                       | 実行方法                                                                                            |
| --------------------- | --------------------------- | ----------------------------------------------------------------------------------------------- |
| **依存関係順にコマンドを配置**     | 後のコマンドは前のインストールに依存する可能性がある。 | パッケージインストールを最初に実行：`npm ci && npm run build` または `pip install -r requirements.txt && pytest -q`  |
| **正確なパッケージマネージャーを使用** | 一貫したロックファイルがバージョンドリフトを防ぐ。   | 再現可能なビルドのために `npm ci`（`npm install` ではない）、`pnpm -w i`、または `pip install -r requirements.txt` を使用 |
| **エラーハンドリングを追加**      | 最初の失敗でビルドを停止し、デバッグ時間を節約する。  | 適切なエラーハンドリングのためにスクリプトを `#!/usr/bin/env bash` と `set -euo pipefail` で開始                          |
| **スクリプトを早期に実行可能にする**  | ビルド中の権限エラーを回避する。            | `chmod +x ./scripts/setup.sh && bash ./scripts/setup.sh` を追加するか、`bash ./scripts/setup.sh` を直接使用 |
| **スクリプトを冪等に保つ**       | セットアップを再実行しても問題が起きないようにする。  | `pip install --no-deps` のようなフラグを使用するか、ファイルを作成する前に既存ファイルをチェック                                    |
| **重い処理を最小限に抑える**      | 長いビルドはテンプレート作成を遅くする。        | 必要最小限のセットアップに集中し、オプションのツールは後で手動インストールに委ねる                                                       |

> **ヒント：** セットアップスクリプトをまずローカルでテストしましょう。スクリプトはリポジトリルートで `bash` で実行され、厳密なエラーハンドリングのために `set -euo pipefail` を追加できます。

### スケールするワークフローパターン

<AccordionGroup>
  <Accordion title="タスクごとに起動">
    リモートセッションは使い捨てとして扱います。チケットまたはPRごとに1つ作成し、マージ後にアーカイブします。
    **メリット:** 完全な分離と「自分の環境では動く」ズレの解消。
  </Accordion>

  <Accordion title="並列環境">
    複数のブランチをテストする必要がありますか？2つの別々のセッションを起動すれば、プロセスを終了せずにコンテキストを切り替えられます。
  </Accordion>
</AccordionGroup>

### チームコラボレーションのヒント

| ヒント               | 詳細                                                                              |
| ----------------- | ------------------------------------------------------------------------------- |
| **テンプレートを明確に命名**  | 追跡するリポジトリに従ってテンプレートに名前を付ける。例：`repo-name` というリポジトリで作業するための `repo-name`           |
| **エントリーコマンドを文書化** | 一般的なタスク（`npm run dev`、`pytest`）を含む `AGENTS.md` ファイルを追加。Droid がこのファイルを自動的に読み取ります |

***

<h2 id="troubleshooting">
  トラブルシューティング
</h2>

最もスムーズなクラウドテンプレートでも問題が発生することがあります。このセクションでは、最も一般的なクラウドテンプレートの問題に対する最も迅速な修正方法を説明します。

### クイックリファレンス

| カテゴリ             | 典型的な症状                                       |
| ---------------- | -------------------------------------------- |
| **ワークスペース作成**    | 「Provisioning」のまま進まない、クローンエラー、セットアップスクリプトの失敗 |
| **接続**           | セッションからアタッチできない、ペアリングスピナーが停止しない、「マシン利用不可」    |
| **パフォーマンス**      | リビルドが遅い、ターミナルの高レイテンシ、エディターの動作が重い             |
| **Devcontainer** | ビルドエラー、「command not found」、ポートにアクセスできない      |
| **一般的な使用**       | Gitが認証情報を要求、ディスク容量不足、アクセス拒否                  |

### ワークスペース作成の問題

<AccordionGroup>
  <Accordion title="リポジトリのクローンに失敗">
    **診断**

    * Gitの終了コード付きで\*“clone failed”\*エラートーストが表示される
    * プライベートリポジトリですか？OAuthスコープが不足していませんか？

    **解決**

    1. リポジトリが有効化され、Integrationsで**Connected**と表示されていることを確認します
    2. 求められた場合はOAuthトークンを更新します
  </Accordion>
</AccordionGroup>

### 接続の問題

<Steps>
  <Step title="マシンセレクターを確認">
    セッションで**CPU**アイコンをクリックし、**Cloud Machine**が選択されていることを確認します。
    **Local Machine**と表示される場合は、**Cloud Machine**に切り替えてテンプレートを選択します。
  </Step>

  <Step title="ブラウザとネットワーク">
    * **Chrome**または**Edge**を使用します（他のブラウザではWebSocketアップグレードがブロックされる場合があります）。
    * WebSocketフィルタリングを切り分けるため、VPN/プロキシを無効にします。
    * セッションタブを再読み込みします（⌘R / Ctrl-R）。
  </Step>
</Steps>

### パフォーマンスと速度

| 症状                 | 修正方法                                                                               |
| ------------------ | ---------------------------------------------------------------------------------- |
| **リビルドが 5 分以上かかる** | `.dockerignore` に `node_modules`、`*.pyc`、ビルド出力を追加する • より軽量なベースイメージを使用する（例: alpine） |
| **ターミナルのレイテンシ**    | 重い JS を使っている未使用のブラウザタブを閉じる • ローカル帯域幅を確認する（5 Mbps 以上推奨） • リアルタイムのスペルチェック拡張機能を一時停止する |
| **エディターの遅延**       | 必要な場合を除き開発ツール（`nodemon`、`webpack --watch`）のファイルウォッチャーを無効にする • 自動保存は共同作業時のみ使う       |

### 一般的な使用上のトラブル

| 問題                        | 解決方法                                                                                          |
| ------------------------- | --------------------------------------------------------------------------------------------- |
| **Gitが認証情報を要求する**         | リポジトリ統合が接続されていることを確認してください。クラウドテンプレートはHTTPSトークンを自動的に注入します。                                    |
| **ディスククォータ超過**            | パッケージキャッシュ（`npm cache clean --force`、`pip cache purge`）をクリア、大きなビルドアーティファクトを削除、またはテンプレートをリビルド。 |
| **ファイル保存でアクセス拒否**         | ファイルがリポジトリテンプレート外にあります。`/workspaces/<repo>/`内に保存してください。                                       |
| **グローバルパッケージをインストールできない** | `npm install -g`または`pip install --user`を使用。まだブロックされる場合は、`postCreateCommand`にコマンドを追加。          |
| **リビルド後に履歴が失われる**         | `/workspaces`外のものはリビルド中にクリアされます。重要なスクリプトをコミットするか、リポジトリ内に保存してください。                             |

> 簡単なリビルドで問題の 80% は解決します。迷ったときは、ためらわず **Rebuild** をクリックしてください。
