Skip to main content
並列コラボレーション

タスクの並列処理

概要

同じリポジトリ内で複数のタスクを同時に進行させつつ、互いに干渉しないようにしたい場合は、並列コラボレーションを利用できます。Qoder CLI はいくつかの分離手段を提供しています。ワークツリーを使用して異なるタスクを独立した Git チェックアウトに配置し、バックグラウンドエージェント / タスクを使用して複数のサブタスクを並列で進行させ、サブエージェントを通じて複雑な作業を専門のサブエージェントに分割します。 これにより、各タスクが独自のワークスペースとコンテキストを持つようになり、複数のセッションが同じディレクトリを共有して変更を互いに上書きしてしまうことを防ぎます。

worktree 隔離

ワークツリーにより、各タスクは独立した Git ワークツリー内で実行され、互いに影響を与えません。--worktree を使用して起動します。
qoder --worktree feature-a
qoder --worktree feature-a "ログイン修正を実装する"
qoder --worktree
  • 名前を指定しない場合、Qoder が自動的にワークツリー名を生成します。
  • 新しく名前付きのワークツリーは <repo>/.qoder/worktrees/<正規化された名前> 配下に配置され、対応する一時ブランチが作成されます。
  • 同名のワークツリーが既に存在する場合は、新たに作成せずそのまま再利用されます。
Git リポジトリ内で実行する必要があり、ローカルに Git がインストールされている必要があります。ワークツリーの作成、ファイルのコピー、復元、クリーンアップなどの完全な説明については、タスクの実行 を参照してください。

並列セッション

ワークツリーを利用することで、異なるタスクに対してそれぞれセッションを起動し、各自の独立したディレクトリで並列に実行できます。
# ターミナル1:feature-a worktreeでタスクAを処理
qoder --worktree feature-a "ログイン修正を実装する"

# ターミナル2:feature-b worktreeでタスクBを処理
qoder --worktree feature-b "ログモジュールをリファクタリングする"
各セッションは独自のワークツリーとブランチを持ち、変更は互いに分離されるため、完了後にそれぞれコミットまたはマージできます。

バックグラウンドエージェントとサブエージェント

単一の複雑なタスクについては、複数のサブエージェントに分割してそれぞれ処理させ、サブタスクを並列で進行させることができます。/tasks を使用して、現在実行中のバックグラウンドタスクを確認します。
/tasks
サブエージェントも worktree 隔離をサポートしています。特定の Markdown サブエージェントが独立したチェックアウト内でファイルを変更する必要がある場合は、その定義に isolation: worktree を追加します。変更のないサブエージェントのワークツリーは終了後に自動的に削除され、変更がある場合は保持されます。 サブエージェントの作成、設定、オーケストレーションについては、サブエージェント を参照してください。

復元とクリーンアップ

セッション終了時、Qoder はワークツリーのパスとそのセッションを復元するコマンドを出力します。インタラクティブモードでの終了時には、ワークツリー内の未コミットファイルと新規コミットがチェックされます。変更のないワークツリーは自動的に削除でき、ローカルファイルやコミットが存在する場合は、保持または削除の選択を求められます。 手動でクリーンアップする必要がある場合は、以下を実行します。
git worktree remove <worktree-path>
git branch -d worktree-<処理後の名>

ヒント

  • 1タスク1ワークツリー:互いに関連のないタスクはそれぞれのワークツリーに配置し、変更が交錯するのを防ぎます。
  • ローカルファイルが必要な場合:新しいワークツリーはクリーンなチェックアウトであり、デフォルトでは未追跡ファイルを含みません。.env などのファイルをコピーする必要がある場合は、リポジトリのルートディレクトリにある .worktreeinclude で宣言します。詳細は タスクの実行 を参照してください。
  • 適時クリーンアップ:タスクの完了およびマージ後は、不要になったワークツリーと一時ブランチを削除し、リポジトリを整理された状態に保ちます。
Qoder CLI を使用する