こんにちは、座禅いぬです。
この記事はマナビDX Quest で得たもの Advent Calendar 2025、シリーズ2の3日目の記事です。1日目はペルソナシミュレータの話でしたが、今日は「自分を分裂させてAIエージェントと並列作業する」という実験についてお話しします。
本内容はマナビDXクエスト修了生コミュニティ(アラムナイ)で11月に開催したLT会で発表した内容の記事化です。アラムナイでは毎月LT会や勉強会が開催されています。ご興味のあるかたはぜひマナビDX Questにご参加いただければと思います。
本当の問題は、機械が考えるかどうかではない。人間が考えるかどうかだ。
― B.F.スキナー
生成AIは「相棒」から「自分の一部」になりつつある
皆さんも十分ご存じのとおり、生成AIの進化が止まりません。ChatGPT、Gemini、Claudeはそれぞれの方向性でどんどん賢くなり、Deep ResearchやClaude Code、Gemini CLIといったエージェントツールも登場しました。企業ではCopilotの導入が進んでいるようですね。
でも実際のところ、多くの人はAIを一つの課題を解決するのにちょっと手伝ってもらう、いわば「一回きりの凄い相棒」として試して終わっているのではないでしょうか。もちろん僕もずっとそうでした。その次のステージといえるのが、協働型AIエージェント、すなわち複数のタスクに対しユーザーのサポートをしていく仕組みではないかと思うのです。するとだんだん秘書的存在になり、自分のやりたい作業が言語化され蓄積されるにつれ、自分の一部といえるものになっていくのではないかと思います。
僕はこれまで、Deep Researchで論文フレームワークによるプロンプトエンジニアリングを試したり、Obsidianと生成AIを活用したビジネス提言の仕組みを作ったり、Claude Codeでスケジュールに沿ったHITL(Human-in-the-Loop)メソッドを実践したり、ペルソナシミュレータを構築したりしてきました。そうやってできることが増えるにつれ、課題も増えてきました。
協働型AIエージェントの課題:待機時間が無駄すぎる
自分と同様に作業するエージェントの仕組みを構築していると、ある問題に気づきました。自分がやるよりずっと早いけど、待ち時間が発生するんです。生産性は間違いなく高まっているのですが、自分が待機している時間は結局ワーキングメモリは持っていかれるので、効率化は限定的に感じます。
ペルソナシミュレータで30人のペルソナを生成するのは実際のところDeep Researchを含めると丸一日かかりました。「今まで出来ないことをやっているけど時間はかかる」という状態です。診療の合間に実施したり、待ち時間に勉強したりして時間の有効活用をしていましたが、もっと作業時間を短縮できないかと考えました。
そこで思いついたんです。そうだ!たくさんに分裂したらいいんや!
自律エージェント時代に、人間も分裂しないと追いつけないのでは?という仮説を立てて、実験してみることにしました。
並列エージェントの課題:思ったより難しい。頭がパンクする
いざ並列化しようとすると、いくつかの壁にぶつかりました。
まず、そんなにたくさん管理できない問題。それぞれのエージェントが今どんな作業をしているか、次に何をするか。作業が明後日の方向に迷走してしまわないか。これを把握するのが大変でした。
次に、エージェント同士がぶつかる問題。同じファイルを書き換えてしまったり、同じタスクをやってしまったり。依存関係が複雑になって、収拾がつかなくなることもありました。
そしてアウトプット管理問題。どのエージェントがどの課題をやったか、最終的に何が欲しいのか。これが曖昧になると、せっかくの成果物が散逸してしまいます。
作業の流れを整頓する仕組みが必要だと痛感しました。
解決策:Obsidian Kanbanで管理する
業務の重複、依存関係、引継ぎを管理するなら「カンバン」でしょ、と思いました。
ObsidianにはKanbanプラグインがあります。Markdownベースで簡単に記述でき、生成AIが読み書きできます。複数のカンバンで仕事とプライベートを分けることもできますし、作業の依存関係や時系列、タイムリミット、優先順位の設定も可能です。
正直個人だったらToDoリストで充分、カンバンはいらんだろと思っていました。なにより管理にかかる手間もあるので、すぐやめてしまうだろうと。ところがClaudeCodeは優先順位付けやサブタスク管理まで特別な仕組みをつくらなくてもやってくれます。終わらないToDoリストと向き合うよりよっぽど楽でした。
このアプローチは大当たりでした。抽象的な課題感をカードとして書き出すだけでもスタートできるのは強いです。「LT会の告知をいい感じにした~ぁい」ぐらいのノリでカード作っておいて、課題の深堀りと言語化を生成AIとやってタスクの分解やってしまえばいいんです。これでタスク管理はほぼ人間の手を離れました。
具体的な仕組み
まず、「今日の作業を開始」と指示すると、エージェントがKanbanファイルを自動検出してタスクを抽出します。Pending(保留中)、Scheduled(予定)、ToDo(やること)の順で優先度を判断し、⏫マークや📅期限マークも考慮して「今日やるべきタスク」を提案してくれます。
次に、エージェントごとにコードネームを付けることにしました。SNAKE、OCELOT、WOLFなど(某ゲームのオマージュです)。これで「SNAKEは今何やってる?」「WOLFの成果物どこ?」と把握しやすくなります。
そして、ロックマーカーという仕組みを導入しました。エージェントがタスクを取得すると 🔄 [SNAKE-20251102-1730] のようなマーカーが付きます。他のエージェントはこのマーカーが付いたタスクをスキップするので、同じタスクを複数のエージェントがやってしまう問題を防げます。
スケジュールファイルもマスターハブ方式にしました。2025-11-04_claude.mdがマスターで、そこから2025-11-04_claude_SNAKE.md、2025-11-04_claude_OCELOT.mdへWikilinkで飛べる構造です。Obsidianで開けば、どのエージェントが何をやっているか一目でわかります。
仕組みはちょっとややこしいのですが、このようにカンバンの読み書き・管理を人間とエージェントで行うことで、複雑になっていく管理の人間依存を減らせるのではないかと考えました。
結果:カンバンは良かった。でもマルチタスクに脳の認知は追いつかない
実際にやってみた結果、流れを整頓することはできました。一度に5つぐらいエージェントを作動させて作業できるようになりました。作業は爆速で進んでいきます。目標達成!
でも問題が発生しました。アウトプットのチェックと修正作業だけで30分が終わってしまうんです。とうとう自分では作業せず、AIの監督だけで一日が終わるようになりました。これは賢い状態とは思えませんでした。なんか精度も落ちた気がしますし、そもそもカンバンの段階でイシューに絞り込むことができていないように感じました。
でも良いことがありました。作業が早く終わるからこそ、成果が少ないことに早く気付けたんです。エージェントが増えれば増えるほど、人間側がちゃんと考えているか可視化されてしまう。これは皮肉な収穫でした。
学び:安易な並列は賢い選択肢ではない
考察を深めると、いくつかのことがわかってきました。
並列すると、人間のワーキングメモリをどんどん消費します。人間のパフォーマンスが低下すると、チェックも甘くなります。そもそも並列しなくてもスピードアップで解決できるケースも多いんです。現状、並列のメリットがあるのは、処理の「数」が多くて並列化した方が早く終わる時だけでよさそうです。たとえば30人のペルソナ生成のような場合ですね。
並列化でよい体験だったのは、Deep Researchと別のタスクの並列化でした。つまり、パッケージ化されたワークフロー的エージェントの並列化は認知負荷を削らないということです。他にも、疑問点をプロンプトとして書き出し、ChatGPT、Claude、Deepseek、Grokに一気に投げるというやり方も有効でした。「同じタスクだがモデルの性質が異なるのでアンサンブル」には並列化は良いということですね。
柔軟性が高いエージェント、つまり対話型で方向修正が必要なものは、むしろ並列化しない方が(今は)よさそうです。それよりも加速する直列的アプローチが重要そうに感じました。
まとめ:人間がどう考え、どう分裂するか
Q: あなたは普段、何人に分裂して仕事をしていますか?
A: 僕の答えは、だいたい3〜6人ですが、必要な時だけに絞ることにしました。
生成AIは自律エージェント前提のステージに入りつつあります。Deep ResearchやChatGPTを回しながら、並列エージェントが当たり前に回る時代が来ています。でも、一つ一つのエージェントの役割と作業を事前に定義し、精度を高めることで自律性を上げることが鍵なんだと思います。
協働型だけでも、かなり狙った精度のアウトプットを高速で行えます。協働型を通じて、どう自律性を高めるか知見を得ていきたいと思っています。そして何より、そもそも無駄な作業を高速でやっても意味ないという当たり前の答えにたどり着きました。エージェントが増えれば増えるほど、人間側の思考の質が問われます。逆に言うとそこを突き詰めるのが人間の仕事といえそうです。
人間がどう考え、どう分裂するか。この問いに向き合うことが、AIエージェント時代を生きる私たちの課題なのかもしれません。
付録:実際に使っているCLAUDE.mdの抜粋
実際に僕が使っているClaude Code用の設定ファイル(CLAUDE.md)から、カンバン統合と並列作業モードの部分を抜粋します。興味がある方は参考にしてみてください。
CLAUDE.md抜粋:Kanban統合機能と並列作業モード
## Kanban統合機能
### 作業開始時のKanbanタスク自動取得
**人間が「今日の作業を開始」と指示した際、以下を実行:**
#### Step 1: Kanbanファイルの自動検出
以下のパターンでファイルを検索:
- `*kanban*.md`
- `*Kanban*.md`
- `*カンバン*.md`
**除外ディレクトリ:**
- `/claude/`
- `/trash/`
検出された全ファイルをKanban対象とする。
#### Step 2: タスクの抽出
各Kanbanファイルから以下の順序でタスクを抽出:
**グループ優先順位:**
1. **Pendingグループ**(最優先)
2. **Scheduledグループ**
3. **ToDoグループ**
**各グループ内の優先順位:**
- ⏫ マーク付き(最優先)
- 🔺 マーク付き
- 📅 期限マーク付き(日付が近い順)
- マークなし
- 🔽 マーク付き(低優先)
**サブタスクの取得:**
- トップレベルタスク配下のインデント付きチェックリスト(`- [ ]`)も取得
- サブタスク内の`[[Wikilink]]`は参照文書として認識
#### Step 3: 優先順位サジェストと人間とのディスカッション
抽出したタスクを以下の形式で人間に提示:
【Kanbanタスクサジェスト】
本日実行を提案するタスク:
1. タスク名(業務Kanban.md > Pending)⏫
- 優先度根拠: Pendingグループ、⏫最優先マーク
- サブタスク:
- サブタスク1
- サブタスク2(参照: [[文書名]])
人間の承認を得てから次のStepへ進む。
#### Step 4: タスク分解とスケジュール作成
承認されたタスクを30分単位に分解し、スケジュールファイルの「タスク分解と時間割り当て」セクションに記載する。
### 並列作業モード
#### 基本方針
**デフォルトは単一エージェント。並列作業が必要な時のみ明示的に宣言する。**
#### 並列作業モードの適用条件
**並列作業モードは完全に独立したタスクのみ適用。** タスク間に時系列依存や成果物依存がある場合(例:記事作成→スライド化→発表調整)は通常モードで順次実行する。
#### 並列作業モード(明示的宣言)
人間が「並列作業モードで開始」と宣言した場合:
**Step 1: コードネーム自動生成**
エージェントが自分にコードネームを命名:
**候補リスト(大文字表記):**
- SNAKE
- OCELOT
- WOLF
- RAVEN
- MANTIS
- OCTOPUS
- BEE
- END
- BOSS
- FOX
**重複回避:**
1. `/claude/schedules/` 配下の同日ファイルを確認(`YYYY-MM-DD_claude_*.md`)
2. 既に使用されているコードネームを除外
3. 未使用のコードネームを選択
4. 人間に報告: 「コードネーム『SNAKE』で並列作業を開始します」
**Step 2: スケジュールファイル作成**
**ファイル構造:**
YYYY-MM-DD_claude.md (マスターハブファイル)
├─ YYYY-MM-DD_claude_{CODENAME1}.md (サブエージェント1)
├─ YYYY-MM-DD_claude_{CODENAME2}.md (サブエージェント2)
└─ YYYY-MM-DD_claude_{CODENAME3}.md (サブエージェント3)
**Step 3: ロックマーカーの使用**
タスク取得時にロックマーカーを追加:
**マーカー形式:**
🔄 [{CODENAME}-{YYYYMMDD}-{HHMM}]
**例:**
- [ ] マニュアルのmd化 ⏫ 🔄 [SNAKE-20251102-1730]
他のエージェントは🔄マーク付きタスクをスキップする。
**Step 4: タスク完了時のロック解除**
タスク完了時、ロックマーカーを削除し、`- [x]`に更新。
#### コードネームのリセット
**日を跨ぐと自動的にリセット:**
- 2025-11-02に「SNAKE」を使用
- 2025-11-03では再び「SNAKE」が使用可能(並列作業モード時)
- ただし、中断タスクは通常モードで再開するため、コードネーム不要