Fragments of verbose memory

冗長な記憶の断片 - Web技術のメモをほぼ毎日更新(準備中)

Oct 29, 2025 - 日記

git worktreeで実現するVibe Coding並列開発環境

AIに「認証機能を実装して」と指示している最中に、緊急のバグ修正依頼が来た。こんな時、どうしていますか?本記事では、Git Worktree管理ツール wt を使って、複数のAIコーディングセッションを並列で進める実践的な方法を紹介します。

問題: AIコーディングの並列実行課題

2024年頃からClaudeCodeなどAI開発CLIやCursor等のIDEの登場でソフトウェアの開発速度は劇的に向上しました。もうAIの支援無しにはソフトウェア開発は考えられません。しかし、新たな課題も生まれています。 例えば、以下のようなシーンを想像してください:

  • 集中したいメイン機能実装中に、緊急のバグ修正依頼が来る
  • 2つの異なる実験的アプローチを同時に試したい
  • PRレビューを別のワークツリーで確認しながら、本体の開発を継続したい

従来のブランチ切り替え(git checkout)では、以下の問題があります:

  • AIが作業中のファイルが書き換わってしまう
  • 依存関係のインストール状態が混在する
  • 切り替えるたびにコンテキストが失われる

Git Worktreeを使えば、それぞれ独立した作業ディレクトリを持てますが、手動管理は煩雑です。そこで登場するのが wt というツールです。

wtとは?

wt は、Git Worktreeの管理を自動化するシンプルなBashスクリプトです。特徴は以下の通りです:

  • 一貫した場所に全プロジェクトのWorktreeを集約(~/.wt/worktrees/
  • プロジェクトローカルにシンボリックリンクを作成(.wt/worktrees/
  • セットアップスクリプトの自動実行で環境構築を自動化

リポジトリ: https://github.com/tumf/wt

セットアップ

wtのインストール

wtの実態は単一のシェルスクリプトですので単にコピーするだけです。

curl -O https://raw.githubusercontent.com/tumf/wt/main/wt
chmod +x wt

PATHの通った場所に配置して実行権限つけるだけで動作します。もちろんプロジェクトディレクトリに配置するだけでもメンバーと共有して使えます。

セットアップスクリプトの作成

Worktree作成時に自動実行されるスクリプトを用意します。これがAI並列開発の鍵です。

.wt/setup を作成:

#!/bin/bash
# $ROOT_WORKTREE_PATH にはベースリポジトリへのパスが入る

echo "🚀 Worktree環境をセットアップ中..."

# Node.js プロジェクトの場合
if [ -f package.json ]; then
  npm install
fi

# Python プロジェクトの場合
if [ -f pyproject.toml ]; then
  uv sync
fi

# 環境変数ファイルをコピー
if [ -f "$ROOT_WORKTREE_PATH/.env" ]; then
  cp "$ROOT_WORKTREE_PATH/.env" .env
fi

echo "✅ セットアップ完了!"

実行権限を付与:

chmod +x .wt/setup

実践: Vibe Codingの並列実行

シナリオ1: 複数機能の同時開発

メインの開発作業中に、別の機能も並行して進めたいケースです。

# 機能Aの開発を開始
wt add feature-user-auth
cd .wt/worktrees/feature-user-auth

# OpenCodeを起動してVibe Coding開始
opencode .

OpenCodeに「ユーザー認証機能を実装して。JWT使って、リフレッシュトークンも対応。テストも書いて」とvibeを伝えている間に、別のターミナルで:

# 機能Bも並行して開発
wt add feature-dashboard
cd .wt/worktrees/feature-dashboard
opencode .

「ダッシュボード画面を作って。チャート表示とリアルタイム更新機能も」と別のvibeを並行して伝えられます。2つのAIインスタンスが独立して動作し、依存関係の競合やファイルの書き換えを気にする必要はありません。

シナリオ2: 緊急バグ修正への対応

AIが機能開発中に、緊急のバグ報告が来た場合:

# 別のWorktreeで即座にバグ修正開始
wt add hotfix-login-error
cd .wt/worktrees/hotfix-login-error

# バグ修正のvibeを伝える
opencode .

「ログイン時に401エラーが出る問題を調査して修正。原因も報告して」とシンプルに指示します。メインの開発作業は中断せず、バグ修正も並行して進められます。

シナリオ3: 実験的アプローチの比較

同じ課題に対して、異なるアプローチを試したい時:

# アプローチA: REST API
wt add experiment-rest-api
wt run experiment-rest-api opencode .

# アプローチB: GraphQL
wt add experiment-graphql  
wt run experiment-graphql opencode .

それぞれのWorktreeで異なるvibeを伝えます:

  • REST: 「RESTful APIで実装。OpenAPI仕様書も生成して」
  • GraphQL: 「GraphQLで実装。スキーマファーストで。サブスクリプションも対応」

両方の実装を完了させてから、パフォーマンスや保守性を比較できます。これぞVibe Codingの真骨頂です。

tmuxとの連携で効率アップ

tmuxと組み合わせることで、さらに快適な環境を構築できます。

# tmuxウィンドウを自動作成してOpenCodeを起動
wt run feature-auth -- bash -c 'tmux new-window -n auth -c "$(pwd)" \; send-keys "opencode ." Enter'

複数のWorktreeをtmuxのウィンドウで管理すれば、瞬時に切り替えられます。

私のワークフローでは、以下のような使い方をしています:

# セッション作成
tmux new-session -s myproject

# 各機能ごとにウィンドウ作成
wt run main opencode .
wt run feature-a -- bash -c 'tmux new-window -n feature-a -c "$(pwd)" \; send-keys "opencode ." Enter'
wt run feature-b -- bash -c 'tmux new-window -n feature-b -c "$(pwd)" \; send-keys "opencode ." Enter'

並列開発のベストプラクティス

1. タスクの粒度を意識する

各Worktreeは1つの明確なタスクに対応させます。feature-user-module より feature-login-form のように具体的な名前が管理しやすいです。

2. セットアップスクリプトを充実させる

開発に必要な環境構築を自動化することで、Worktree作成直後から作業を開始できます。

#!/bin/bash
# .wt/setup の例

# データベースマイグレーション
npm run db:migrate

# テストデータ投入
npm run seed:test

# 型定義生成
npm run codegen

3. 定期的なクリーンアップ

不要になったWorktreeは削除してディスクスペースを節約します:

# 一覧確認
wt list

# 不要なものを削除
wt remove old-feature

4. PRレビューにも活用

他の開発者のPRをレビューする際も、独立した環境で確認できます:

# レビュー用Worktreeを作成
git fetch origin pull/123/head:pr-123
wt add pr-123
cd .wt/worktrees/pr-123

# コードレビュー&動作確認
opencode .

注意点とトラブルシューティング

ディスクスペース

各Worktreeは独立したnode_modules等を持つため、ディスクスペースを消費します。不要なWorktreeは削除してください。

コンフリクト回避

同じファイルを複数のWorktreeで編集する場合、マージ時にコンフリクトが発生する可能性があります。タスクの分割を意識しましょう。

シンボリックリンクの扱い

.wt/worktrees/ はシンボリックリンクなので、一部のツールで正常に動作しない可能性があります。その場合は実体(~/.wt/worktrees/)を直接指定してください。

Vibe Codingの並列実行がもたらすもの

この開発スタイルの本質は、思考の並列化にあります。

従来の開発では、タスクAを完了させてからタスクBに移る直列処理でした。しかしVibe Codingでは、複数のvibeを同時に投げて、AIに並列実行させることができます。

人間の役割は:

  • 適切なvibeを考える
  • 生成されたコードをレビューする
  • 必要に応じて軌道修正する

実装の詳細はAIに任せ、アーキテクチャや設計判断に集中できます。

まとめ

wt と Git Worktree、そして OpenCode を組み合わせることで、以下のようなVibe Coding環境が実現できます:

  • 複数のvibeを並列実行
  • 緊急タスクへの即座の対応(コンテキストスイッチなし)
  • 実験的アプローチの同時比較
  • 「考える時間」の最大化

AI時代のコーディングは、単一タスクの高速化だけでなく、並列タスクの効率的な管理が重要です。Vibe Codingの可能性を最大限に引き出すために、Git Worktreeを活用してみてください。

個人的には、このワークフローを導入してから、「あのタスクどうなってたっけ?」という不安から解放されました。思考の並列化により、1日の生産性が明らかに向上しています。興味のある方はぜひ試してみてください。