AIエージェントのバッチ処理 — 大量タスクの効率的実行
約5分で読めます
バッチ処理
Fan-outパターンで大量タスクを並列実行する。1件ずつ処理していたら終わらない作業も、並列化すれば数十倍速くなる。
Fan-outパターンとは
1つの入力リストを複数のワーカーに分配し、各ワーカーが独立して処理するパターン。AIエージェントでは claude -p をループで回すことで実現できる。
基本的なbashスクリプト例
#!/bin/bash
MAX_PARALLEL=5
TASK_DIR="./tasks"
OUTPUT_DIR="./results"
mkdir -p "$OUTPUT_DIR"
process_file() {
local file="$1"
local name=$(basename "$file" .txt)
claude -p "ファイルを分析しJSON要約せよ: $(cat $file)" \
> "$OUTPUT_DIR/${name}.json" 2>/dev/null
echo "完了: $file"
}
count=0
for file in "$TASK_DIR"/*.txt; do
process_file "$file" &
count=$((count + 1))
if [ "$count" -ge "$MAX_PARALLEL" ]; then
wait -n
count=$((count - 1))
fi
done
wait
echo "全タスク完了"
並列実行の注意点
- APIレート制限 — Claude APIには分あたりのリクエスト上限がある。MAX_PARALLELを5程度に抑えるのが安全
- メモリ消費 — 並列プロセスが増えるとメモリを圧迫する。ファイルサイズが大きい場合は並列数を減らす
- エラーハンドリング — 1件の失敗が全体を止めないように、個別のエラーログを出力する
- 冪等性の確保 — 途中で停止しても再実行可能な設計にする。出力ファイルの存在チェックでスキップを入れる
実用的なユースケース
| ユースケース | 入力 | 出力 | 並列数目安 |
|---|---|---|---|
| コードレビュー一括 | PRの差分ファイル群 | レビューコメントJSON | 3-5 |
| ドキュメント翻訳 | MDファイル群 | 翻訳済みMDファイル | 5-10 |
| テストケース生成 | ソースコード群 | テストファイル群 | 3-5 |
| データクレンジング | CSVチャンク群 | 整形済みCSV | 5-10 |
進捗管理の追加
大量処理では進捗表示が重要だ。完了数をカウントして表示する。
total=$(ls "$TASK_DIR"/*.txt 2>/dev/null | wc -l)
done_count=$(ls "$OUTPUT_DIR"/*.json 2>/dev/null | wc -l)
echo "処理完了: $done_count / $total"
まとめ
バッチ処理の鍵は「適切な並列数」「エラー隔離」「冪等性」の3つ。これらを守れば、手動で半日かかる作業を数分で完了できる。
関連記事
A
Agentive 編集部
AIエージェントを実際に使い倒す個人開発者。サイト制作の自動化を実践しながら、その知見を発信しています。