🐕

AIエージェント時代の開発効率を求め、並列開発CLIツールを作った。

に公開

はじめに

2025年、コードを書く速度は劇的に変わった。

Claude Code、GitHub Copilot、Cursor。AIがコードを書く時代が来た。機能の実装を依頼すれば、数分で動くコードが返ってくる。テストも書いてくれる。リファクタリングも提案してくれる。

でも、ふと気づいた。

コードを書く速度は10倍以上になったのに、開発全体の速度は10倍にはなっていない。

なぜか。ボトルネックが「コードを書く」から「ワークフロー」に移っただけだった。


AIがいるのに、なぜ遅いのか

ある日の自分の開発風景を振り返ってみた。

09:00  feature/login-fix ブランチを切る
09:01  Claude Code に「ログインのバリデーションを修正して」と指示
09:03  Claude が作業中... 待つ
09:15  完了。レビューする。コミット。PR作成。
09:20  feature/profile-ui ブランチを切る
09:21  Claude Code に「プロフィール画面をリファクタリングして」と指示
09:23  Claude が作業中... また待つ
09:40  完了。レビュー。コミット。PR。
09:45  feature/push-notify ブランチを切る
       ...

お気づきだろうか。

Claude が作業している間、自分は何もしていない。

もっと正確に言うと、Claude に次の作業を振りたいのに振れない。なぜなら、1つのローカル環境では1つのブランチしかチェックアウトできないから。

Claude の処理能力が余っている。自分の時間も余っている。なのに直列でしか進められない。

これは「AIが遅い」のではない。ワークフローがAIの速度に追いついていないのだ。


「並列開発」という概念

プログラマなら誰でも知っている。シングルスレッドよりマルチスレッドの方が速い。

サーバーサイドでは当たり前にやっている並列処理を、なぜ開発ワークフローではやっていないのか。

理想はこうだ。

09:00  3つのブランチを同時に立ち上げる
09:01  3つの Claude Code が同時に作業開始
09:15  全部完了。3つのPRをレビューするだけ。

45分かかっていた作業が15分で終わる。3倍速。しかもこの間、自分は別の作業ができる。

でも、これを実現するには問題がある。


git の制約と git worktree

git は強力なツールだが、1つの作業ディレクトリには1つのブランチしかチェックアウトできない。これは git の根本的な設計だ。

ただし、あまり知られていない機能がある。git worktree だ。

git worktree add ../my-app__feature-login feature/login
git worktree add ../my-app__feature-profile feature/profile

git worktree を使うと、1つの .git を共有しながら、複数のディレクトリに別々のブランチを展開できる。git clone のように重複した .git を持つ必要がない。軽量で高速。

my-app/                    ← main ブランチ (元のリポジトリ)
my-app__feature-login/     ← feature/login ブランチ
my-app__feature-profile/   ← feature/profile ブランチ

各ディレクトリは完全に独立している。片方で npm install しても、もう片方には影響しない。それぞれで別のターミナルを開いて、別の Claude Code を走らせることができる。

理論上は、これで並列開発ができる。

ただし、実際にやってみるとわかるが、毎回手動でこれをやるのは面倒だ。


手動の限界

git worktree を使った並列開発を手動でやると、こうなる。

# ブランチ1
git worktree add -b feature/login ../my-app__feature-login
cd ../my-app__feature-login
claude "ログインのバリデーションを修正して"

# ブランチ2 (別のターミナルで)
git worktree add -b feature/profile ../my-app__feature-profile
cd ../my-app__feature-profile
claude "プロフィール画面をリファクタリングして"

# ブランチ3 (さらに別のターミナルで)
git worktree add -b feature/push ../my-app__feature-push
cd ../my-app__feature-push
claude "プッシュ通知を実装して"

3ブランチで15行のコマンド。5ブランチなら25行。しかも、各ブランチの状態を確認するには、それぞれのターミナルを見に行かなければならない。

  • どのブランチの Claude が終わったのか?
  • どのブランチでPRを出したのか?
  • どのブランチがまだ作業中なのか?

これは人間が管理するべきではない。


paradev を作った

だから作った。

paradev — 複数の AI エージェントを、複数のブランチで、同時に走らせる CLI ツール。

npm install -g paradev

使い方は単純だ。まず体験するだけなら:

paradev demo

これだけで、テスト用リポジトリの作成から3つの Claude の並列起動まで全自動で行われる。

実際の開発での使い方

方法1: 対話式(おすすめ)

paradev add

ブランチ名とタスクを対話的に入力する。ブランチ名は自動で提案される。

✔ Claude への指示: ログインのバリデーションを修正して
✔ ブランチ名: bugfix/fix            ← 自動提案。編集もOK
✔ さらにタスクを追加する? Yes
✔ Claude への指示: プロフィール画面をリファクタリングして
✔ ブランチ名: feature/refactor
✔ さらにタスクを追加する? No

✔ 個別ターミナルを開きますか? すべて開く

方法2: JSON ファイル

paradev init    # テンプレート生成
# tasks.json を編集して...
paradev start tasks.json
  paradev — Starting 3 parallel task(s)

  Creating worktree: feature/login-fix    ... done
  Creating worktree: feature/profile-ui   ... done
  Creating worktree: feature/push-notify  ... done
  Launching Claude: feature/login-fix     ... done
  Launching Claude: feature/profile-ui    ... done
  Launching Claude: feature/push-notify   ... done

  All tasks started!

これだけで3つのことが起きる。

  1. git worktree が自動で3つ作られる
  2. 各ワークツリーで Claude Code が自動起動する
  3. 状態管理が始まる

ダッシュボードで全体を俯瞰する

paradev list で全ブランチの状態が一目でわかる。

┌─────────────────────┬──────────────────┬──────────┬────┬────────┐
│ Branch              │ Status           │ Time     │ PR │ Diff   │
├─────────────────────┼──────────────────┼──────────┼────┼────────┤
│ feature/login-fix   │ 🤖 Claude ongoing│ 12m ago  │ -  │ +24/-3 │
│ feature/profile-ui  │ 👀 Review待ち    │ 1h ago   │ -  │ +87/-12│
│ feature/push-notify │ ✅ PR Open       │ 3h ago   │ #42│+134/-8 │
└─────────────────────┴──────────────────┴──────────┴────┴────────┘

? アクション
❯ 📂 ワークツリーに入る
  🤖 Claude を起動する
  📝 PR テンプレートを生成
  ⏹  ブランチを停止する
  🧹 ワークツリーを削除する
  🔄 更新
  ← 戻る

テーブルの下にアクションメニューが表示される。ここから直接ワークツリーに入ったり、PR テンプレートを生成したりできる。list は「見るだけ」ではなく「操作する」ダッシュボードだ。

ステータス 意味
🤖 Claude ongoing Claude Code が作業中
👀 Review待ち Claude 完了。人間のレビューが必要
✅ PR Open GitHub に PR が存在する
💤 Idle ブランチはあるが停止中
🎉 Merged PR マージ済み

インタラクティブメニュー

引数なしで paradev と打つだけで、メインメニューが開く。

$ paradev

  paradev — Parallel AI Development

? 何をしますか?
❯ 🚀 新しいタスクを開始する
  📋 ブランチ一覧を見る
  📂 ワークツリーに入る
  🧹 ワークツリーを削除する
  📄 tasks.json テンプレートを生成する
  🎬 デモモードで体験する
  👋 終了

コマンドを覚える必要はない。矢印キーで選ぶだけ。

ワークツリーに入る

paradev go で、ブランチを選択して直接ワークツリーに入れる。

$ paradev go

? どのブランチに入りますか?
❯ 🤖  feature/login-fix   +24/-3
  👀  feature/profile-ui   +87/-12
  💤  feature/push-notify

Claude が既に動いているブランチを選ぶと、新しいターミナルを作らず既存のターミナルにフォーカスが移る。ターミナルの増殖を防ぐ。

その他の便利機能

paradev watch                  # Claude が終わったら Mac 通知
paradev pr feature/login --copy  # PR テンプレートをクリップボードにコピー
paradev list --watch           # リアルタイム自動更新

技術的な設計判断

paradev を作る上で、いくつかの設計判断を行った。

なぜ CLI なのか

Web UI やデスクトップアプリという選択肢もあった。でも、ターゲットは「Claude Code を毎日使っている開発者」だ。彼らは既にターミナルで作業している。新しいアプリを開かせるのは余計な摩擦になる。

ユーザーが既にいる場所で動くこと。 これが最優先だった。

なぜ JSON なのか

タスクの入力形式はいくつか検討した。

  • YAML: 人間に読みやすいが、構造が曖昧になりやすい
  • CLI引数: 1〜2タスクならいいが、5タスクになると破綻する
  • JSON: 構造が明確。プログラマなら誰でも書ける。コピペしやすい

結論として、JSON ファイル・インライン引数・対話式の3つに対応した。

paradev add                                     # 対話式(おすすめ)
paradev start tasks.json                        # JSON ファイルから
paradev start -t "feature/login:ログインを修正"  # インラインで

IDE のターミナルタブとして開く

Claude を起動するたびに Terminal.app のウィンドウが増殖するのは最悪の体験だった。

paradev は IDE を自動検知して、IDE のターミナルタブとして開く。Antigravity、Cursor、VS Code に対応している。

IDE ターミナルパネル:
[main] [feature/add-todo] [feature/list-todo] [feature/delete-todo]

また、Claude が既に動いているブランチに paradev go すると、新しいターミナルを作らず既存のターミナルにフォーカスを移す。ターミナルの増殖を防ぐ。

なぜ状態を ~/.paradev/ に保存するのか

リポジトリの .git/ や プロジェクトディレクトリ内に状態を保存する選択肢もあった。でも、それだと .gitignore の管理が必要になるし、チームメンバーに不要なファイルが見える。

paradev はリポジトリに一切ファイルを追加しない。非侵入的であることを重視した。

worktree の命名規則

{リポジトリ名}__{ブランチ名 (/ を - に置換)}

例: my-app__feature-login-fix

リポジトリの隣(兄弟ディレクトリ)に配置する。中に配置すると .gitignore が必要になるし、IDE が混乱する。


作って気づいたこと

git worktree は過小評価されている

git worktree は Git 2.5 (2015年) から存在する機能だが、知らない開発者が多い。自分も最近まで知らなかった。

AI エージェント時代になって初めて、この機能の真価が見えてきた。AI を並列で走らせるインフラとして、worktree は完璧にフィットする。

「AIを待つ時間」は新しい種類のムダ

従来の開発では、「ビルドを待つ時間」が問題だった。CI が5分回るのを待つ。コンパイルが終わるのを待つ。

AI 時代では、「AIが作業するのを待つ時間」が新しいボトルネックになっている。でも、ビルド待ちと違って、この待ち時間には別のAIに別の作業を振れる可能性がある。paradev はそこを突いている。

開発のパラダイムが変わりつつある

従来: 人間がコードを書く。1ファイルずつ。1機能ずつ。

現在: AIがコードを書く。人間はレビューする。でもまだ直列。

未来: AIが並列でコードを書く。人間は指揮する。

paradev は、この「未来」の最初のステップだと思っている。


現在の機能と今後

実装済み

  • paradev — インタラクティブメニュー(引数なしで起動)
  • paradev demo — ゼロ設定のデモ体験
  • paradev add — 対話式タスク追加(ブランチ名自動提案)
  • paradev go — ワークツリーに入る(既存ターミナル再利用)
  • paradev start — JSON / インラインでの一括起動
  • paradev list — 状態ダッシュボード(アクション付き、GitHub PR 連携)
  • paradev watch — Claude 完了時の Mac 通知
  • paradev pr — PR テンプレート自動生成
  • paradev init — tasks.json テンプレート生成
  • IDE 自動検知(Antigravity / Cursor / VS Code / iTerm2 / Terminal.app)
  • ターミナルタブ統合 + ウィンドウ整列

ロードマップ

  • Web UI ダッシュボード (ブラウザでリアルタイム確認)
  • チーム機能 (誰がどのブランチを担当しているか)
  • コスト可視化 (ブランチごとの AI 使用量)
  • 競合検知 (同じファイルを触っているブランチの警告)

試してみる

npm install -g paradev

まずはデモモードで体験してみてほしい。

paradev demo

テスト用リポジトリの作成から Claude の並列起動まで全自動で行われる。

実際の開発で使うなら、任意の git リポジトリで:

paradev       # メニューから始める
paradev add   # 対話式でタスク追加

GitHub: https://github.com/shunh56/paradev
npm: https://www.npmjs.com/package/paradev


おわりに

AI はコードを書く速度を変えた。でも、開発ワークフローはまだ追いついていない。

paradev は「AI を並列で走らせる」という、シンプルだけど誰もやっていなかったことをやるツールだ。git worktree という既存の枯れた技術と、Claude Code という最新の AI を組み合わせただけ。でも、この組み合わせが生む体験は、一度味わうと戻れない。

フィードバック、Issue、PR、何でも歓迎です。

一緒に開発ワークフローの未来を作りましょう。

Discussion