00:00
複数の作業を並列でAIに進めさせることができます。 AI同士の作業がぶつかることはありません。
キャンとオーティカリーマージ、マージできませんというアラートが出ています。
こんにちは、超実践AI論のたいちです。 今回は、AIの並列作業に必須のGit worktree実演解説というテーマでお話しします。
前提として、GitやGitHub、リポジトリ、コミット、プッシュ、プルといった知識は理解している前提です。
まだの場合は前回のGit解説動画を見てください。
Git worktreeに話を戻すと、1つのリポジトリのホルダーで複数のAIに同時に作業をさせると、各AI同士の作業がぶつかります。
例えば、家計簿のホルダーを2つのAIが同時に直すとどうなるでしょうか。
1つ目のAIが金額を大きい順に並べ替え、2つ目のAIが項目の整理、つまり食費を外食代と自炊代に分けるとかをやるとします。
すると、どちらのAIも作業途中で突然直していた項目が消えたり、項目名が変わったりします。
こういったことが起こるので、複数のAIに1つのホルダーで作業をさせるのはNGです。
1つのAIが作業を終えたら、また次の作業を頼むという流れが理想的です。
ですが、現在のAIは平気で30分1時間作業するので、そんなものは待っていられません。
1つのリポジトリで複数のAIに同時に仕事をさせたいですよね。
そんな時に使うのがGit WorkTreeです。
Git WorkTreeとは、1つのリポジトリから複数の作業ホルダーを作る仕組みです。
1つのAIにつき1つの作業ホルダーを用意すれば、AI同士の作業がぶつかることはありません。
今回は、このGit WorkTreeを使って、実際に複数のAIを並列で作業させるところを実演します。
まずは、実演のための作業ホルダーを用意します。
場所はどこでもいいですが、僕はデスクトップにGit WorkTreeというホルダーを用意します。
そして、クロードコードを開き、
オーパス5.5の試行レベルを高にして、作成したホルダーのパスを貼り付け、
このホルダーをGitHubのプライベートリポジトリとして管理して、と指示します。
ですが、僕は毎回AIに頼むのは面倒なので、このリポジトリ作成の作業をスクリプト化しています。
先ほどのホルダーは一旦削除し、ワープを開きます。
そして、ワープでリポジトリ作成のコマンドを呼んで、その後に先ほどのホルダーのパスを渡します。
これで先ほどのホルダーがプライベートリポジトリになります。
このスクリプトも、クロードコードにホルダーのパスを受け取って、
GitHubのプライベートリポジトリにするスクリプトを作って、と言えばすぐに作成してくれます。
そして、リポジトリはできましたが、まだ中身が空っぽなので、クロードコードに架空の中身を作ってもらいます。
クロードコードで先ほどのプライベートリポジトリのホルダーを開きます。
リポジトリの中身は何でもいいですが、今回は冒頭の例でも使った架形簿を作ってもらいましょう。
架空の架形簿をマークダウンファイルで作成して、完成したようです。
03:02
早速中身をVSCodeで見てみましょう。
クロードが作ってくれた架空の架形簿はこんな感じです。
問題なさそうなので、この架形簿をGitHubにプッシュします。
そうすると、GitHubのリポジトリにも架形簿が反映されました。
した準備はできたので、早速このリポジトリでGitワークツリーを使って複数AIに同時に作業させてみます。
まずは、ワークツリーのホルダーを置く場所を用意します。
僕はデスクトップにGitワークツリーズというホルダーを作成します。
そして、クロードで新しい会話を立ち上げて、このように指示します。
現在のブランチから先ほどコピーしたパスにワークツリーを作成するスクリプトを作成して、
ワークツリー名はユーザーが必須で指定する。
これで僕が先ほどリポジトリ作成時に見せたように、スクリプトでワークツリーを自由に作れるようになります。
ここでブランチという新しい用語が出てきたので解説します。
ブランチの解説は、このサル先生のGit入門というサイトがとてもわかりやすいので引用します。
リポジトリのコミット履歴は最初は1本しかありませんが、特定のコミットを起点に複数に分岐させることができます。
ブランチというのは枝という意味で、この分岐した1本1本の履歴がブランチになります。
例えばこの一番上の緑のブランチは本番環境用のメインブランチ、
青のブランチは機能追加用のフィーチャーブランチ、
紫のブランチはバグ修正用のバグフィックスブランチといったイメージです。
このようにブランチを分岐させることで、各作業は互いに影響を受けず並列して進めることができます。
実際にこのGitワークツリーリポジトリでもブランチを増やしてみましょう。
現時点ではブランチはまだこのメインの1つだけです。
ここにフィックスというブランチを追加してみます。
フィックスはメインから作成されます。
はい、フィックスブランチができました。
先ほどのボタンでフィックスブランチとメインブランチを自由に切り替えることができます。
現時点ではフィックスブランチはメインから作成したままなので、どちらのブランチもまだ差分は全くありません。
試しにフィックスブランチ側の架形簿をちょっと修正してみます。
この架形簿の冒頭を10月にしてみましょう。
コミットメッセージはデフォルトのままにします。
修正が完了しました。
するとフィックスブランチでは架形簿の冒頭が10月になりました。
そしてここからメインブランチに戻してみます。
するとメインでは修正はまだ何もしていないので9月のままです。
このようにブランチが複数あれば複数の作業を並列して進めることができます。
そしてブランチというのはあくまでこのGit上の概念です。
なのでここでブランチを増やしてもパソコンの中にあるGitワークツリーのホルダはメインブランチのままです。
そのため架形簿ファイルの冒頭も2026年9月から変わっていません。
そして今回の冒頭から話しているGitワークツリーというのはこのブランチが入ったホルダ自体のことを意味します。
06:06
なので先ほどクロードで指示した現在のブランチからGitワークツリーズのパスにワークツリーを作成するスクリプトを作成してというのは
まずGitHub上で新しいブランチを作成し、そのブランチをGitワークツリーズホルダに入れるのをワンコマンドでできるようにするという意味でした。
早速実行してみます。
スクリプトができたようなので試してみましょう。
まずはこのスクリプトをコピーして、クロードコードのターミナルを開きます。
そしてスクリプトを貼り付けます。
ワークツリー名のところは適当な名前に書き換えます。僕はテストとしました。
そしてEnterを押します。
実行が完了したので早速確認してみます。
まずはGitHubでブランチが作成されたかを見てみます。
コードのところのこのボタンからブランチを見てみます。
すると僕が作成したFixedブランチのみで、まだワークツリーが作成されていません。
どうやらスクリプトはGitのみでワークツリーを作成し、GitHubには反映しない作りになっているようです。
試しにGit上でワークツリーのブランチができたか見てみましょう。
WarpでGitワークツリーのフォルダに移動してGitブランチと打ってみます。
そうすると現在のブランチがすべて表示されます。
するとこのようにメインとテストが存在しています。
つまりGit上ではワークツリーのブランチがちゃんと作成されています。
ついでにGitワークツリーのフォルダの中にテストがあるかも見てみましょう。
このようにちゃんとテストがあって、その中にかけぼのファイルも反映されています。
つまりかけているのはGitHubへの反映だけです。
なのでその部分を追加で直しましょう。
クロードコードに追加で注文をします。
ワークツリーのブランチはGitHubにも反映するようにしてと指示します。
修正が完了したのでもう一度試してみましょう。
ワークツリー作成のスクリプトをコピーして、
WarpでGitワークツリーのフォルダに移動した状態で貼り付けます。
そしてワークツリー名は今度はテスト2としましょう。
スクリプトが完了しました。
ではまたGitHubを見てみます。
画面を更新しブランチのところを見てみると今度はテスト2がちゃんとあります。
そして念のためパソコンでGitワークツリーのフォルダを見てみると
テスト2のフォルダが作成されていて、その中にかけぼファイルもあります。
これでスクリプトの動作は完璧です。
ここで一旦完成したスクリプトをコミットしておきましょう。
VS Codeでスクリプト作成とコミットメッセージを打ってコミットしてプッシュしておきます。
では次にワークツリーを使って実際に複数のAIにGitワークツリーリポジトリを修正してもらいましょう。
まずは複数のAIが作業するためのワークツリーを作成します。
ワークツリーの名前は1つ目は金額修正を表すMoneyFixとします。
2つ目は項目修正を表すItemFixとします。
09:02
これで2つのワークツリーができました。
これらのワークツリーで1つずつAIを動かします。
早速クロードアプリで作成したワークツリーを使って複数のAIに同時に作業をさせてみます。
まずはワークツリーのホルダーをクロードアプリで開いていきます。
1つ目のワークツリーでは固定費を金額の高い順に並び替えてもらいましょう。
そして会話で右クリックをして新規ウィンドウを開きます。
こうすることで複数のAIの作業を見ることができます。
そして会話を新しくしてもう1つのワークツリーのホルダーを開きましょう。
もう1つのワークツリーではサブスクの項目をもっと細かく書いてもらいます。
こんな感じでGitワークツリーを使って複数の作業を並列でAIに進めさせることができます。
今回の場合は片方の作業は簡単すぎてすぐに終わっていますが、
もし仮に時間がかかっていたとしてもお互いのAIの作業ホルダーは別々なので影響することはありません。
ワークツリーの作業が終わったので変更内容を元のブランチにマージしていきます。
マージというのは先ほどの図に戻って説明すると分岐したブランチの作業を分岐元のブランチに統合することです。
実際にやってみます。
まずはGitHubでこのプルリクエストというところを開きます。
そしてニュープルリクエストボタンを押します。
ここに出ている左側がマージ先で右側がマージ元です。
マージ元を先ほどのアイテムフィックスのブランチにします。
まだコミットをプッシュしていなかったので差分なしと出ています。
先ほどの変更をGitHubにプッシュしなければいけません。
コマンドでもできますがここはクロードコードに依頼してしまいます。
完了したようなので先ほどのGitHubの画面に戻ります。
そして画面を更新するとこのように変更内容が差分として出たのでプルリクエストを作成します。
タイトルと説明はデフォルトのままにします。
ここで出てくるプルリクエストとはその名の通り特定のブランチを特定のブランチにプルする依頼のことです。
今回の場合はアイテムフィックスブランチをメインブランチにプルする依頼を出しています。
プルリクエストという名前ではありますが、実際はmerge requestの方が実体にあった名前じゃないかと思います。
そしてプルリクエストの画面ではブランチ同士の差分を見ることができます。
一般的にここでAIの作業内容が問題ないかをチェックします。
今回の場合金額を高い順に並び替えました。問題なく並び替えられていることがわかります。
12:00
変更内容が確認できたらmerge pull requestのボタンを押してconfirm mergeでmergeを確定します。
するとアイテムフィックスがメインにmergeされました。
実際にメインブランチを見てみます。
メインブランチの家計簿ファイルを見てみると、固定費の項目がこのように金額の高い順に並び替わっていて、先ほどのブランチが反映されていることがわかります。
次にもう一つのワークツリーもプルリクエストを作ってみます。
すると今度はキャントオーティカリーmerge、mergeできませんというアラートが出ています。
実際にプルリクエストを作成して詳しく見てみます。
mergeボタンを非活性になっていてresolve conflictsというボタンが出てきています。
このボタンを押してみるとコンフリクトを解消することができます。
コンフリクトというのは変更内容がぶつかっているという意味です。
先ほどのアイテムフィックスのワークツリーでは家計簿のファイルを直しました。
今回のマネーフィックスのワークツリーでも同じファイルを直しています。
このように複数のワークツリーで同じファイルを修正すると、
プルリクエストのタイミングでGitHubは自動で修正内容を統合することができません。
なので一画目で見て正しい内容になるよう手で直す必要があります。
一応このコンフリクト画面の見方を教えておくと、ここからここまでがマネーフィックスで入った修正です。
一方でこの下の部分が現在のメインの最新になっています。
AIが出てくるまではこのコンフリクトを目で見て正しい内容に直すのは結構面倒な作業でした。
ですが今はコンフリクトが起きてもAIに直してもらうだけでOKです。
そのままコンフリクトを解消してと依頼します。
コンフリクトを直してくれました。早速プルリクエストをもう一度見てみましょう。
画面を更新するとこのようにコンフリクトが解消してマージができるようになっています。
先ほどと同じ手順でマージしていきます。
これで2つのワークツリーの作業をメインにマージすることができました。
ただマージを終えてもブランチやワークツリーはまだ残っています。
例えばGitHubのコード画面からブランチを見てみるとこのようにアイテムフィックスもマネーフィックスもどちらもブランチが残っています。
そしてパソコンの中のGitワークツリーのフォルダを見てみるとここにもアイテムフィックスとマネーフィックスはマージをしても残っています。
なので僕はこのマージ、ブランチの削除、ワークツリーの削除を一発でやるコマンドもクロードコードに作成してもらっています。
ちなみにワークツリーの作成はクロードコードのデフォルトの機能でもできます。
具体的にはここでワークツリーのチェックを付けて指示をするとクロードコードが自分でワークツリーを作成して作業をしてくれます。
ですが僕はデフォルトの機能を使うよりワークツリーは自前でスクリプトを組む方が便利だと思っています。
なぜなら自前のスクリプトなら事前にプログラムの環境を立ち上げたり、Git管理していないファイルをコピーしたりと色々カスタマイズがしやすいからです。
ワークツリーの運用はデフォルトの機能を使うのも自前スクリプトを使うのも好みの問題だと思います。
15:01
ぜひどちらも試して自分にとって便利だと思う方を使ってみてください。
ここで一つお知らせです。
無料メルマガで今回話したような実践的なAI活用法を配信しています。
1分ほどで登録できるので概要欄のリンクから見てみてください。
今回の内容を再来します。
AIに並列で作業をさせたいときは、作業の数だけワークツリーを用意して、それぞれのワークツリーに一つずつAIを割り当てれば、お互いの作業が影響しません。
そしてワークツリーの各作業が終わったら、プルリクエストを作成して問題がないかチェックし、元のブランチにマージしていきます。
このワークツリーの作成や削除の一連の流れはスクリプト化しておくと便利です。
ぜひあなたも今回学んだGitワークツリーを活用して、AIにたくさんの作業を同時に任せましょう。
より多くの仕事を効率的にできるようになるはずです。
概要欄にも今回の内容を解説した記事を貼っておきます。
それでは今日はこの辺で。