8
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【超入門】ループエンジニアリングとは ― 5つの要素と進め方を初心者向けに整理

8
Last updated at Posted at 2026-06-22

はじめに

「ループ・エンジニアリング」と聞くと、難しそうに身構えるかもしれません。

でも中身は、「やってみる → 確かめる → 直す」を自動で繰り返すだけです。

AIエージェントを使っていると最近よく見かけるこの言葉を、初心者の方向けにゼロから整理するのが本記事です。

専門用語は本文の中と末尾の用語集で説明しますので、前提知識は不要です。

読むと得られるものは、次の3つを想定しています。

  • 「ループ」と「1回ずつのプロンプト」の違いが分かる
  • ループを作る5つの要素と、その役割が分かる
  • 自分の手元で小さく始めるための流れと、つまずきポイントが分かる

対象読者は、Claude Code や Cursor などのAIエージェントを触り始めた方、もしくは「ループという言葉は聞くが中身が曖昧」という方です。

本記事は、ループ・エンジニアリングを論じた複数の記事(末尾の参考文献)を出発点に、筆者が初心者向けに噛み砕いて再構成したものです。
用語の説明や図は、筆者の理解に基づく解釈です。
構成・文章の整理と図の作成には生成AI(Claude)を併用し、内容は筆者が確認しました。

先に結論(この記事の要点)

  • ループとは「プロンプトを与える→出力を見る→完了か判定する→未完なら投げ直す」を自動で繰り返す小さな仕組みです。
  • 1回ずつ手でプロンプトを書く代わりに、その「繰り返し」自体を設計するのがループ・エンジニアリングです。
  • ループは5つの要素(トリガー / アクション / 証明 / メモリ / 停止条件)でできています。
  • いちばん大事で、いちばん抜けやすいのが「証明(どうなったら成功か)」と「停止条件(いつ止めるか)」です。
  • 最初は、繰り返しが多くて成功判定がしやすい作業から、小さく始めるのがおすすめです。

一言でいうと

ループ・エンジニアリングを一言でいうと、「AIに仕事を任せて、合格するか行き詰まるまで自動で回す」ことです。

毎回プロンプトを手で打つのをやめて、その繰り返しを仕組みに任せる、という発想です。

この1行さえ持ち帰れば、あとの説明はすべてその肉付けだと考えてください。

ループとは何か

まず、いちばん大事な区別から始めます。

ふだん私たちは、AIエージェントに「これをやって」と1回ずつ頼みます。

これが「1回ずつのプロンプト(one-shot)」です。

一方の「ループ」は、その頼みごとを自動で繰り返す小さな仕組みです。

具体的には、次の4つを自動で回します。

  • あなたの代わりに、エージェントへプロンプトを与える
  • エージェントが出した結果を読む
  • 完了したかどうかを判定する
  • まだなら、エラーや次の指示を添えて、もう一度プロンプトを与える

身近な例で言い換えます。

一発勝負の指示はこうです。

このページを速くして。

ループにすると、こうなります。

いちばん遅いページを見つけて、1か所だけ改善し、もう一度計測する。速くなったときだけ残す。全ページが目標を満たすか、これ以上よくならなくなるまで繰り返す。

違いは「フィードバックが組み込まれているか」です。

ループは「やってみる→確かめる→直す」を、人間が横に座らなくても回せる形にしたものです。

プロンプトの次に来るもの

ループは、いきなり現れた別物ではありません。

ふだんのプロンプトに、少しずつ部品を足していった先にあります。

①だけが「いつものプロンプト」です。

②で前提を渡し、③で成功の判定を足し、④でそれを繰り返しにすると「ループ」になります。

つまりループは、まったくの新概念ではなく、プロンプトの延長線上にある「次の一歩」です。

なぜループが必要なのか

「毎回手で指示すればいいのでは?」と思うかもしれません。

ループが効くのは、次のような場面です。

  • 1回で終わらず、何度かやり直す前提の作業(バグ修正、テスト追加、ドキュメント更新など)
  • 定期的に繰り返す作業(毎週のレポート、毎晩のログ点検など)
  • 人が見ていない間も進めたい作業

もう1つ、見落としやすい理由があります。

エージェントに渡す指示や設定ファイルは、使っているうちに少しずつ崩れていきます。

ルールが増えすぎたり、昔の都合を引きずったりして、いつのまにか質が落ちます。

この「少しずつズレていく現象」は、英語では「ドリフト(drift)」と呼ばれます。

ループは、毎回きちんと成功を確かめる仕組みを持つので、このズレに気づきやすくなります。

ループを分解する ― 5つの要素

ここが本記事の中心です。

「ループ」という言葉を、いちど分解してみましょう。

多くのループは、次の5つの部品でできています。

たとえるなら、新人に仕事を任せる場面に似ています。

いつ頼むか(トリガー)、何を頼むか(アクション)、できたと判断する基準(証明)、やりとりの記録(メモリ)、いつ切り上げるか(停止条件)。

この5つを決めておくと、横についていなくても任せられます。

初心者の方は、まずこの5つの名前と役割を覚えれば十分です。

この図は「証明を満たさないときに停止へ抜ける」流れを示しています。

うまくいかないときに作業へ戻って繰り返す流れは、後の「進め方」の図で説明します。

トリガー(いつ始まるか)

ループが動き出すきっかけです。

「あなたが頼んだとき」「毎週金曜の朝」のような時刻、「PRにラベルが付いたら」のようなイベントが該当します。

始まる条件を決めておかないと、毎回その場の判断で起動することになり、再利用しにくくなります。

アクション(何をするか)

エージェントが実際に行う作業です。

「要約する」「レビューする」「テストを足す」「修正する」などです。

1回のループで1つの作業に絞ると、結果を確かめやすくなります。

証明(どうなったら成功か)

その作業がうまくいったと、どうやって分かるかです。

英語では proof や verify と呼ばれます。

「テストが全部通った」「目標の速度を満たした」のように、機械でも測れる形にするのがコツです。

「なんとなく良くなった」では、ループは止まりどきを判断できません。

メモリ(学びをどこに残すか)

ループが「何を試して、どうだったか」を保存する場所です。

ファイル、ボード、コミット履歴などが該当します。

AIは実行のたびに前回を忘れますが、ファイルは忘れません。

だから、状態は会話の中ではなくディスク(ファイル)に残します。

停止条件(いつ終わるか)

ループを止める条件です。

「成功したら止まる」「これ以上よくならなければ止まる」「3回失敗したら人に知らせる」などです。

これが弱いと、ループは延々と動き続け、時間と費用を無駄にします。

止まれるループは安心して任せられます。

止まれないループは、付きっきりの世話が必要になります。

ループの進め方(1サイクルの流れ)

5つの要素がそろうと、ループは次の流れで1周します。

ポイントは、1周で変える量を小さくすることです。

小さく変えて、そのつど確かめると、どの変更が効いたかが分かります。

うまくいけば残し、ダメなら元に戻します。

この「残すか戻すか」を毎回はっきりさせるのが、ループを信頼できるものにするコツです。

Pythonで動かす最小のループ例

言葉だけでは分かりにくいので、実際に動く小さなコードで5要素を体験します。

ここでは、AIエージェントの代わりに簡単な関数を使い、「ある値を目標(100)に近づける」ループを作ります。

作業役(worker)と検証役(evaluator)を、わざと別の関数に分けているのがポイントです。

動作確認は Python 3.6 以上(標準ライブラリのみ)で行っています。

loop_demo.py
# loop_demo.py — ループの5要素を最小コードで体験する例
# 実際のAIエージェントの代わりに、簡単な関数を「作業役」「検証役」として使います。
import json

TARGET = 100.0        # 目標(検証役が知っている品質基準)
TOLERANCE = 1.0       # この誤差以下なら成功とみなす(証明のしきい値)
MAX_ITERATIONS = 20   # 繰り返しの上限(停止条件のひとつ)


def worker(value, feedback):
    """作業役: フィードバックを受け取り、値を半分だけ目標へ近づける。"""
    return value + 0.5 * feedback


def evaluator(value):
    """検証役: 作業役とは別に、目標との誤差を測る。"""
    return abs(TARGET - value)


def run_loop(start):
    """トリガー: この関数を呼ぶとループが始まる。"""
    value = start
    error = evaluator(value)
    history = [{"iteration": 0, "value": value, "error": error}]

    for i in range(1, MAX_ITERATIONS + 1):
        feedback = TARGET - value               # 実行結果として返るフィードバック
        candidate = worker(value, feedback)     # アクション: 1回だけ変える
        candidate_error = evaluator(candidate)  # 証明: 良くなったか測る

        if candidate_error < error:             # 良くなったときだけ残す
            value, error = candidate, candidate_error
            kept = True
        else:                                   # 悪化したら戻す
            kept = False

        history.append({"iteration": i, "value": round(value, 4),
                        "error": round(error, 4), "kept": kept})

        if error <= TOLERANCE:                  # 停止条件1: 成功
            print(f"成功: {i}回で誤差 {error:.4f} に到達しました")
            break
    else:
        print(f"停止: 上限 {MAX_ITERATIONS} 回に到達しました(誤差 {error:.4f}")  # 停止条件2: 上限

    with open("loop_history.json", "w", encoding="utf-8") as f:  # メモリ: 学びをファイルに残す
        json.dump(history, f, ensure_ascii=False, indent=2)
    return value, error


if __name__ == "__main__":
    final_value, final_error = run_loop(start=0.0)
    print(f"最終値: {final_value:.4f} / 誤差: {final_error:.4f}")

実行すると、次のように出力されます。

成功: 7回で誤差 0.7812 に到達しました
最終値: 99.2188 / 誤差: 0.7812

値は 0 → 50 → 75 → 87.5 → … と、毎回半分ずつ目標に近づきます。

そして誤差が 1.0 以下になった7回目で、ループは自分で止まります。

なお、同名の loop_history.json があると上書きされるので、試すときは上書きされても困らない場所で動かしてください。

このコードを5つの要素に対応づけると、次のようになります。

要素 コード上の場所
トリガー run_loop() を呼ぶ
アクション worker() で値を1回だけ変える
証明 evaluator() で誤差を測る(作業役と分けた検証役)
メモリ historyloop_history.json に保存
停止条件 誤差が TOLERANCE 以下(成功)、または MAX_ITERATIONS 回(上限)

「良くなったときだけ残す(kept = True)/悪化したら戻す」という判定も入っています。

ここがループの心臓部です。

実際のAIエージェントでは、worker() はLLMやツールの呼び出しに、evaluator() はテスト・評価スクリプト・別エージェント・人のレビューなどに置き換わります。

骨格(実行→検証→残すか戻すか→停止)は、コードでもエージェントでも変わりません。

最小の始め方

最初から完璧なループを目指す必要はありません。

次の手順で、小さく始めるのがおすすめです。

  1. 繰り返す作業を1つ選ぶ: 定期レポート、テスト修正、ドキュメント更新など、何度も発生する作業にします。
  2. 範囲をきつく絞る: 「触るのはこのファイルだけ」のように、対象を限定します。
  3. 成功の証明を決める: 「テストが通る」など、機械でも測れる条件にします。
  4. 停止条件と上限を付ける: 「3回失敗したら人に通知」「20回で止める」など、暴走を止める線を引きます。
  5. 検証役を分ける: 作業した本人とは別の視点で採点させると、見落としが減ります。
  6. 状態をファイルに残す: 進捗や学びを、会話ではなくファイルに書きます。

特に「3. 証明」と「4. 停止条件」を先に決めておくと、暴走と費用の膨張を同時に防げます。

ループにすべきでないとき・つまずきポイント

ループは万能ではありません。

次の場合は、無理にループにしなくて構いません。

  • 1回で終わる作業: やり直しが要らないなら、ループはむだな手間です。
  • ゴールが決まっていない探索: 「何かいい感じにして」は成功条件が無く、止まれません。
  • 成功を自動で確かめにくい作業: 確認が「自分の目だけ」なら完全な自動化には早く、まずは人間のレビューを品質ゲートに組み込むのが安全です。

そしてつまずきは、たいてい単純な原因で起きます。

特に次の3つは、最初にやりがちな失敗です。

やってはいけない3つ(と、その防ぎ方)

  • 成功条件を決めずに回す → 「テストが通る」など、機械で測れる条件を先に決める。
  • 停止条件を付けずに回す → 「○回失敗したら人へ」など、止めどきを必ず付ける。
  • 学びをファイルに残さない → 進捗や結果をファイルに書き、次回そこから始める。

裏を返すと、この3つを避けるだけで、ループはぐっと安定します。

用語集(よく出る言葉の説明)

本文に出てきた言葉を、まとめて説明します。

用語 読み・英語 意味
プロンプト prompt AIへの指示文。「これをやって」と伝える文章です。
AIエージェント agent 指示を受けて、調べる・書く・実行するなどを自分で進めるAIです。
ループ loop 「実行→確認→やり直し」を自動で繰り返す小さな仕組みです。
one-shot ワンショット 1回きりの指示。繰り返しや学習が無い使い方です。
トリガー trigger ループが始まるきっかけ(時刻・イベントなど)です。
証明 proof / verify 作業が成功したと判定する根拠・検査のことです。
停止条件 stop condition ループを止める条件。成功・行き詰まり・上限超過などです。
メモリ memory 学びや進捗を残す場所。多くはファイルに書きます。
アーティファクト artifact 作業を形づくる再利用可能な部品。指示書・チェックリスト・採点基準などです。
ルーブリック rubric 採点基準表。「何が良くて何がダメか」を定義したものです。
検証役 evaluator 成果物を採点する役割。特に重要な成果物では、作業した本人と分けるのが安全です。
eval 評価 アーティファクトやループの良し悪しを、例を使って測ることです。
ドリフト drift 指示や設定が、使ううちに少しずつズレて質が落ちる現象です。
誤green テストが緑(合格)でも、実際は壊れている状態を見逃すことです。
オーケストレーション orchestration 1人が多数のエージェントに仕事を割り振り、束ねることです。

次の一歩

基礎がつかめたら、次の順で進むと迷いません。

  1. まず1つ動かす: 本記事のPythonコード例を、手元で実行してみます。
  2. 実例を使う: 公開ループ集「Loop Library」から近いループを探し、コピーして使います。
  3. 自分の業務へ: いつもの繰り返し作業を1つ選び、5要素に当てはめて小さくループ化します。

エンジニア向け(コードを書くシステムを設計する話)や、プロダクトマネージャー向け(プロダクト判断を反復させる話)の記事は、末尾の参考文献に挙げています。

どの記事も、本記事の5要素(トリガー / アクション / 証明 / メモリ / 停止条件)がそのまま土台になります。

まとめ

ループ・エンジニアリングは、「1回ずつプロンプトを書く」から「自動で回る仕組みを設計する」への切り替えです。

ループは5つの要素(トリガー / アクション / 証明 / メモリ / 停止条件)でできており、特に「証明(成功の判定)」と「停止条件(止めどき)」が要になります。

ここで大事なのは、AIに丸ごと任せる人で終わらず、「任せ方を設計する人」になることです。

ボタンを押す側ではなく、止めどきと合格基準を決める側に回る、という意識の変化が中心にあります。

なお、本記事のPythonコード例も、実際に動かして出力を確認しています。

難しく考えず、まずは身近な繰り返し作業を1つ選び、成功の条件と止めどきを決めるところから始めてみてください。

参考文献

本記事の構成・文章の整理と図の作成には生成AI(Claude)を併用しました。用語の説明・初心者向けの噛み砕きは筆者の解釈で、内容は筆者が確認しています。

8
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?