Claude Code を20並列で回す
— 1人会社の実装パターン
AIコーディングの生産性は「1セッションの賢さ」ではなく「同時に走る仕事の本数」で決まります。 MIRAI は代表1名で7つのプロダクトを並行開発していますが、その実体は Claude Code の並列運用です。 今号は実運用中の構成から、再現可能な3つの型を抜き出します。
型 01git worktree で「場所」を分ける
並列化の最初の壁はコンフリクトです。同じ作業ディレクトリで2つのセッションを走らせると、 互いの編集を踏み合ってビルドが壊れます。解決は branch ではなく worktree(作業ツリーの物理分離)。 1機能=1ディレクトリ=1セッションに分けます。
# 機能ごとに独立した作業ツリーを切る
git worktree add ../app-checkout -b feat/checkout
git worktree add ../app-darkmode -b feat/darkmode
# それぞれのツリーで Claude Code を起動(別ターミナル)
cd ../app-checkout && claude
cd ../app-darkmode && claude
# 終わったら統合して片付け
git merge feat/checkout && git worktree remove ../app-checkout
ポイントは「人間がレビューする単位」でツリーを切ること。細かすぎるとマージ作業が人間側の律速になり、 大きすぎると並列の意味がなくなります。私たちの経験則は「PR 1本になる粒度」です。
型 02launchd で「時間」を分ける — 定時自走
人間が寝ている時間は、最も安全な並列スロットです。macOS なら cron より launchd が確実
(スリープ復帰後の追い実行など)。毎朝の定型処理 — データ取得、レポート生成、デプロイ前チェック — を
AIごと定時起動します。MIRAI では現在この型のジョブが十数本、毎日無人で走っています。
<!-- ~/Library/LaunchAgents/com.example.daily-report.plist -->
<key>ProgramArguments</key>
<array>
<string>/bin/zsh</string><string>-lc</string>
<string>claude -p "昨日の売上ログを集計し report.md を更新して" \
--allowedTools "Read,Write,Bash(python3 *)"</string>
</array>
<key>StartCalendarInterval</key>
<dict><key>Hour</key><integer>7</integer>
<key>Minute</key><integer>30</integer></dict>
- PATH は素の状態で起動します。スクリプト側で
export PATHを明示しないと「手元では動くのに定時だと死ぬ」が起きます。 - 許可ツールは
--allowedToolsで必要最小限に絞る。無人実行に全権を渡さないのが原則です。 - 結果は必ずログファイルへ。無人ジョブの失敗は「気づかない」が最頻の事故です。
型 03サブエージェントで「役割」を分ける
1つのセッションの中でも並列はできます。Claude Code は調査・実装・検証をサブエージェントに分業させられます。 コツは丸投げではなく「返り値の形」を先に決めること。次の指示型をそのまま使ってください。
「この repo の決済まわりの実装を3つの観点で並列調査して。
① エラーハンドリングの抜け ② 二重課金の可能性 ③ ログの欠落。
各エージェントは {ファイル:行数, 問題, 深刻度} の表で返すこと。
調査だけ。修正はまだしない。」
「調査だけ。修正はまだしない」の一文が重要です。並列エージェントに同時に書き込みをさせると 型01のコンフリクト問題が再発します。読みは並列、書きは直列 — これが安全則です。
落とし穴実際に踏んだものだけ
| 事故 | 原因 | 対策 |
|---|---|---|
| ビルドが SIGKILL | 複数セッションが同時に iOS ビルド → メモリ枯渇 | 重いビルドは同時1本までに制限(直列キュー) |
| 定時ジョブが沈黙 | 認証トークンの期限切れに誰も気づかない | 失敗時に通知を出す行を plist 側に必ず入れる |
| 成果が行方不明 | 並列セッションの出力先がバラバラ | 成果物の置き場所と命名規則を先に1枚のメモに固定 |
まとめどの型から始めるか
迷ったら型02(定時自走)から。worktree は開発者向けですが、定時自走は「毎朝のルーチンがある人」 全員に効きます。まず1本、明朝7:30に何かを無人で終わらせてください。 その「起きたら終わっていた」の体感が、並列化の出発点です。
明日の№002は、この購読サービス自体を題材にします — Stripe × Cloudflare で課金インフラを半日で立てた全手順。 商品登録から決済リンク発行まで、APIコールを全部見せます。
この記事が毎朝7:00に届きます — 月980円、いつでも解約可。
購読を始める→