---
title: デプロイ
description: 独自コンポーネントをエッジPCへ配る。宛先ごとの環境変数・シークレット、配布と稼働の状態、ログ、止め方
createdAt: 2026-10-01
lastModified: 2026-10-11
---

サイドバーの **「カスタム処理」→「デプロイ」** で、[コンポーネント](/docs/guides/edge-components)をエッジPCへ配り、配った結果と稼働状態を確かめます。複数のエッジPCにまとめて配るときは[グループ](/docs/guides/edge-pc-groups)を宛先にします。

デプロイは**「そのエッジPCで動かすものの一覧」を丸ごと指定する**形です。ThingsConnect 本体（カメラ・センサ・録画）はそのまま維持され、一覧のコンポーネントが追加されます。

## デプロイする

1. **エッジPCにデプロイする**

    「カスタム処理」→「デプロイ」の**「新規デプロイ」**を押し、宛先（エッジPC かグループ）を選びます。その宛先で今動いているコンポーネントの一覧が表示されるので、「コンポーネントを追加…」から足してバージョンを選び、「デプロイ」を押します。コンポーネント詳細のバージョン行にあるロケットのアイコンからも、そのバージョンを入れた状態で同じ画面を開けます。**宛先向けの環境変数（エッジPCごとの値・シークレット）は、コンポーネントの行を開いて入れます**（[宛先ごとの環境変数を渡す](#宛先ごとの環境変数を渡す)）。CLI からも実行できます。

    ```sh
    thingsconnect deploy --edge-pc <エッジPCの ID> --set my-edge-processor@1.0.0
    ```

2. **状態を確認する**

    サイドバーの「カスタム処理」→「デプロイ」に、エッジPCごとの結果が表示されます。反映まで数分かかることがあります。

    **ThingsConnect のソフトウェアの更新がメンテナンス時間帯を待っている間は、デプロイもその後になります。**すぐに反映したい場合は、エッジPC 詳細の「更新」でメンテナンス時間帯を `24 時間（配信が来たらすぐ当てる）` にすると、15 分以内に更新とデプロイが進みます（→ [エッジPCの登録と監視](/docs/guides/edge-pcs#更新)）。

    ```sh
    thingsconnect status --edge-pc <エッジPCの ID>
    ```

## 宛先ごとの環境変数を渡す

**バージョン登録時の環境変数が「既定値」、デプロイ時の環境変数が「そのエッジPC向けの値」**という 2 段構成です。API トークンのように**エッジPCごとに変わる値・秘密の値はデプロイ時に渡します**。値を変えるときは同じバージョンのまま**デプロイし直すだけ**でよく（コンテナも自動で再起動します）、イメージのビルドやバージョンの登録は要りません。

:::warning[渡したいキーはバージョン登録時に宣言してください]
  デプロイ時に渡せるのは、**そのバージョンが環境変数として宣言しているキーだけ**です。秘密の値を渡したいときは、バージョン登録時に**値を空にしたキー**（例: `TOKEN=`）を書いておきます。宣言していないキーを指定するとエラーになります。
:::

画面から渡す場合は、コンポーネント詳細でロケットのアイコンを押し、エッジPCを選んだあと「環境変数」の欄に値を入れます。**「シークレット」にチェックを入れた値は、以後この画面にも表示されません**（保存時に暗号化され、書き込み専用になります）。空欄にしたキーはバージョンの既定値のまま動きます。

CLI では `deploy` に `--env` / `--secret` を付けます。**`--secret` は値を省略すると同名の環境変数から読む**ので、シークレットをシェルの履歴に残さずに済みます。

```sh
# エッジPCごとの値を渡す
thingsconnect deploy --edge-pc <エッジPCの ID> --set my-edge-processor@1.0.0 --env API_URL=https://site-a.example.com

# シークレットを渡す（値は環境変数から読む。以後 API も CLI も値を返さない）
TOKEN=xxxxx thingsconnect deploy --edge-pc <エッジPCの ID> --set my-edge-processor@1.0.0 --secret TOKEN

# 既定値に戻す
thingsconnect deploy --edge-pc <エッジPCの ID> --set my-edge-processor@1.0.0 --clear-env my-edge-processor
```

複数のコンポーネントを一度に指定するときは、`--env my-edge-processor:TOKEN=xxxxx` のように**どのコンポーネント向けかを前に付けます**（`--set` が 1 つだけなら省略できます）。**`--env` / `--secret` を書いたコンポーネントは、書いた内容がそのデプロイの全てになります**（書かなかったキーは既定値に戻ります）。何も書かなかったコンポーネントは前回の値がそのまま引き継がれます。

:::danger[デプロイ時に渡した値も暗号化されるのは管理ダッシュボードの中だけです]
  シークレットにした値は管理ダッシュボードでは暗号化して保存しますが、**エッジPC へ配るための定義（クラウド上）とエッジPC 上には平文で残ります**。クラウドの運用担当者や、エッジPCにログインできる人からは読める状態です。これは一般的なコンテナ実行基盤（例: Amazon ECS のタスク定義に書く環境変数）と同じ水準で、**秘密管理サービス（シークレットストア）と同等の保護ではありません**。影響が大きい認証情報を扱う場合はご相談ください。
:::

**値にシングルクォート（`'`）と改行は使えません。** 指定するとエラーになります。

## デプロイの状態

「デプロイ」画面には状態の列が 2 つあります。**「配れたか」と「今動いているか」は別物**なので分けて表示します。配布が完了したあとにコンテナが落ちても、デプロイ状態は `COMPLETED` のままです。

### デプロイ状態

配布そのものの結果です。進行中は自動で更新されます。

| 状態                     | 意味                                                                           |
| ------------------------ | ------------------------------------------------------------------------------ |
| `IN_PROGRESS` / `ACTIVE` | 配布中。エッジPCがオフラインだと復帰まで進みません                             |
| `配信中`                 | グループ宛てのデプロイが有効な状態。機体ごとの結果は「機体ごとの状態」で見ます |
| `COMPLETED`              | 配布が完了した                                                                 |
| `FAILED`                 | 配布に失敗した。イメージ URI や実行オプションを確認してください                |
| `CANCELED`               | 取り消された                                                                   |

### エッジPC上の状態

配ったコンポーネントがエッジPC上で今どうなっているかです。デプロイに含まれるコンポーネントごとに表示します。

| 状態                                          | 意味                                                                                                                           |
| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `RUNNING`                                     | 稼働中（緑で表示します）                                                                                                       |
| `FINISHED`                                    | 正常に終了した。**動かし続ける処理でこれが出ているなら、意図せず止まっています**（正常終了と区別が付かないため緑にはしません） |
| `NEW` / `INSTALLED` / `STARTING` / `STOPPING` | 起動・停止の途中                                                                                                               |
| `ERRORED` / `BROKEN`                          | 起動に失敗している。理由はエッジPC詳細の「稼働中のコンポーネント」で確認できます                                               |
| `未インストール`                              | デプロイ済みなのにエッジPC上に見当たりません                                                                                   |
| `取得できません`                              | エッジPC 上の状態を読み取れませんでした                                                                                        |
| `—`                                           | 古いデプロイ行、またはコンポーネントを 1 つも含まないデプロイ（すべて解除したとき）                                            |

:::note
  エッジPC上の状態は「今」を表すため、**各エッジPCの最新のデプロイ行にだけ**表示されます。古いデプロイ行は `—` になります（そのあと別のデプロイで内容が置き換わっている可能性があるため）。エッジPCがオフラインのときは、最後に報告された状態が残ります。
:::

## ログを見る

コンテナが標準出力・標準エラーに書いた内容を、管理ダッシュボードから読めます。ログのページは 2 か所から開けます。エッジPC 詳細の「稼働中のコンポーネント」のうち「カスタム処理」の表にある **「ログを見る」** と、「デプロイ」画面の「エッジPC上の状態」の横にあるアイコンです。

- ページの上部で、同じエッジPC で動いている別のコンポーネントに切り替えられます。ページの URL を共有すれば、同じログを他の人も開けます。
- 開くとエッジPC から直近 500 行を読み、5 秒ごとに更新します。キーワードで絞り込めます。「さらに前を読む」でさかのぼれます。
- **ログはエッジPC 上のものをその場で読みます。** エッジPC がオフラインの間は読めません。
- さかのぼれるのは、エッジPC に残っている分だけです。古いログは容量に応じて消えていくので、長く残したい内容はコンテナから自社のシステムへ送ってください。
- 標準エラーの行は赤で表示します。
- ログを残したい内容は**すぐ出力されるようにしてください**（Python なら `python -u` か `PYTHONUNBUFFERED=1`）。バッファに溜まったまま終了すると残りません。

```sh
thingsconnect logs --edge-pc <エッジPCの ID> --component my-edge-processor --lines 200 --filter error
thingsconnect logs --edge-pc <エッジPCの ID> --component my-edge-processor --follow   # 新しい行を表示し続ける
```

## 稼働中のコンテナを止める

デプロイは**「そのエッジPCで動かすものの一覧」を丸ごと指定する**形です。止めたいものを一覧から外して `deploy` し直すと、そのコンテナは停止・削除されます。

```sh
# a だけを残す（b は外れて止まる）
thingsconnect deploy --edge-pc <エッジPCの ID> --set my-edge-processor@1.0.0

# 全て外す
thingsconnect deploy --edge-pc <エッジPCの ID>
```

ThingsConnect 本体（カメラ・録画など）は管理対象外なので、この操作では外れません。

管理画面では「新規デプロイ」でコンポーネントの行の **×** を押して外し、「デプロイ」を押します。外れるコンポーネントは、押す前に「次のコンポーネントは集合から外れ、アンインストールされます」と表示されます。
