Environment は Session が実行されるコンテナテンプレートを定義します。環境タイプ、ネットワークポリシー、プリインストール依存関係、セットアップスクリプト、metadata を含みます。異なるシナリオに応じて異なる環境を作成できます。厳密に隔離されたセキュリティ監査環境、データサイエンスライブラリをプリインストールした分析環境、またはオープンネットワークの汎用開発環境などです。
環境とは
Environment は Session の基盤となるインフラストラクチャレイヤーです:
- 環境タイプ -
cloud はクラウドマネージドコンテナ、self_hosted はセルフホスト実行環境を示します
- ネットワークポリシー - コンテナのアウトバウンドネットワークアクセスを制御します
- パッケージ - プリインストールされるシステムパッケージ、Python パッケージ、Node.js パッケージ
- セットアップスクリプト - コンテナ準備段階でパッケージインストール後に実行されるユーザースクリプト
Session が起動すると、指定された Environment テンプレートに基づいて隔離されたランタイムが作成されます。
フィールドリファレンス
| フィールド | 型 | 必須 | 説明 |
|---|
id | string | - | システム生成、env_ プレフィックス |
type | string | - | 固定値 "environment" |
name | string | はい | 環境名 |
description | string | いいえ | 自由記述、デフォルトは "" |
config | object | はい | 環境設定 |
config.type | string | はい | 環境タイプ:"cloud" または "self_hosted" |
config.networking | object | いいえ | cloud 環境のネットワークポリシー |
config.packages | object | いいえ | cloud 環境のプリインストールパッケージ設定 |
config.setup_script | string | いいえ | sandbox 準備段階で実行される shell スクリプト(最大 64 KB) |
metadata | object | いいえ | カスタム key/value metadata |
archived_at | string|null | - | アーカイブ時刻(ISO 8601)、未アーカイブ時は null |
created_at | string | - | 作成時刻 |
updated_at | string | - | 最終更新時刻 |
Config タイプ
config.type は "cloud" または "self_hosted" を指定できます。
self_hosted の config は以下の形式に厳密に従う必要があります:
セルフホスト Environment はマネージドクラウドコンテナを起動しません。外部 worker は Work API を使用して、その Environment の Session work をポーリング、確認応答、heartbeat、停止します。
cloud の config には networking、packages、setup_script を含めることができます。
ネットワークポリシー
config.networking は 3 つのリクエストモードをサポートします。すべてのモードでオブジェクト形式を使用する必要があります — "unrestricted" のような文字列省略形は 400 エラーを返します。
| モード | 値 | 説明 |
|---|
| 完全開放 | {"type": "unrestricted"} | コンテナは任意の外部アドレスにアクセス可能 |
| 制限付き | {"type": "limited", "allow_package_managers": true} | 既知の安全な公開サービスとパッケージマネージャーのみアクセス可能 |
| 許可リスト | {"type": "allowed_hosts", "allowed_hosts": [...]} | 指定されたホストのみアクセス可能 |
Cloud Environment のレスポンスには以下の networking フィールドが含まれます。省略されたフィールドはデフォルト値で返されます。
| フィールド | 型 | デフォルト |
|---|
type | string | limited |
allowed_hosts | string 配列 | [] |
allow_package_managers | boolean | false |
allow_mcp_servers | boolean | false |
完全開放
{
"config": {
"type": "cloud",
"networking": {"type": "unrestricted"}
}
}
依存関係のダウンロードや外部 API 呼び出しが必要な汎用開発タスクに適しています。
制限付きモード
{
"config": {
"type": "cloud",
"networking": {
"type": "limited",
"allow_package_managers": true
}
}
}
任意のアウトバウンドトラフィックは不要だが、パッケージマネージャーによる依存関係の取得が必要な場合に適しています。
許可リストモード
{
"config": {
"type": "cloud",
"networking": {
"type": "allowed_hosts",
"allowed_hosts": [
"api.github.com",
"registry.npmjs.org",
"pypi.org"
]
}
}
}
セキュリティ要件が高いワークロードで、アクセス可能な外部サービスを正確に制御する必要がある場合に適しています。
プリインストールパッケージ
config.packages でコンテナ起動時にインストールされる依存関係を指定します:
{
"config": {
"type": "cloud",
"networking": {"type": "unrestricted"},
"packages": {
"apt": ["git", "build-essential", "libssl-dev"],
"pip": ["pandas", "numpy", "scikit-learn"],
"npm": ["typescript", "eslint", "prettier"]
}
}
}
| パッケージマネージャー | フィールド | 説明 |
|---|
| apt | packages.apt | Debian/Ubuntu システムパッケージ |
| pip | packages.pip | Python パッケージ |
| npm | packages.npm | Node.js パッケージ |
プリインストールパッケージは環境の初期化時間を増加させます。本当に必要なパッケージのみを追加し、残りは Session 内でオンデマンドでインストールしてください。
セットアップスクリプト
config.setup_script は sandbox 準備段階で packages のインストール完了後に実行される shell スクリプトです。/bin/bash -lc インタープリターで実行されます。リポジトリのクローン、設定ファイルの作成、キャッシュのウォームアップなど、packages では表現できない初期化ステップに使用します。
| 制約 | 値 |
|---|
| 型 | string |
| 最大長 | 64 KB |
| インタープリター | /bin/bash -lc |
| タイムアウト | 10 分 |
| 実行タイミング | sandbox 準備段階、packages インストール完了後 |
# プロジェクトをクローンして依存関係キャッシュをウォームアップする環境を作成
curl -s -X POST https://api.qoder.com/api/v1/cloud/environments \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-d '{
"name": "node-with-init",
"config": {
"type": "cloud",
"networking": {"type": "unrestricted"},
"packages": {
"npm": ["pnpm@9"]
},
"setup_script": "set -euo pipefail\n[ -d /workspace/.git ] || git clone https://github.com/me/repo /workspace\ncd /workspace && pnpm install --frozen-lockfile"
}
}' | jq .
実行成功後、sandbox 内に完了マーカーが書き込まれるため、同一 sandbox 内では再実行されません。sandbox が再作成されると再度実行されます。スクリプトがゼロ以外の終了コードで終了すると Session の起動が中断され、エラーレスポンスに exit code と stderr の抜粋が含まれます。
環境の作成
# データサイエンス用環境を作成
curl -s -X POST https://api.qoder.com/api/v1/cloud/environments \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-d '{
"name": "data-science",
"config": {
"type": "cloud",
"networking": {"type": "unrestricted"},
"packages": {
"apt": ["build-essential"],
"pip": ["pandas", "numpy", "matplotlib", "scikit-learn", "jupyter"]
}
}
}' | jq .
成功時は 200 OK が返されます:
{
"id": "env_019e44eb66bb748cabcd1489f6fa4428",
"type": "environment",
"name": "data-science",
"description": "",
"config": {
"type": "cloud",
"networking": {
"type": "unrestricted",
"allowed_hosts": [],
"allow_package_managers": false,
"allow_mcp_servers": false
},
"packages": {
"type": "packages",
"apt": ["build-essential"],
"npm": [],
"pip": ["pandas", "numpy", "matplotlib", "scikit-learn", "jupyter"]
}
},
"metadata": {},
"archived_at": null,
"created_at": "2026-05-18T10:00:00Z",
"updated_at": "2026-05-18T10:00:00Z"
}
ネットワーク制限環境の作成
# 内部 API のみアクセス可能なセキュア環境を作成
curl -s -X POST https://api.qoder.com/api/v1/cloud/environments \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-d '{
"name": "secure-internal",
"config": {
"type": "cloud",
"networking": {
"type": "allowed_hosts",
"allowed_hosts": ["internal-api.mycompany.com", "git.mycompany.com"]
},
"packages": {
"apt": ["git", "curl"]
}
}
}' | jq .
環境の取得
# すべての環境を一覧表示
curl -s https://api.qoder.com/api/v1/cloud/environments \
-H "Authorization: Bearer $QODER_PAT"
# 単一の環境を取得
curl -s https://api.qoder.com/api/v1/cloud/environments/env_ds456 \
-H "Authorization: Bearer $QODER_PAT"
環境の更新
# 既存の環境に新しい依存関係を追加
curl -s -X POST https://api.qoder.com/api/v1/cloud/environments/env_ds456 \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-d '{
"name": "data-science",
"config": {
"type": "cloud",
"networking": {"type": "unrestricted"},
"packages": {
"apt": ["build-essential", "libpq-dev"],
"pip": ["pandas", "numpy", "matplotlib", "scikit-learn", "jupyter", "sqlalchemy"]
}
}
}' | jq .
環境を更新しても実行中の Session には影響しません。新しい設定は更新後に作成された Session にのみ適用されます。
環境選定ガイド
| シナリオ | 推奨設定 |
|---|
| 汎用開発 | default 環境、追加設定不要 |
| データ分析 | pandas/numpy をプリインストール、オープンネットワーク |
| セキュリティ監査 | 許可リストネットワーク、最小限の依存関係 |
| フロントエンド開発 | Node.js ツールチェーンをプリインストール、npm レジストリへのオープンアクセス |
| CI/CD 統合 | git/docker CLI をプリインストール、許可リストモード |
よくある質問
Q: 環境を作成した後、使用できるまでどのくらい待つ必要がありますか?
A: 環境は作成後すぐに使用可能です。コンテナの実際のプロビジョニング(依存関係のインストールを含む)は Session の起動時に行われます。
Q: パッケージのバージョンを固定できますか?
A: pip と npm パッケージはバージョン指定をサポートしています。例:"pandas==2.1.0" や "typescript@5.0.0"。apt パッケージはシステムリポジトリのデフォルトバージョンが使用されます。
Q: ネットワーク設定の誤りで Agent が動作しない場合はどうすればよいですか?
A: 新しい環境を作成するか(または既存の環境を更新して)、ネットワークポリシーを修正した後、新しい Session を起動してください。
Q: アカウントごとに作成できる環境の数に上限はありますか?
A: ハードリミットはありません。実際の必要に応じて作成し、命名規則を使って整理することを推奨します。
次のステップ
Session の開始
Agent と Environment を組み合わせてタスクを実行する。