第6章 · Claude Code Advanced

Worktrees で並列開発

Parallel Development with Worktrees
→ で次のスライド · F でフルスクリーン · N で講師ノート · Esc で終了

重要キーワード

git worktree
ワークツリー
同一リポジトリの複数ブランチを別ディレクトリで同時にチェックアウトする git 機能
EnterWorktree
ワークツリー突入
Claude Code が isolation: worktree オプションで自動隔離する仕組み
Linked Worktree
リンク済みワークツリー
メインリポジトリと .git を共有する別ディレクトリ

なぜ Worktrees?

Claude Code に 複数のタスクを同時に走らせる、または リスキーな作業を隔離する 場面で git worktree が劇的に効きます。

従来のフロー (worktree なし)

[main 作業ツリー]
  ├ feat/oauth ブランチで作業中
  ├ urgent: 緊急バグ修正したい
  ↓
  git stash             # 退避
  git checkout main
  git checkout -b hotfix/xxx
  # 修正...
  git checkout feat/oauth
  git stash pop         # 戻す  ← 競合の可能性

→ 切替えごとに stash / checkout / 競合解決 が発生。Claude Code を 2 つ立ち上げて並行作業も難しい。

worktree を使うと

my-app/                # メイン (feat/oauth ブランチ)
  └ claude (作業中)

my-app-hotfix/         # 別ディレクトリ (hotfix/xxx ブランチ)
  └ claude (緊急対応)

→ 2 つの別ディレクトリで別ブランチを同時にチェックアウト。stash 不要、お互い独立。 両方で同時に Claude Code を立てて並行作業できる。

基本コマンド

worktree を追加

PII マスキング     → Code (機密)
スクレイピング     → クラウド版 Claude Code (重い)
本番 DB 操作       → Code (機密)
スプレッドシート整形 → クラウド版 Claude Code (重い)

→ ../my-app-hotfix/ に新しい作業ツリーが作成され、hotfix/issue-42 ブランチがチェックアウトされる。 .git は元のリポジトリと共有 (容量を食わない)。

既存ブランチをチェックアウト

インクリメンタル開発 → Code (対話的)
夜間バッチ           → クラウド版 Claude Code (任せきり)

レビュー用に PR ブランチを別ディレクトリに展開。

一覧を見る

クラウド版 Claude Code の VM はタスク終了で消える
   ↓
成果物は必ず Drive / GitHub / Notion / Slack に
   ↓
Code から再アクセスして続きの処理

削除

wzxhzdk:3

Claude Code との連携: isolation: worktree

Claude Code の Agent ツール には isolation: "worktree" オプションがあります。

何が起きるか

ユーザー: 「リスキーな大規模リファクタを試して」
   ↓
Claude (メイン) → Agent サブを isolation: worktree で起動
   ↓
[サブエージェント]
   git worktree add /tmp/cc-experiment-xxx -b cc-experiment-xxx
   cd /tmp/cc-experiment-xxx
   # ...作業...
   ↓
変更があれば: ブランチとパスを返す (人がレビュー → merge or 破棄)
変更がなければ: worktree を自動削除

→ リスキーな実験をメインの作業ツリーから完全に隔離。最悪サブが暴走しても、メインの作業は無傷。

使い分け

シーン 推奨
確実に通したい変更 メインで普通に作業
試してみたいリファクタ isolation: worktree のサブ
並行で複数案を試す 各案を別 worktree で
信頼度の低いコード生成 必ず worktree で隔離

並列パターン 1: 「同じタスクを 3 つの方法で試す」

ユーザー: 「キャッシュ層を Redis / Memcached / in-memory の 3 案で試して、
            それぞれ性能を計測したい」
   ↓
Claude (メイン) → 3 つの subagent を並列起動 (各 isolation: worktree)
   ├─ subagent A: ../experiment-redis     (cache/redis 実装)
   ├─ subagent B: ../experiment-memcached (cache/memcached 実装)
   └─ subagent C: ../experiment-inmemory  (cache/inmem 実装)
   ↓ 各々が pytest --benchmark を実行
   ↓
3 つの結果を集約 → ユーザーに比較表で提示

これは Claude Code を 真の並列開発機械 に変える使い方。

並列パターン 2: 「ベース修正 + 並行で関連タスク」

[main worktree]: 認証バグの根本修正 (Claude Code セッション 1)
[../docs worktree]: 関連ドキュメント更新 (Claude Code セッション 2)
[../tests worktree]: テストカバレッジ拡充 (Claude Code セッション 3)

→ 3 つの Claude Code を別 IDE タブで同時に動かせる。お互いの状態を意識せず作業可能。

注意とハマりどころ

Anthropic の中心テーマは AI Safety。 モデルが強力になるほど、誤用・予期せぬ振る舞い・社会的影響のリスクは増します。 それを技術と運用の両面から減らす活動を AI Safety と呼びます。

Constitutional AI (CAI)

LLM を訓練する際、人間からのフィードバック (RLHF) だけでなく、 「原則 (constitution) に従って AI 自身が自分の出力を批評・修正する」 プロセスを追加した手法。

  1. AI が回答を生成する。
  2. AI が原則 (例: 「有害な指示は避ける」「誠実に答える」) に照らして自己批評する。
  3. AI が修正された回答を出力する。
  4. このペアを使ってモデルを再訓練する。

これにより、人間アノテーターの工数を抑えながら 一貫した安全性 を獲得できます。

Refusals (拒否)

Claude には 「やってよいこと/やってはいけないこと」 の判断ロジックが組み込まれています。 たとえば爆発物の製造方法や、本人の同意のない監視ツールの作成は拒否します。 ただし、過剰な拒否 (over-refusal) を避ける研究も継続的に行われています。 誠実でない拒否や安全と無関係な過保護も望ましくありません。

Responsible Scaling Policy (RSP)

Anthropic は Responsible Scaling Policy という社内ガイドラインを公開し、 モデルの能力レベル (ASL = AI Safety Level) に応じて、 取り扱い・公開・運用基準を段階的に厳しくしています。

  • ASL-2: 現在の Claude が該当
  • ASL-3 以上: 大規模な社会的危害を及ぼし得るレベル — 公開前に追加の評価と緩和策を要求

開発者として知っておくべきこと

  • System Prompt (システムプロンプト) で振る舞いをある程度制御できるが、安全性ガードレールを完全に外すことはできない。
  • Jailbreak (ジェイルブレイク) 試行はサービス利用規約違反になりうる。
  • 自分のアプリで 入力検査・出力検査 を行うことが推奨される。
  • AUP (Acceptable Use Policy) に違反する用途は API 利用が停止される。

安全な振る舞いの観察

実際に Claude が拒否する例を見てみましょう (拒否の理由付け方が CAI らしいか観察)。

@@TRY_0@@

ベストプラクティス

やる やらない
✅ リスキーな実験は worktree で ❌ main 作業ツリーで実験
✅ 終わったら worktree remove ❌ rm -rf で物理削除
✅ 命名規約を決める (<repo>-<purpose>) ❌ 適当な名前で増殖
✅ .gitignore の instance/ などを共有 ❌ DB ファイルを worktree 間で共有

💡 worktree は git の隠れた最強機能。Claude Code 時代において再評価されています。

▶ Worktree 計画
私は EC サイトを開発中です。次の 3 タスクを並行で進めるための git worktree 構成を提案してください。1) main の小さなバグ修正 2) 大規模なカート機能リファクタ (実験的) 3) リリースノートの執筆。各 worktree のディレクトリ名・ブランチ名・推奨される使い方を示してください。
Hands-on Exercise

演習: worktree で 3 案を並列実装

あなたのプロジェクトで、同じ問題を 3 つの異なるアプローチ で実装し比較してください。

例: 「JSON ファイルのパース」を以下 3 案で: 1. worktree-stdlib: 標準 json モジュールのみ 2. worktree-pydantic: pydantic でバリデーション 3. worktree-orjson: orjson で高速化

手順:

git worktree add ../experiment-stdlib -b experiment-stdlib
git worktree add ../experiment-pydantic -b experiment-pydantic
git worktree add ../experiment-orjson -b experiment-orjson

各 worktree で Claude Code を立ち上げて実装 → ベンチマーク → 結果を比較。

▶ Playground を開いて実行
Hands-on Exercise

演習: isolation: worktree でリスキーリファクタ

Claude Code に大規模リファクタを依頼するとき、サブエージェントを isolation: worktree で起動するよう指示してください。

プロンプト:

大規模なディレクトリ構造変更を試したい。Agent ツールで isolation: worktree を使って、隔離環境で試行してください。完了したら worktree のパスとブランチ名を教えてください。

観察ポイント: - メインの作業ツリーが汚染されないこと - 試行が失敗してもメインに影響がないこと - 成功した場合は git merge で取り込めること

▶ Playground を開いて実行

理解度チェック

4 問のクイズで理解度を確認しましょう。

クイズを開く
🎉

まとめ

お疲れ様でした!