はじめに
AIコーディングエージェント(Claude Code、Cursor、Cline等)の普及により、開発効率は飛躍的に向上しました。しかし、複数のAIエージェントを同時に使用する際、以下のような課題に直面することがあります:
- ファイルの競合: 複数のエージェントが同じファイルを同時に編集
- 環境の汚染: 一つのエージェントの変更が他の作業に影響
- 作業追跡の困難: どのエージェントが何を変更したか把握しにくい
これらの課題を解決するのが、Daggerが開発したContainer-Useです。
Daggerとは何か
DaggerはDockerの創設者Solomon Hykes氏が2018年に立ち上げた会社で、「DevOpsオペレーティングシステム」の構築を目指しています 。コンテナで開発者の問題を解決したHykesは、今度は「CI/CDの混乱状態」という開発者とインフラの間の複雑な問題に挑戦しています 。
Container-Useとは
Container-Useは、AIエージェント向けのMCP(Model Context Protocol)サーバーで、各エージェントに独立したコンテナ環境を提供します。
主要な機能
- 隔離されたコンテナ環境: 各AIエージェントが独立した環境で動作
- Gitブランチによる変更管理: すべての変更が自動的にGitブランチに記録
- リアルタイム監視:
cu watch
コマンドで全環境の動作を一元監視 - 複数環境の並列実行: 複数のエージェントが干渉することなく同時作業可能
インストールと初期設定
前提条件
- Docker(macOSの場合はColima推奨)
- Git
インストール方法
# Homebrewを使用 brew install dagger/tap/container-use # または、curlを使用 curl -fsSL https://raw.githubusercontent.com/dagger/container-use/main/install.sh | bash
Claude Codeとの連携設定
.claude/settings.local.json
に以下を追加:
{ "mcpServers": { "container-use": { "command": "container-use" } }, "permissions": { "allow": [ "mcp__container-use__environment_open", "mcp__container-use__environment_file_write", "mcp__container-use__environment_run_cmd", "mcp__container-use__environment_update" ] } }
実際の動作例
1. MCP経由でのContainer-Use操作
Claude Code内でContainer-Use MCPサーバーを使用して、実際に環境を作成・操作した例です:
# test-cu-demo環境を作成 environment_id: test-cu-demo/polite-herring # Pythonスクリプトを作成して実行 #!/usr/bin/env python3 import os import socket print("Hello from Container-Use!") print(f"Hostname: {socket.gethostname()}") print(f"Working Directory: {os.getcwd()}") # 実行結果: # Hello from Container-Use! # Hostname: dagger # Working Directory: /workdir
2. リアルタイム監視(cu watch)
cu watch
コマンドを実行すると、すべての環境の動作をリアルタイムで監視できます。各環境での操作(ファイル作成、コマンド実行等)が時系列で表示されます。
3. Webアプリケーションの実行
Container-Use内でWebアプリケーションを実行し、ポートを公開することも可能です:
# 簡単なHTTPサーバーを作成 from http.server import HTTPServer, BaseHTTPRequestHandler class SimpleHandler(BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header('Content-type', 'text/html') self.end_headers() self.wfile.write(f''' <html> <body> <h1>Hello from Container-Use!</h1> <p>Container Hostname: {socket.gethostname()}</p> </body> </html> '''.encode()) # ポート8080で実行 → localhost:61753にマッピング
実際に公開されたサイトのスクリーンショットでは、コンテナ内で動作するアプリケーションがブラウザから正常にアクセスできることが確認できます。
基本的な使い方
Container-Use MCPサーバーの主な機能
Container-UseはMCPサーバーとして動作し、AIエージェントから以下の操作が可能です:
- environment_open: 新しい環境を作成
- environment_file_write: ファイルの作成・編集
- environment_file_read: ファイルの読み取り
- environment_run_cmd: コマンドの実行
- environment_update: 環境の更新(パッケージインストール等)
- environment_file_delete: ファイルの削除
監視コマンド
# リアルタイム監視 cu watch # 環境一覧 cu list # ログ確認 cu log <環境名>
まとめ
Container-Useは、AIコーディングエージェントに安全で隔離された実行環境を提供する革新的なツールです。主な利点:
- 完全な隔離: 各エージェントが独立した環境で動作
- 透明性: すべての操作がGitブランチに記録
- 並列性: 複数のエージェントが干渉なく同時作業
- 安全性: メイン環境を汚染しない実験が可能
AIエージェントを活用した開発をより安全で効率的にしたい方は、ぜひContainer-Useを試してみてください。