3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AI subagentとGit Worktreeを使った並列タスク処理

3
Last updated at Posted at 2025-12-19

はじめに

こんにちは! 株式会社unerryのインフラ・SRE担当の鈴木です。

今回、Location Tech Company's Advent calender に参加させていただくということで、いわゆるアドカレには初めて参戦いたします!

記事を書くにあたり、AIと業務効率化を絡めたお話をしたいと考えていたのですが、今回はタスクの並列化についての記事を書きたいと思います!

本記事で扱う技術要素

背景・目的

昨今AIによるプログラム自動実装が発展し、1タスクの実装にかかる時間が効率化されつつあります。しかし、
AIが実装を進めているが故に、それを使いこなす人間側に待ち時間が発生し、時間を持て余してしまう。 なんてことがよくあるのではないでしょうか。

その課題を解消し、さらにスマートな効率化を進める方法の一つが、「タスクの並列化」 であり、その手法を本記事では記載します。

AIを使ったタスク実行のイメージと理想

現実イメージ

まず、エンジニアの仕事の1フローを細分化すると、ざっくり以下のような想定になります。

image.png

こうみると、自分のローカルでの作業が大半を占めていますね。

※(備考)

など、この図においてさらに効率化できる部分はありますが、本記事の趣旨とは逸れるので、今回は触れません。(要望があればまたの機会に。)



次に、もっと視野を広げて考えると、

上記の1フローの「連続」が、愚直に考えたエンジニアの仕事のイメージとなります。
(厳密にはツッコミどころは多々あると思いますが「ざっくり愚直に考えると」 と捉えてください。。)

image.png

こうみると、AIで効率化できているのはローカルの作業の中の一部のトピックということがわかります。。。。


理想

もし、これを直列進行ではなく並列化できたのならば、かなりの効率化になると思いませんか?

image.png

今回は、この理想を実現するための方法を考えていきます。

実現方法

ローカル実装の現実は、

作業ブランチが一つに限定されるので、シングルタスクで進んでいく。。

という障壁があります。
この障壁を解消し、並列化の理想を実現する方法の一つとして、今回記載する内容が、

「AI subagentとGit Worktreeを使った並列タスク処理」

です。

以下、私なりにわかりやすい言葉で説明します。


・ AI subagent

「メイン処理から特定の目的に特化したタスクを、子プロセスに移譲できる仕組み」

※ 本記事では 「Claude Code」 を利用しますので、「subagent」という名前の機能を使いますが、各種AIツールで同じような概念の機能があると思います。

image.png

例えば、
検索担当のサブエージェント、コード実装担当のサブエージェント、 要約担当のサブエージェントなど、
用途に応じて様々なサブエージェントを事前に構築しておくことで、それぞれの得意領域を分担することができます。

ユーザーはメイン処理への指示をすると、メイン処理がよしなにタスクをサブエージェントにアサインしてくれます。

また、サブエージェントはそれぞれ独立したプロセスのため、並列に処理することが可能です。


・ Git Worktree

「ディレクトリを使って仮想的に複数ブランチに対するcheckoutを実現する方式」
image.png

AI発展前のローカル実装では、基本的には1機能ずつ実装を進めていましたので、
その機能を作り切るまでは、一つの作業ブランチで開発をします。
そして、たまに入ってくる差し込みに対しては、git stash をして、その差し込みが終わり次第stashを戻して実装を再開する。。

と、差し込みが来るたびにstashをし、ブランチを切り直すといった作業がプチストレスだったということはあるあるなのではないでしょうか。

Git Worktreeを使えば、本来のリポジトリから分離されたディレクトリ上にブランチの状態を再現することができるので、その都度stashしなくてもコンフリクトは発生しません。

つまり、Git worktreeを応用すると、subagentごとにそれぞれの作業ブランチを切り、並列化した実装を進めることができます。

ClaudeCode公式が、 Git worktreeの利用した並列化の方式を記載していますので、 つまり公式が推奨していると捉えて良い手法かと思います。

環境構築

では、上記の方法を使えるように、実際にローカルで構築してみます。

Claude Code でsubagentを構築する

※ 前提として、Claude Codeがローカルでセットアップされている必要があります。

サブエージェントの構築方法は、こちらの公式ドキュメントをご参考ください。


今回は、unerryで度々発生するインフラタスク「google cloudのプロジェクト作成」のためのsubagentを作成します。

unerryでは、プロジェクト作成用のterraform moduleを実装したリポジトリがあるので、そのリポジトリを利用してセットアップするように指示を与え、subagentを構築します。

image.png

しばらくすると、名前までよしなに決めてsubagentを構築していることがわかります。

image.png

git worktreeを使いやすくするためのエディタの設定をする

※ 前提として、Gitがローカルでセットアップされている必要があります。


厳密には、git worktreeを使うために構築するものは特になくgitが使える環境であればそのまま利用できます。 今回は、git worktree が使いやすいように

vsCode(cursor) の拡張項目

を入れておきます。

タスク並列化の実行

上記の内容を踏まえ、 Claude Codeを使った一連のタスクの流れを並列化した方法をまとめます。

※一連の実行する上で、
  • backlog mcp を使ったチケットの読み取りの自動化
  • github mcp を使ったプルリク作成の自動化

を活用しておりますが、今回の趣旨からはズレるので、構築方法については本記事では触れません。

今回はサンプルとして、google cloudプロジェクト作成のチケットをbacklogに3つ用意しました。
image.png

image.png

image.png

以下の手順で進めます。

  1. backlog mcpを使って3つのチケットの内容をまとめて自動読み取りをする
  2. 読み取ったチケットを、subagentにアサインし、git worktreeを使って実装する
  3. github mcpを使って各サブエージェントの実装をプルリクまで出す

とは言っても、一連の自動化なので、claude codeを起動して最初にプロンプトを入力するだけで、上記の手順が自動で進むことになります。

では早速、claude codeを立ち上げて指示を出します。

以下をステップバイステップで実行してください。

1. backlogのXXXXプロジェクトで、私が担当で、未対応かつ種別がGCP プロジェクト追加のチケットの内容を取得してください。

2. 1で取得したチケットをそれぞれsubagentにアサインし、タスクを進めてください。 それぞれのsubagentは、gitworktreeを利用して並列でタスクを進めてください。 worktreeのディレクトリは、リポジトリ直下のパスから "../XXXXXXXX.worktree/作業ブランチ名" で作成してください。

image.png

1. backlog mcpを使って3つのチケットの内容をまとめて自動読み取りをする

image.png

期待通り、チケットを3件取得してきてくれました。

2. 読み取ったチケットを、subagentにアサインし、git worktreeを使って実装する

image.png

3つのチケットをsubagentにアサインし、各サブエージェントがそれぞれworktreeを作成して並列で作業してくれています。

3. github mcpを使って各サブエージェントの実装をプルリクまで出す

image.png

実装が完了すると、githubにPRを出してくれていることがわかります。


※備考

本記事では詳細は記載しませんが、Terraformの実行基盤として

Atlantis

を導入しました。

Atlantisを簡単に説明すると、GithubでPRを作成すると、そのPR画面上で plan,applyが実行できるもので、PR画面でコメントを打つ感覚で、plan, applyなどをコンパクトに実行できるものになります。
また、「PRが発生した瞬間に 自動でterraform planを実行してくれる」 という部分まで自動化できます。

そのため、本記事の一連のフローの中で、 terraform planまでが自動化されており、人間は実装内容とplan結果をレビューして、applyするだけ でインフラリソースが構築される。というところまで自動化できました。

Atlantisのメリットは、こちらの記事がわかりやすくまとまっております。


以上で、期待通り、タスクの並列化 が実現できました!

image.png

その先の話

今まで記載したアプローチにより、タスクの並列化ができました。

しかし、

あくまで ローカルでのタスク並列化であり、以下の課題が残ります。

  • そもそものローカル環境のセットアップ、subagent, git worktreeを使える状態にするのが面倒
  • AIへのプロンプトが共有されないので、組織内で「上手なプロンプティング」のナレッジがシェアされない




そのため、私が考える理想は、「クラウド上のAIを使ったタスク並列化」 の実現だと考えています。

image.png

image.png

unerryでは、github Copilotの導入も進めておりますので、理想と現実のギャップと考えつつ、今後は上記の理想へと向かうための提案をしていければなと思います。

終わりに

今回、Location Tech Company's Advent calender に参加させていただきました。
改めて、書き起こすことで自分の思考が1ステップ前進するなと感じ、大変有意義な機会となりました。

最後まで、読んでいただきありがとうございました!!

参考記事

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?