👔

Claude Codeで爆速一人開発🤖👔

に公開

インスピレーションの源泉

kazuphさんの記事で紹介されていた、tmuxで複数のClaude Codeインスタンスを管理するアプローチに、非常にインスパイアされました。

しかし、手動でセッションを設定し、各ペインでClaudeを起動するプロセスを自動化できないかと考え、Claude Companyを開発しました。

解決したい問題

複数の機能を同時並行で開発する必要がある場合、従来のアプローチではコンテキストスイッチングのオーバーヘッドが発生します。

Claude Companyは、Manager-Workerパターンを導入し、AIインスタンス間の適切な役割分担とタスク管理を実現するツールです。

リポジトリ: https://github.com/taro-hirose/claude-company

前提条件と注意事項

必須環境:

  • Claude ProまたはMaxプラン(筆者はMaxプランを使用)
  • tmuxがインストールされていること

重要な注意:
本ツールは--dangerously-skip-permissionsフラグを使用してClaude Codeを起動します。このフラグはセキュリティチェックをバイパスするため、信頼できる環境でのみ使用し、コードの実行前には必ず内容を確認してください。

Claude Companyの特徴

1. Manager-Workerアーキテクチャ 📊

Manager AIの役割:

  • タスクの分析と分解
  • サブタスクの適切な割り当て
  • 進捗管理とコードレビュー
  • 直接的な実装作業は行わない

Worker AIの役割:

  • 具体的なコード実装
  • テストの実行とデバッグ
  • ファイル操作とリファクタリング
  • 技術的な実装作業

2. 日本語プロンプトシステム

システムのコアとなる管理プロンプトは日本語で設計されています:

// manager.go:52-110 から抜粋
func (m *Manager) BuildManagerPrompt(claudePane string) string {
    return fmt.Sprintf(`
ultrathink

プロジェクトマネージャー(%s)として機能してください。

## 制限事項
禁止: コード編集、ファイル操作、ビルド、テスト、デプロイ、技術実装
許可: コード解析、タスク分析・分解、割り当て、進捗管理、品質管理、統合判定

## メインタスク
%s

## 管理フロー
1. コードの理解
2. タスク分析→サブタスク分解
3. 子ペイン作成(並行可能なら複数)
4. サブタスク割り当て
5. 子ペインに依頼したサブタスクの進捗監視・成果物レビュー
6. 統合テスト指示・完了判定
...
`, claudePane, m.mainTask, claudePane)
}

3. 親子ペイン管理システム

システムは親ペインと子ペインを明確に区別して管理しています:

// manager.go:14-16, 358-402 から抜粋
type Manager struct {
    SessionName  string
    ClaudeCmd    string
    ParentPanes  map[string]bool // 親ペイン追跡マップ
    InitialPanes []string        // 初期ペイン状態
    mainTask     string          // メインタスク
}

// 親ペインか子ペインかを判定
func (m *Manager) IsParentPane(paneID string) bool {
    return m.ParentPanes[paneID]
}

func (m *Manager) IsChildPane(paneID string) bool {
    return !m.ParentPanes[paneID]
}

この設計により、Managerに実装タスクが誤って送信されることを防ぎ、適切な役割分離を維持します。

アーキテクチャ概要 📊

システム構成

Claude Companyは主に2つのコンポーネントで構成されています:

  1. Deploy(タスクマネージャー)

    • エントリーポイント: main.go
    • バイナリ: bin/deploy
    • 機能: AIインスタンスの統括管理
  2. Session Manager

    • コアファイル: internal/session/manager.go
    • 機能: tmuxセッションの管理

アプリケーションの起動フロー

// main.go:11-35 から抜粋
func main() {
    var setup bool
    var taskDesc string
    
    flag.BoolVar(&setup, "setup", false, "Setup Claude Company tmux session")
    flag.StringVar(&taskDesc, "task", "", "Task description")
    flag.Parse()

    manager := session.NewManager("claude-squad", "claude --dangerously-skip-permissions")

    // Default behavior: setup tmux session
    if len(os.Args) == 1 || setup {
        if err := manager.Setup(); err != nil {
            log.Fatal(err)
        }
        return
    }

    if taskDesc != "" {
        deploy := commands.NewDeployCommand(taskDesc, manager)
        if err := deploy.Execute(); err != nil {
            log.Fatal(err)
        }
    }
}

セッション管理のフェーズ

セッションの初期化は以下の手順で進みます:

  1. 初期化フェーズmanager.go:113-160

    • 既存tmuxセッションの確認
    • セッション状態の表示
    • 新規セッションの作成
  2. ペイン構成フェーズmanager.go:167-180

    • 垂直分割でペインを作成
    • 各ペインでClaude Codeを起動
  3. タスク実行フェーズcommands/deploy.go:20-52

    • Managerペインへのタスクプロンプト送信
    • 役割分担の明示

技術的特徴 🔧

Go言語での実装

  • ミニマル依存: Go標準ライブラリのみを使用
  • クロスプラットフォーム: Linux, macOS, Windowsで動作
  • シングルバイナリ: 単一実行ファイルで配布可能

tmux統合

  • 動的ペイン管理: ペインの作成、削除、管理
  • セッション永続化: 作業の中断、再開が可能
  • コマンド自動化: プログラムからのtmux操作

使用例 📊

Webアプリケーション開発

※ PATHを通すことでローカル環境の任意のディレクトリで動作するようになります。

./bin/deploy --task "Reactアプリケーションにユーザー管理機能を追加"

想定されるタスク分散

  • フロントエンドコンポーネントの実装
  • APIエンドポイントの設計と実装
  • データベーススキーマの設計
  • テストケースの作成

API統合プロジェクト

./bin/deploy --task "GraphQL APIを実装してRESTful APIと統合"

想定される作業分割

  • GraphQLスキーマの設計
  • リゾルバーの実装
  • 既存RESTful APIとの統合
  • APIドキュメントの更新

まとめ

Claude Companyは、AIインスタンス間の協業を通じて、複雑な開発タスクを効率的に処理するツールです。

主なメリット

  1. タスクの自動分散: Managerが適切にサブタスクを分割
  2. 品質管理: 継続的なコードレビューとテスト
  3. スケーラビリティ: タスクに応じたWorkerの動的追加

Discussion