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を使った開発は個人開発との相性が良いのかもしれません。

以上!

参考リンク

Similar Posts