AIオーケストレーションツールの選び方:TAKT採用までの検討プロセス
はじめに
前回の記事「Claude Codeハーネス機能詳解:CLAUDE.md・SKILLS・HOOKで開発を制御する」では、Claude Codeのハーネス機能(CLAUDE.md、Memory、SKILLS、HOOK)を活用した開発制御を解説しました。
特に、長期セッションでのコンテキスト劣化(優先度低下、Compaction)に対して、HOOKとSKILLSがイベント駆動で毎回ルールを喚起する対抗策として有効であることを説明しました。
しかし、ハーネス機能は単一のClaude Codeセッション内での制御に特化しており、以下のようなケースには対応できません:
- 複数AIプロバイダーの協調動作: Claude(計画・設計)+ Copilot(実装)の役割分担
- マルチステップのワークフロー自動化: 計画 → 実装 → テスト → レビューの連鎖実行
- ステップ間のコンテキスト引き継ぎ: 前ステップの結果を次ステップに渡す仕組み
- 失敗時の柔軟なリトライ: エラー時にステップ単位で再実行・修正指示
これらの要件には、AIオーケストレーションツールが必要です。この記事では、オーケストレーションツールの選定プロセスと、TAKTを採用した理由を解説します。
この記事で分かること
- AIオーケストレーションツール選定の3つの視点
- TAKTの特徴と採用理由
- 他の選択肢との比較
- 実際の導入時の考慮点
1. AIオーケストレーションツール選定の3つの視点
Claude Codeのハーネス機能(CLAUDE.md、Memory、SKILLS、HOOK)は、長期セッションでのコンテキスト維持とルール遵守に有効ですが、複数AIの協調や複雑なワークフロー自動化には対応していません。
これらの要件を満たすオーケストレーションツールの選定時に重視した3つの視点を紹介します。
1.1 複数AIプロバイダー対応
背景:AIプロバイダーの得意領域
実際の開発では、各AIプロバイダーの特性を活かした役割分担が効果的です:
| プロバイダー | 得意領域 | 制約 |
|---|---|---|
| Claude (Claude Pro) | 計画・設計・レビュー | トークンコスト高(サブスクで定額) |
| GitHub Copilot CLI | コマンド提案、実装支援 | コード生成に特化 |
選定基準
- プロバイダーの切り替えが容易: ステップごとに異なるプロバイダーを指定可能
- 認証情報の管理: 各プロバイダーのAPI/CLIを統一的に管理
- サブスクリプション活用: Claude ProやGitHub Copilotのサブスクを有効活用
1.2 ワークフロー定義の柔軟性
必要な機能
理想的なワークフロー:
計画(Claude) → 実装(Copilot) → テスト(Copilot) → レビュー(Claude)
この流れを定義する際に必要な要素:
- ステップの明確な定義: 各ステップの役割・プロバイダー・プロンプトを記述
- コンテキストの引き継ぎ: 前ステップの結果を次ステップに渡す
- 条件分岐: テスト失敗時の処理など
- 可読性: チームで共有・メンテナンス可能な形式
選定基準
- 宣言的な記述: YAMLやJSON等、読みやすい形式
- バージョン管理可能: Gitで管理できる
- プロジェクト固有設定: プロジェクトごとにワークフローをカスタマイズ
1.3 リトライ・修正機能
問題:自動実行での失敗
完全自動化では、以下のような失敗が発生します:
- テストの失敗: 実装ミスによるテストエラー
- Lintエラー: コーディング規約違反
- ビルドエラー: 依存関係の問題
ビルトイン機能では、これらの失敗時に人間が介入して再指示する必要があります。
選定基準
- ステップ単位のリトライ: 失敗したステップから再実行
- 修正指示: エラー内容を確認し、追加指示を与えて再実行
- 履歴管理: 過去の実行結果を確認可能
- インタラクティブ性: 完全自動とマニュアル介入のバランス
2. TAKTの特徴と採用理由
上記の3つの視点から、TAKT(AI orchestration tool)を選定しました。
2.1 TAKTとは
TAKTは、複数のAIプロバイダーを統合し、YAMLベースのワークフロー定義で段階的なタスク実行を可能にするオーケストレーションツールです。
公式リポジトリ: https://github.com/takt-ai/takt
2.2 TAKTの主要機能
1. YAMLベースのワークフロー定義
可読性が高く、Gitで管理しやすい:
# .takt/workflows/default.yaml
workflows:
default:
steps:
- name: planning
provider: claude
prompt: |
以下の要求から実装計画を立ててください:
{{user_input}}
- name: implementation
provider: copilot
prompt: |
以下の計画に基づいて実装してください:
{{steps.planning.output}}
- name: testing
provider: copilot
prompt: |
実装されたコードのテストを実行してください
- name: review
provider: claude
prompt: |
実装とテスト結果をレビューしてください:
{{steps.implementation.output}}
{{steps.testing.output}}
max_iterations: 3
2. 複数プロバイダー対応
ステップごとに最適なプロバイダーを指定:
providers:
claude:
type: claude
model: claude-sonnet-4-5
copilot:
type: copilot-cli
command: gh copilot suggest
3. ステップ単位のリトライ・修正
実行後に柔軟な介入が可能:
# ワークフロー実行 takt run default "新機能を実装" # 実行状況確認 takt list # 特定ステップをリトライ takt retry <run-id> --step testing # 追加指示を与えて再実行 takt instruct <run-id> --step implementation "エッジケースを考慮して"
4. プロジェクト固有設定
project/
├── .takt/
│ ├── config.yaml # プロジェクト固有設定
│ └── workflows/
│ ├── default.yaml
│ └── review.yaml
└── ~/.takt/
└── config.yaml # グローバル設定(認証情報等)
2.3 TAKT採用の決定理由
✅ 視点1: 複数AIプロバイダー対応
- Claude、Copilot CLI両対応
- ステップごとにプロバイダー指定可能
- 認証情報はグローバル設定で一元管理
✅ 視点2: ワークフロー定義の柔軟性
- YAMLで宣言的に記述
- Gitでバージョン管理可能
- プロンプトテンプレート、変数展開をサポート
✅ 視点3: リトライ・修正機能
-
takt list
で実行履歴確認 -
takt retry
でステップ単位の再実行 -
takt instruct
で追加指示
その他のメリット
- ローカル実行: クラウド不要、プライバシー保護
- オープンソース: カスタマイズ可能
- 軽量: 依存関係が少なく、導入が容易
3. 他の選択肢との比較
TAKT以外にも検討した選択肢と、それぞれの特徴を紹介します。
3.1 ファイルベースのプロンプト管理
概要
プロンプトをファイルに保存し、手動で各AIに投げる方式。
メリット
- シンプル
- タスク定義の再利用
- ツール不要
デメリット
- AI間の連携は手動: 結果の受け渡しを人間が行う
- 自動化できない: ステップごとに手動実行
- リトライ機能なし: 失敗時は最初からやり直し
向いているケース
- 単発のタスク
- AIを1つしか使わない
- 完全に手動でコントロールしたい
3.2 GitHub MCP Server連携
概要
Claude.aiからGitHubリポジトリに直接アクセス・コミット。
メリット
- Claude.aiから直接操作
- Web UIで完結
- MCPの標準機能
デメリット
- ローカル環境との同期が課題: ローカルでの作業と競合
- Claude.aiのみ: 他のAIプロバイダーと組み合わせにくい
- ワークフロー定義が難しい: ステップの自動化には不向き
向いているケース
- Webブラウザで完結したい
- ローカル環境がない
- Claudeだけで十分
3.3 カスタムスクリプト(シェルスクリプト等)
概要
シェルスクリプトやPythonスクリプトで自作。
メリット
- 完全な柔軟性
- プロジェクト固有の要件に対応
- 学習コストなし(既存の知識で対応)
デメリット
- 開発・メンテナンスコスト: 自分で実装・保守
- 再利用性が低い: プロジェクトごとに作り直し
- エラーハンドリングが煩雑: リトライ・修正の仕組みを自作
向いているケース
- 特殊な要件がある
- 既存のツールでは対応できない
- スクリプティングが得意
3.4 比較まとめ
| 選択肢 | 複数AI対応 | ワークフロー定義 | リトライ機能 | 導入コスト |
|---|---|---|---|---|
| TAKT | ⭕ | ⭕(YAML) | ⭕ | 低 |
| ファイルベース | △(手動) | △(手動実行) | ❌ | 最低 |
| GitHub MCP | ❌(Claudeのみ) | ❌ | ❌ | 低 |
| カスタムスクリプト | ⭕(自作) | ⭕(自作) | △(自作) | 高 |
4. TAKT導入時の考慮点
実際にTAKTを導入する際に考慮すべきポイントを紹介します。
4.1 プロジェクト固有の設定
Flutter Web + Cloudflare Workersプロジェクト(weather_outfit_app)での初期設定例:
# .takt/config.yaml
project:
name: weather_outfit_app
language: dart
framework: flutter_web
# .takt/workflows/default.yaml
workflows:
default:
steps:
- name: planning
provider: claude
- name: implementation
provider: copilot
- name: testing
provider: copilot
commands:
- flutter test
- name: review
provider: claude
max_iterations: 3
4.2 開発環境の整理
- Ubuntu (WSL): TAKTをローカルにインストール
- Claude Pro: サブスクリプションで定額利用
- GitHub Copilot: CLI経由で実装支援
- 統合: TAKT経由で両方を統一的に操作
4.3 段階的な導入
一度にすべてのタスクをTAKTに移行するのではなく、段階的に導入:
- Phase 1: シンプルなワークフロー(2-3ステップ)で試す
- Phase 2: 実際のプロジェクトで小さな機能追加に適用
- Phase 3: 複雑なワークフロー(分岐、リトライ)を追加
- Phase 4: チーム全体で活用
4.4 継続的な改善
TAKTのワークフロー定義は、プロジェクトの進化に合わせて更新:
- プロンプトの調整: より良い結果を得るために改善
- ステップの追加・削除: 必要に応じてワークフローを変更
- プロバイダーの見直し: 新しいAIプロバイダーの登場に対応
5. まとめ
ツール選定は要件次第
AIオーケストレーションツールの選定は、プロジェクトの要件に応じて行うべきです。必ずしもツールが必要なわけではありません。
ハーネス機能で十分なケース
- 単一Claude Codeセッション内での制御
- 長期セッションでのルール遵守(HOOK/SKILLSで対応)
- コンテキスト管理(CLAUDE.md/Memory)
- 定型タスクのコマンド化(SKILLS)
対応できること:
- イベント駆動での自動喚起(HOOK)
- 標準手順の固定化(SKILLS)
- プロジェクトコンテキストの維持(CLAUDE.md)
対応できないこと:
- 複数AIプロバイダーの使い分け
- マルチステップの自動実行
- ステップ間のコンテキスト引き継ぎ
オーケストレーションツールが必要なケース
- 複数AIプロバイダーの協調動作(Claude + Copilot等)
- マルチステップのワークフロー自動化(計画→実装→テスト→レビュー)
- ステップ単位のリトライ・修正
- 実行履歴の管理
TAKTが向いているケース
TAKTは以下のようなプロジェクトに適しています:
✅ 複数AIプロバイダーを使い分けたい
- Claude(計画・設計)+ Copilot(実装)等
✅ ワークフローを明示的に定義したい
- YAMLで宣言的に記述
- Gitでバージョン管理
✅ 柔軟なリトライ・修正が必要
- 完全自動ではなく、適度な人間の介入
✅ ローカル実行が前提
- クラウド不要、プライバシー保護
段階的な導入を推奨
いきなり複雑なワークフローを作るのではなく、シンプルなものから始めて徐々に拡張していくのがおすすめです。
1. ハーネス機能(CLAUDE.md、SKILLS、HOOK)で開発 - 長期セッションでのコンテキスト維持 - 定型タスクのコマンド化 - イベント駆動の自動喚起 2. 限界を感じたら、オーケストレーションツールを検討 - 複数AI協調が必要になった - マルチステップ自動化が必要になった - ステップ単位のリトライが必要になった 3. TAKTでシンプルなワークフローを試す 4. プロジェクトに合わせてカスタマイズ 5. チーム全体で活用
シリーズ記事
- Claude Code入門 - ビルトイン機能の全体像
- ← 前回Claude Codeハーネス機能詳解:CLAUDE.md・SKILLS・HOOKで開発を制御する
- AIオーケストレーションツールの選び方:TAKT採用までの検討プロセス← 今回