午後 11 。JIRAチケットが開かれ、保存されていないファイルが3つあるIDE、Stack Overflowのブラウザタブ、ドキュメント用のタブがあります。UI設計、バックエンドAPIの作成、バグ修正、テスト実行の間をコンテキストで切り替えるのです。プロダクトマネージャー、デザイナー、エンジニア、QAスペシャリストなど、あらゆる役割を担っていて、とても疲れます。
もし自分ですべてをやるのではなく、目標を説明し、専門のAIエージェントチームに任せることができたらどうでしょうか?
あるエージェントは要件を分解し、別のエージェントはインターフェースを設計し、三人目はバックエンドを構築し、四つ目はテストし、五つ目は問題を修正します。各エージェントは自分の得意分野に集中し、あなたがコーヒーをすすりながら自律的に協力します。それはSFではなく、 Agent + Docker Sandbox が今日提供しているものです。
Docker Agentとは何ですか?
Docker Agent は、専門的なAIエージェントのチームを構築するためのオープンソースツールです。一つの汎用モデルにすべてを任せるのではなく、複雑な問題を解決するために協力する特定の役割を持つエージェントを定義します。
以下が典型的な開発チームの構成です:
agents:
root:
model: openai/gpt-5
description: Product Manager - Leads the development team and coordinates iterations
instruction: |
Break user requirements into small iterations. Coordinate designer → frontend → QA.
- Define feature and acceptance criteria
- Ensure iterations deliver complete, testable features
- Prioritize based on value and dependencies
sub_agents: [designer, awesome_engineer, qa, fixer_engineer]
toolsets:
- type: filesystem
- type: think
- type: todo
- type: memory
path: dev_memory.db
designer:
model: openai/gpt-5
description: UI/UX Designer - Creates user interface designs and wireframes
instruction: |
Create wireframes and mockups for features. Ensure responsive, accessible designs.
- Use consistent patterns and modern principles
- Specify colors, fonts, interactions, and mobile layout
toolsets:
- type: filesystem
- type: think
- type: memory
path: dev_memory.db
qa:
model: openai
description: QA Specialist - Analyzes errors, stack traces, and code to identify bugs
instruction: |
Analyze error logs, stack traces, and code to find bugs. Explain what's wrong and why it's happening.
- Review test results, error messages, and stack traces
.......
awesome_engineer:
model: openai
description: Awesome Engineer - Implements user interfaces based on designs
instruction: |
Implement responsive, accessible UI from designs. Build backend APIs and integrate.
..........
fixer_engineer:
model: openai
description: Test Integration Engineer - Fixes test failures and integration issues
instruction: |
Fix test failures and integration issues reported by QA.
- Review bug reports from QA
ルートエージェントはプロダクトマネージャーとしてチームを調整します。ユーザーが機能を要求すると、ルートは ワイヤー フレームをデザイナーに委譲し、実装は awesome_engineer 、 テストはQA 、バグ修正は fixer_engineer に委ねます。各エージェントは独自のモデルを使用し、独自のコンテキストを持ち、ファイルシステム、シェル、メモリ、MCPサーバーなどのツールにアクセスします。
エージェント構成
各エージェントは5つの主要な属性で定義されています。
- モデル:使用するAIモデル(例:
openai/gpt-5、anthropic/claude-sonnet-4-5)。異なるエージェントは、それぞれのタスクに最適化された異なるモデルを使用できます。 - 説明:エージェントの役割を簡潔にまとめたもの。これにより、Docker Agentはいつタスクをこのエージェントに委任すべきかを理解できます。
- 指示:エージェントが何をすべきかについての詳細なガイダンス。ワークフロー、制約、ドメイン固有の知識を含みます。
- sub_agents:このエージェントが仕事を委任できるエージェントのリスト。これがチームの階層構造を生み出します。
- ツールセット:エージェントが利用できるツール。組み込みオプションには、
filesystem(読み書きファイル)、shell(実行コマンド)、think(推論)、todo(タスク追跡)、memory(永続保存)、mcp(外部ツール接続)があります。
この構成システムは、各エージェントの能力や相互の連携を細かくコントロールできます。
なぜエージェントチームが重要なのか
複雑な業務を一人のエージェントが担当すると、常にコンテキストが切り替わることになります。代わりに、集中したエージェントに仕事を分担し、それぞれが得意分野を担当します。Docker Agentが調整を管理します。
利点は明白です:
- 専門化:各エージェントはその役割(設計、コーディング、デバッグ)に最適化されています。
- 並列実行:複数のエージェントが異なる側面に同時に取り組むことができます
- より良い成果:集中したエージェントは、その分野でより質の高い仕事を生み出します
- 保守性:関心事の明確な分離により、チームのデバッグや反復が容易になります
問題点:AIエージェントを安全に運用すること
エージェントチームは強力ですが、深刻なセキュリティ上の懸念を伴います。これらのエージェントは以下のことが必要です:
- システムのファイルの読み書き
- シェルコマンド(npmインストール、gitコミットなど)を実行します。
- 外部APIやツールへのアクセス
- 潜在的に信頼できないコードを実行する
AIエージェントに開発マシンへの完全アクセスを与えるのはリスクがあります。誤設定されたエージェントはファイルを削除したり、秘密情報を漏らしたり、悪意のあるコマンドを実行したりする可能性があります。孤立が必要です。エージェントは強力でありながら封じ込められるべきです。
従来の仮想マシンは重すぎます。クルートの刑務所は脆弱です。以下のようなものが必要です:
- ホストマシンからの強い隔離
- エージェントがプロジェクトファイルを読み取れるワークスペースアクセス
- 同じ道筋やツールでの経験に慣れています
- 複雑なネットワークや設定なしで簡単にセットアップできます
Docker サンドボックス:安全な基盤
Docker Sandbox は、AIエージェントを実行させるための隔離された環境を提供することでこの問題を解決しています。Docker Desktop 4の時点で。60+では、専用の マイクロVM内でサンドボックスが動作し、従来のコンテナ隔離を超えた厳格なセキュリティ境界を提供します。docker sandbox run <agent>を実行すると、Dockerは以下の孤立したmicroVMワークスペースを作成します。
- プロジェクトディレクトリを同じ絶対パス(LinuxとmacOSで)にマウントします。
- 適切なコミット帰属のためにGit設定を保持してください
- 現在のシェルセッションから環境変数を引き継ぎません
- ホストを損なうことなくエージェントに完全な自治権を与えます
- 設定可能な許可/拒否リストによる ネットワーク隔離 を提供します
Docker Sandboxは現在、 Claude Code、 Gemini、 Codex、 Copilot、 Agent、 Kiro (いずれも実験的)6種類のエージェントタイプをネイティブでサポートしています。エージェントはサンドボックスエージェントとして直接起動できます:
# Run Agent natively in a sandbox
docker sandbox create agent ~/path/to/workspace
docker sandbox run agent ~/path/to/workspace
あるいは、よりコントロールしたい場合は、分離したサンドボックスを使うのも良いでしょう。
# Create a sandbox
docker sandbox run -d --name my-agent-sandbox claude
# Copy agent into the sandbox
docker cp /usr/bin/agent <container-id>:/usr/bin/agent
# Run your agent team
docker exec -it <container-id> bash -c "cd /path/to/workspace && agent run dev-team.yaml"
ホスト上のワークスペース /Users/alice/projects/myapp もmicroVM内に /Users/alice/projects/myapp されています。エラーメッセージ、ハードコードされたパスを持つスクリプト、相対インポートはすべて期待通りに動作します。しかし、エージェントは独自のmicroVMに収まっており、マウントされたワークスペース外のファイルにはアクセスできず、その影響はサンドボックスに限定されます。
なぜDockerサンドボックスが重要なのか
エージェントとDockerサンドボックスの組み合わせが強力な機能を提供します:
- 完全なエージェントの自律性:エージェントはパッケージのインストール、テストの実行、コミットの実行、ツールの使用を常に人間の監督なしに行えます
- 完全な安全性:エージェントがミスをしても、それはmicroVMサンドボックス内に収められます
- ハードセキュリティ境界:MicroVMの隔離はコンテナを超え、各サンドボックスは独自の仮想マシンで動作します
- ネットワーク制御:許可/拒否リストで外部エージェントがアクセスできるサービスを制限できます
- 馴染みのある体験:同じ道筋、同じツール、同じワークフローで、直接マシンで作業するのと同じです
- ワークスペースの永続性:ホストとmicroVM間の同期変更を行い、常に作業が利用可能になるようにします
実際のワークフローは以下の通りです:
- ユーザーはルートエージェントに「Gradioで銀行アプリを作成」という機能を要求します。
- ルートはToDoリストを作成し、デザイナーに委任します
- DesignerはワイヤーフレームやUI仕様を生成します
- Awesome_engineer はコードを実装し、
pip install gradioとpython app/main.py - QAはテストを行い、バグを発見し、報告します
- Fixer_engineer問題を解決します
- ルートはすべてのテストが成功し、機能が完了したと判断します
これらすべてはサンドボックス環境の中で自律的に行われています。エージェントは依存関係のインストール、ファイルの修正、コマンドの実行はできますが、ホストマシンとは隔離されています。
自分で試してみる
Dockerサンドボックスでシンプルなエージェントチームを構築する方法を一緒に見ていきましょう。
前提 条件
- Docker Desktop 4。60+(サンドボックス対応、microVMベースのアイソレーション)
- agent(Docker Desktop 4に含まれる。49+)
- モデルプロバイダー(Anthropic、OpenAI、またはGoogle)のAPIキー
ステップ 1:エージェントチームを作成する
この構成を dev-team.yamlとして保存してください:
models:
openai:
provider: openai
model: gpt-5
agents:
root:
model: openai
description: Product Manager - Leads the development team
instruction: |
Break user requirements into small iterations. Coordinate designer → frontend → QA.
sub_agents: [designer, awesome_engineer, qa]
toolsets:
- type: filesystem
- type: think
- type: todo
designer:
model: openai
description: UI/UX Designer - Creates designs and wireframes
instruction: |
Create wireframes and mockups for features. Ensure responsive designs.
toolsets:
- type: filesystem
- type: think
awesome_engineer:
model: openai
description: Developer - Implements features
instruction: |
Build features based on designs. Write clean, tested code.
toolsets:
- type: filesystem
- type: shell
- type: think
qa:
model: openai
description: QA Specialist - Tests and identifies bugs
instruction: |
Test features and identify bugs. Report issues to fixer.
toolsets:
- type: filesystem
- type: think
ステップ 2:Dockerサンドボックスを作成する
最も簡単な方法は、エージェントをネイティブのサンドボックスエージェントとして利用することです。
# Run agent directly in a sandbox (experimental)
docker sandbox run agent ~/path/to/your/workspace
あるいは、よりコントロールしやすいために分離したClaudeサンドボックスを使う方法もあります:
# Start a detached sandbox
docker sandbox run -d --name my-dev-sandbox claude
# Copy agent into the sandbox
which agent # Find the path on your host
docker cp $(which agent) $(docker sandbox ls --filter name=my-dev-sandbox -q):/usr/bin/agent
ステップ 3:環境変数を設定する
# Run agent with your API key (passed inline since export doesn't persist across exec calls)
docker exec -it -e OPENAI_API_KEY=your_key_here my-dev-sandbox bash
ステップ 4:エージェントチームを運営する
# Mount your workspace and run agent
docker exec -it my-dev-sandbox bash -c "cd /path/to/your/workspace && agent run dev-team.yaml"
これであなたが作りたいものを説明すれば、あとはエージェントチームが対応します。
User: Create a bank application using Python. The bank app should have basic functionality like account savings, show balance, withdraw, add money, etc. Build the UI using Gradio. Create a directory called app, and inside of it, create all of the files needed by the project
Agent (root): I'll break this down into iterations and coordinate with the team...
デザイナーがワイヤーフレームを作成し、エンジニアがGradioアプリを構築し、QAがテストする様子を、すべて安全なサンドボックスで自律的に行う様子を見守ります。
ワンショットプロンプトの最終結果
ステップ 5:片付け
終わったら:
# Remove the sandbox
docker sandbox rm my-dev-sandbox
Dockerはワークスペースごとに1つのサンドボックスを強制します。同じディレクトリ内で docker sandbox run を実行すると、既存のコンテナを再利用します。構成を変更するには、サンドボックスを削除して再作成してください。
現在の制限
DockerサンドボックスとDocker Agentは急速に進化しています。ここで知っておくべきことをいくつかご紹介します。
- Docker Sandboxは現在、 Claude Code、 Gemini、 Codex、 Copilot、 agent、 Kiroの6種類のエージェントタイプをネイティブでサポートしています。すべて実験的なものであり、Docker Desktopのバージョン間で不具合的な変更が発生する可能性があります。
- プリインストールされたエージェントバイナリを含まないカスタムシェルです。代わりに、どんなエージェントやツールもインストール・設定できるクリーンな環境を提供します
- MicroVMサンドボックスには macOSかWindowsが必要です。Linuxユーザーは、Docker Desktop 4でレガシーなコンテナベースのサンドボックスを利用できます。57+
- APIキーはエージェントの種類によっては手動設定が必要な場合があります
- サンドボックステンプレートは特定のワークフローに最適化されています。カスタムセットアップでは追加設定が必要になる場合があります
なぜ今これが重要なのか
AIエージェントはより能力を高めていますが、安全かつ効果的に動作するためのインフラが必要です。エージェントとDockerサンドボックスの組み合わせは、以下のように対処しています。
|
特徴 |
伝統的なアプローチ |
agent + Docker Sandboxesで |
|
自治 |
限定的 – 常に監督が必要 |
高 – エージェントは独立して作業します |
|
セキュリティ |
リスクが高い — エージェントはホストアクセス権を持っています |
隔離 – microVM上で実行されるエージェント |
|
専門分野 |
一つのモデルですべてができます |
複数のエージェントがそれぞれ役割を担う |
|
再生可能性 |
機械間での不一致 |
MicroVMで隔離され、バージョン制御 |
|
拡張性 |
手動調整 |
自動チームオーケストレーション |
これは単なる利便性の問題ではなく、開発者が期待する安全性の保証を得て、本番環境でAIエージェントが実際に作業できるようにすることです。
次のステップ
- Docker Agentのドキュメントを探索して、自分だけのエージェントチームを構築しましょう
- 高度な設定については Docker Sandbox をチェックしてみてください
- エージェントリポジトリ内の エージェント構成 例を閲覧してください
- エージェントを編集者と統合するか、MCPクライアントのツールとしてエージェントを活用しましょう
結論
「AIにコードを書かせる」から「AIチームを組織してソフトウェアを作る」へと移行しています。エージェントはチーム構成を作ってくれます。Docker Sandboxesは安全な基盤を提供します。
一人で開発者としてあらゆる役割を担う日々は終わりに近づいています。専門のAIエージェントが孤立したコンテナで働くことで、あなたは重要なことに集中できる優れたソフトウェアの設計に専念し、AIチームは実装、テスト、反復を担当します。
試してみてください。自分だけのエージェントチームを作ってください。Dockerサンドボックスで実行してください。開発チームがすぐそばにいて、ランチをしながら機能をリリースできる準備ができているのを見てみてください。