AI廃人の一週間:git worktreeで並列開発、夜はPR工場

第 59 回目の収録ということで、今回もジムへ向かう道すがら車の中で録音しました。今回は竹内の AI 疲れの話から、git worktree を使った並列開発の工夫、そして僕が最近気になっている Cursor 2.0 の話まで、盛りだくさんの内容でお届けします。

AI疲れという新しい現象

竹内がこの 1 週間、AI 廃人みたいになっていたという話から始まりました。何がそんなに大変だったのかというと、AI が一瞬でタスクをこなしてしまうため、レビューが追いつかない状況だったそうです。

Claude Code(Sonnet 4.5)を使っていると、上限に届かないくらい余裕があるらしく、もったいないから使い倒そうとした結果、常に AI のことを考えながら生活する羽目になったとのこと。外出するときも家事をするときも、その間に AI に長時間タスクをアサインしないともったいない、という感覚になってしまったそうです。

奥さんからも AI に支配されてるからやめてくれと言われたらしく、これは新しいタイプの疲労だなと思いました。

GitHub ActionsとCI実行時間の壁

竹内はポッドキャストで聞いた話を参考に、寝ている間に GitHub Issues 経由で GitHub Actions 上で Claude Code を実行させる運用を試したそうです。外出先でもイシューを作ってアサインすればどこでも動くというメリットはあったものの、GitHub Actions の CI 実行時間の上限を 1 日で食いつぶしてしまったという問題に直面しました。

そこで今度は、ローカルでうまく並列実行させる方法を模索することになったわけです。

git worktreeを使った並列開発の工夫

ここからが今回の技術的なメインテーマです。竹内は git worktree 機能を使ってローカルでの並列実行を実現しようとしていました。

git worktree は、通常の Git だとブランチを切り替える際に作業内容を stash する必要がありますが、複数ディレクトリで同じリポジトリを同期して扱える機能です。最近、Claude Code を動かすために注目されているようですね。

運用の課題

ただし、竹内もいくつか課題に直面していました。例えば、メインブランチから機能 A を開発するためにgit worktreeでディレクトリを作り、そこで Claude Code を立ち上げて開発させる。次に機能 B を作るときは、またメインブランチのディレクトリに戻って新しくワークツリーを作る。こうしていると、どのディレクトリがどの機能に対応しているのか、頭の中でわけがわからなくなってしまうという問題です。

LazyGitとtmuxでの解決策

竹内は LazyGit という Git クライアントを使うことで、この問題を解決していました。LazyGit からワークツリーを作成すると、どのブランチが今存在しているのか一覧してくれるそうです。そしてワークツリーを指定してチェックアウトすると、LazyGit の中で内部的にディレクトリが移動します。

その状態で tmux で新しいタブを開くと、チェックアウトしたディレクトリが開くように設定しているとのこと。さらに tmux のタブ名にディレクトリ名を含めているので、どのタブがどのワークツリーのタブなのか分かるようになっているそうです。

常にメインブランチのタブを左端に置いておいて、そこを起点にワークツリーを作って新しいタブを開く。タスクが終わったらメインのタブに戻って、LazyGit 上からワークツリーを消すとディレクトリもブランチも消せる、という運用フローを確立していました。

残る課題

ただし、環境ファイルや ignore されているファイルはワークツリーへコピーされないため、毎回必要に応じてコピーしないといけない手間は残っているそうです。このあたりはもうちょっとうまくやりたいポイントだと言っていました。

Cursor 2.0の進化

僕の方はというと、Claude Code よりも Cursor で開発することが多いです。 竹内が気にしていたコマンド実行時のスタック問題についても、設定で解決できると思います。

最近リリースされた Cursor 2.0 では、マルチタスク系の機能が追加されて、同時にパラレルでいろんなタスクが処理できるようになったそうです。さらにコマンドラインのクライアントもあるらしく、結局コマンドラインに行き着くんだなという話になりました。

エコシステムの競争

竹内が指摘していたのは、Claude Code のエコシステムが充実してきているということです。cc manager や cc undo といった NPM コマンドが増えてきて、エコシステムが成熟していることが競争に勝つポイントになるのではないか、という見立てでした。

ただ、結局モデルの性能が良いやつが良いという結論に落ち着きそうな気もします。一時期は Claude Code が一番良かったけど、今は Codex が良いらしいですね。長期的に見ると ChatGPT が勝ちそうで、さらに長期で見ると Google などのビッグテックが勝つのではないか、という話もしました。

Anthropic は汎用化よりもコーディングに特化した形で進化しているのではないか、という話も出ました。

睡眠時間を活用する発想

竹内が面白いアイデアを話していました。人生の 3 分の 1 くらいは睡眠に使っているわけで、寝ている間に AI に仕事をさせることができれば、トータルの生産性がめちゃめちゃ上がるのではないか、という発想です。

日中にたまったイシューを寝ている間に全部 PR 化させて、朝起きたらレビューするという運用を考えているそうです。ただ、実際には 30 分経たないうちに全部終わってしまうので、もうちょっとうまいやり方を考える必要があるとのことでした。

仕様書とアジャイルのトレードオフ

僕が思ったのは、きっちり仕様書を書けば本質をついたコードは実装してくれるだろうけど、その時間コストとのトレードオフだということです。

竹内も、個人開発では一人でやっている分には、どんどん指示して作らせてフィードバックを回していく方がやりやすいと言っていました。チーム開発だとデザインの微妙な違いでデザイナーとコミュニケーションを取らないといけないコストが発生しますが、個人開発ではそういうコストがないので本質的なことにフォーカスできて楽しいとのことです。

これはまさにウォーターフォールかアジャイルか、みたいな話ですよね。

個人開発アプリの進捗

竹内の個人開発アプリは順調に進んでいるようです。今週は画像を添付できる機能を実装したそうです。チャット機能で画像を添付して「これ追加」と言うと、画像を解析して料理名、食品名、カロリー、PFC を計算して食事記録に追加されるという仕組みです。

Vercel AI SDK を使っているのでめちゃめちゃ簡単にできたそうです。複雑に聞こえますが、実装は本当に簡単だと言っていました。難しいことを隠蔽して、少ない手順で実現できるのが Vercel AI SDK の良いところだそうです。

システムプロンプトのさじ加減

ただし、課題もありました。最初は画像をアップロードして追加すると、AI が「それはラーメンですね、カロリーは 500 から 800 キロカロリーです、食事記録に追加しますか?」と再確認してきて、「はい」と答えると画像の URL を忘れ去って画像なしで記録されてしまうという問題がありました。

そこでプロンプトに「いちいち確認せずに追加してと言われたら追加してくれ」という指示を埋め込んだところ、今度は 1 日の初めの会話データを AI に渡して評価させる機能が誤動作するようになってしまったそうです。

プロンプトのさじ加減で別の機能が動かなくなったりするのは、確率的な動作の難しさですね。竹内は画像アップロード時にテキストデータの中にも画像 URL を埋め込むようにすることで、履歴として画像 URL が残るように工夫したそうです。

モデルとコスト

今は OpenAI のモデルを使っているそうですが、ちょっとお金がかかるので後で下げておくと言っていました。開発用には AI をモックするような機能が Vercel AI SDK にあるそうなので、それを使えばいいかもしれません。

認証機能の実装

次の作業は認証機能の実装だそうです。先週見せられるんじゃないかという話をしていましたが、認証を実装していないので API を公開するとまずいため、もうちょっと待つ必要があるとのことでした。

匿名認証で一定期間は認証なしで使えるようにして、一定期間過ぎたら Apple ログインなどで促す形にする予定だそうです。バックエンドは Expo と EAS Hosting を使う予定とのことでした。

キャリアの話

竹内が久々に転職ドラフトを開いたところ、まずは面談設定をしましょうという画面が出てきて、キャリアの壁打ちをやったそうです。

その面談の人はもともとエンジニアの方らしく、その人の温度感としては、プロダクトマネージャーやピープルマネジメントをこの先やっていかないと年収 800 万を超えるのは難しいんじゃないか、という感じだったそうです。

竹内はあまり積極的にやりたいわけじゃないけど、やってもいいかなくらいの温度感で答えたそうですが、就活していく上ではそういうアピールをしないといけないのかと思うと、ちょっと気が重いと言っていました。

まとめ

今回は、AI ツールを使った開発の現場のリアルな話が聞けて面白かったです。git worktree と LazyGit、tmux を組み合わせた並列開発の運用は、かなり実践的な工夫だと思いました。

Vercel AI SDK を使った画像解析機能の実装も、システムプロンプトの調整という新しい課題が見えてきて興味深かったです。このあたりは試行錯誤しながら最適解を見つけていくしかないんでしょうね。

個人開発ではコミュニケーションコストがないので本質に集中できて楽しい、という竹内の言葉が印象的でした。確かに、AI を使った開発は個人開発との相性が良いのかもしれません。

以上!

参考リンク

関連記事