Agentive
AIエージェント活用

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の差分ファイル群レビューコメントJSON3-5
ドキュメント翻訳MDファイル群翻訳済みMDファイル5-10
テストケース生成ソースコード群テストファイル群3-5
データクレンジングCSVチャンク群整形済みCSV5-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エージェントを実際に使い倒す個人開発者。サイト制作の自動化を実践しながら、その知見を発信しています。