Claude Codeに「繰り返し」をやらせる3つの方法
AIコーディングエージェントを触りはじめた人が、だいたい最初にぶつかる壁があります。
一回はうまくやってくれる。でも、同じことを100回やらせようとすると急に面倒になる
チケットを1件作るのは一瞬。でも80件作ろうとすると、確認ダイアログが80回出てきて心が折れる。デプロイの様子を見ていてほしいだけなのに、5分おきに自分で「どう?」と聞きにいくことになる。
Claude Codeには、この「繰り返し」を扱う手段が大きく3つあります。どれを選ぶかで、作業が10分で終わるか、1時間張り付くことになるかが変わります。
まず結論:3つの使い分け
| やりたいこと | 使うもの | ざっくり |
|---|---|---|
| 決まった件数を一気に処理したい | プロンプト内ループ(スクリプト化) | 1回の実行で全部終わらせる |
| 状況が変わるのを待ちながら繰り返したい | ループ実行 | セッションを開いたまま、一定間隔で再実行 |
| 毎朝9時など、決まった時刻に動かしたい | スケジュール実行 | セッションを閉じても動く |
方法1:プロンプト内ループ ―「1件ずつ」と言わないだけで劇的に速くなる
一番地味で、一番効果が大きいのがこれです。エージェントに大量の処理を頼むとき、指示の書き方ひとつで挙動がまったく変わります。
遅い頼み方
このリストの80件を、チケットとして登録して
エージェントは素直にAPIを1件ずつ叩きはじめます。1件ごとに実行の確認が挟まり、80回「許可しますか?」が出る。しかも途中で失敗すると、どこまで進んだか分からなくなります。
速い頼み方
このリストの80件を、1本のスクリプトにまとめてループで登録して。件数と成功/失敗を最後にまとめて報告して
こう頼むと、エージェントはスクリプトを1つ書いて、1回実行して終わります。確認は1回。ログも1箇所にまとまる。失敗した件だけ後から拾い直せる。
ポイントは、ループをエージェントの「思考」ではなく「コード」に置くこと。エージェントが1件ずつ考えながら進むと、件数に比例して時間もトークンもリスクも増えます。ループをスクリプトに落とし込めば、100件でも1000件でも実行時間は変わりません。
同じ発想で、こういう指示も効きます。
- 同種の操作は1つのコマンドにまとめて、承認が一度で済むようにして
- 次に必要になりそうな処理も先読みして、同じ実行にまとめて
日常的にAIエージェントを使う人ほど、この一文をテンプレートとして持っておく価値があります。
方法2:ループ実行 ―「様子を見ながら繰り返す」ためのループ
件数が決まっていない、あるいは外の状況が変わるのを待つタイプの仕事には、スクリプト化は向きません。CIの結果待ち、デプロイの監視、外部サービスの反映待ち。こういうものは「終わるまで、ときどき見にいく」しかない。そのための仕組みが /loop です。
間隔を指定する使い方
/loop 5m /check-deploy
このように書くと、5分おきに指定したコマンド(またはプロンプト)が繰り返し実行されます。スラッシュコマンドでも、普通の日本語の指示でも構いません。
/loop 10m テスト通ったか確認して、落ちてたら原因だけ教えて
間隔を指定しない使い方(セルフペース)
/loop CIの結果を見て、通ったらマージまで進めて
間隔を省くと、次にいつ見にくるかをエージェント自身が決めるモードになります。「このCIは8分くらいかかるから、次は8分後に見よう」といった判断を毎回します。
このとき指定できる待ち時間には下限と上限があり、60秒〜3600秒(1分〜1時間)の範囲に収まります。つまり最短でも1分に1回、最長でも1時間に1回は必ず様子を見にくる、という設計です。
実務的には、こちらのほうが使い勝手がいい場面が多い。固定間隔だと「5分おきに見にいったが、実際は40分かかる処理だった」という無駄が出るからです。
止め方
ループは放っておくと回り続けます。止め方は2つ。①実行を中断する、②終了条件を最初の指示に書いておく。おすすめは断然2つめです。
/loop デプロイが完了するまで確認して。完了したら結果を報告してループを終了して
「◯◯になったら終わり」を書いておけば、条件を満たした時点でエージェント側からループを畳んでくれます。終了条件のないループは書かない——これはプログラミングの基本と同じで、AIエージェントでもまったく同じことが言えます。
方法3:スケジュール実行 ― セッションを閉じても動かす
ループは「セッションを開いている間」のループです。パソコンを閉じたら止まります。「毎朝9時にニュースを集めてSlackに投げる」「毎週月曜に先週の数字をまとめる」のような定時実行は、スケジュール機能の担当です。
ここには注意点があります。実行環境によって、アプリが起動していないと発火しないタイプと、クラウド側で動くので端末が落ちていても実行されるタイプがあります。
前者の場合、たとえば朝8時に予定を組んでも、その時刻にPCが落ちていれば実行されません。「毎朝設定したのに動いていない」というトラブルの多くは、これが原因です。私たち自身、朝8時に組んだルーティンが何週間も静かに死んでいて、13時に移しただけで直ったという経験をしています。
定時実行を仕込むときは、次の3点を確認してください。
- その時刻に、実行環境は本当に生きているか
- 途中で人間の確認を求める処理が挟まっていないか(挟まると、そこで止まって朝を迎えます)
- 動いたのか動かなかったのかが、後から分かるようになっているか(通知やログ)
このあたりは書くことが多いので、ルーティンの設計と運用については別記事にまとめました。定時実行をやるつもりなら、そちらを先に読んでください。
事故らせないための4原則
ループは強力なぶん、放っておくと静かに壊れます。実際に運用してきた中で効いた原則を4つ。
- 1. 終了条件を必ず書く:「回数」でも「状態」でもいい。指示文に「◯◯になったら終了」を入れる。入れ忘れたループは、忘れた頃にまだ回っています。
- 2. 不可逆な操作はループに入れない:公開・送信・購入・削除。この4つはループの外に出して、人間が最後に一度だけ押す。ループの中に「投稿する」が入っていると、事故は1回では済みません。
- 3. 「何も起きなかった」を記録する:繰り返し処理では、変化がない回のほうが圧倒的に多い。何も起きなかった回も「変化なし」として扱えば、ログが「変化なし・変化なし・検知」と読めるようになります。ここが曖昧だと、動いていないのか、動いた結果何もなかったのかが判別できません。
- 4. 打ち切ったものは必ず報告させる:「上位10件だけ処理」といった省略をエージェントが勝手に入れると、全部やった顔をした部分的な結果が返ってきます。「省略した分があれば必ず明示して」と指示に入れておくだけで、この手の事故はかなり減ります。
まとめ ― ループは「AIを働かせ続ける技術」ではない
繰り返しの自動化というと、AIを24時間働かせるイメージを持たれがちですが、実際の効き目はそこではありません。効くのは、人間が「待つ」「見張る」「同じことを何度も許可する」時間が消えることです。
- 件数が決まっているなら:スクリプト化して1回で終わらせる
- 状況待ちなら:ループ実行(終了条件つき)
- 定時なら:スケジュール実行(実行環境が生きている時刻に)
この3つを使い分けられるようになると、AIエージェントは「賢い相談相手」から「実際に手が減る道具」に変わります。
まずは一番地味な方法1、「1件ずつやらないで、まとめてループで処理して」の一文から試してみてください。効果が一番早く体感できるはずです。