ラルフ・ウィグム テクニックの導入: ステップバイステップチュートリアル

ラルフ・ウィグム テクニックの導入: ステップバイステップチュートリアル

ラルフ・ウィグム テクニックは Geoff Huntley によって開発されたもので、大規模言語モデルを完全に自律的なソフトウェア開発者へ変換します。行ごとにコードを書くのではなく、LLM に明確なプロンプト、仕様ベース、そして作業を自動的にコミットしプッシュする外部ループを渡すだけです。以下は、任意の GitHub リポジトリに適用できる完全なワークフローであり、特に機能を速く、人的ミスを減らして配信したいオープンソースプロジェクトに最適です。


1. ラルフ・ウィグムとは何か?

  • 目標: ソフトウェア開発コストをファストフード店の従業員の給与未満に削減する。
  • 核となるアイデア: 計画構築 を交互に行う「ループドプロンプト」。各ターンでは既存コードを読み、仕様を参照し、次に取り組む 箇条書きタスク を決定し実装、テスト、コミットします。
  • 機能する理由: ループは LLM の高レベルタスク実行(Opus や Sonnet)と、ファイル操作やテスト実行に特化した軽量サブエージェントを組み合わせます。テストからのバックプレッシャーにより、無効な変更のみがコミットされるようになります。

2. プロジェクト構成

/project-root/
├── loop.sh                # Bash ループで Claude を実行
├── PROMPT_build.md        # 構築モードのプロンプト
├── PROMPT_plan.md         # 計画モードのプロンプト
├── AGENTS.md              # 運用ガイド(build・test・lint)
├── IMPLEMENTATION_PLAN.md# 優先度順のタスクリスト(Ralph が生成)
├── specs/                 # JTBD ごとの1ファイル(要件)
└── src/                   # 変更対象のソースコード

ヒント: AGENTS.md は約60行で短く保ちます。ここには Ralph が作業を検証するために必要なコマンドだけを記述すべきです。


3. 三段階のワークフロー

フェーズ 発生すること 使用するタイミング
フェーズ 1 – 要件定義 ヒューマン + LLM が Jobs‑to‑Be‑Done(JTBD)を特定し、各 Topics of Concern に分割。各トピックに specs/*.md ファイルが作成される。 プロジェクト開始時や新機能やリファクタリングが導入された場合。
フェーズ 2 – 計画 Ralph が specs/* と現コードを読み込み比較し、IMPLEMENTATION_PLAN.md を作成/更新。コードは触れない。 計画が存在しない、あるいは既存の計画が古い場合。
フェーズ 3 – 構築 Ralph が計画の中で最優先タスクを選択し、実装、テスト実行、コミットし、計画ファイルを更新。 計画が完了するまで繰り返す。

ループの仕組み

  1. 外部ループ (loop.sh) がプロンプトファイルを Claude に送信。
  2. プロンプトは Claude に PROMPT.mdAGENTS.mdspecs/*src/*study させる。
  3. モード(計画/構築)に応じて Ralph に指示:
  4. 計画: ギャップ分析と箇条書き計画を生成。
  5. 構築: 次のタスクを選択し、実装・テスト・コミット。
  6. LLM がタスク完了したら外部ループが新しいコンテキストで再開。

ディスク上の IMPLEMENTATION_PLAN.md だけを共有状態としているため、複雑なオーケストレーションは不要です。


4. プロンプトテンプレート

4.1 PROMPT_plan.md

0a. Study `specs/*` with up to 250 parallel Sonnet subagents.
0b. Study @IMPLEMENTATION_PLAN.md (if present).
0c. Study `src/lib/*` with up to 250 parallel Sonnet subagents.

1. Do a gap analysis between specs and code.
   Use an Opus subagent to prioritize tasks and create/update @IMPLEMENTATION_PLAN.md.
   **Do NOT implement anything**; only plan.

4.2 PROMPT_build.md

0a. Study `specs/*` (up to 500 Sonnet subagents).
0b. Study @IMPLEMENTATION_PLAN.md.

1. Choose the most important unfinished task from the plan.
2. Search the code base to confirm it is missing.
3. Implement the task, commit, and push.
4. Run all tests defined in AGENTS.md as back‑pressure.
5. Update @IMPLEMENTATION_PLAN.md to mark the task complete.

注意: PROMPT_build.md99999 ガードレールは、情報豊かなコミットメッセージやタグ更新といったベストプラクティスを強制します。


5. Bash ループ (loop.sh)

#!/bin/bash
# 使い方の例:
#   ./loop.sh          # 構築モード、無制限の反復
#   ./loop.sh 20       # 構築モード、20タスク後に停止
#   ./loop.sh plan     # 完全計画モード、無制限
#   ./loop.sh plan 5   # 計画モード、最大5反復

MODE=${1:-build}
PROMPT_FILE=()
MAX_ITER=${2:-0}

if [[ "$MODE" == "plan" ]]; then
  PROMPT_FILE="PROMPT_plan.md"
elif [[ "$MODE" =~ ^[0-9]+$ ]]; then
  PROMPT_FILE="PROMPT_build.md"
  MAX_ITER=$MODE
else
  PROMPT_FILE="PROMPT_build.md"
fi

ITERATION=0
while true; do
  [[ $MAX_ITER -gt 0 && $ITERATION -ge $MAX_ITER ]] && exit 0
  cat "$PROMPT_FILE" | claude -p \
    --dangerously-skip-permissions \
    --output-format=stream-json \
    --model opus \
    --verbose
  git push
  ITERATION=$((ITERATION+1))
  echo "--- Loop $ITERATION 完了 ---"
done

何をするか

  • ヘッドレス Claude セッションを開始。
  • ツール呼び出しを自動承認(--dangerously-skip-permissions)。
  • JSON ストリームで簡易監視。
  • ループごとに Push しているので、git reset --hard でロールバック可能。

6. バックプレッシャーとテスト

AGENTS.md にはテスト、lint、型チェックの正確なコマンドが列挙されています。例:

## Validation
- Run tests: `npm test`
- Lint: `npm run lint`
- Type‑check: `npm run tsc --noEmit`

Ralph がタスクを実装するとこれらを自動的に実行します。何か失敗すればループが再開され、構築フェーズに戻ります。これにより、すべてのコミットがプロダクション対応になるよう保証します。


7. 拡張とカスタマイズ

plan‑work モード – フォーカスしたスプリントが必要な場合、plan-work "<description>" で新ブランチにスコープされた IMPLEMENTATION_PLAN.md を作成できます。 受け入れ駆動型バックプレッシャー – 将来のバージョンでは、各計画タスクに仕様の受け入れ基準に基づくテストを必須にできます。 非決定性バックプレッシャー – llm-review フィクスチャを使用して、LLM がトーン、ビジュアル階層、ブランド一貫性を判断させることも可能です。

プロンプトを調整・ガードレールを追加してみてください。ただし、計画と構築を分離することを忘れないでください。Ralph は「次に何をするか」を決定することに特化しており、タスク集合の「どれを選ぶか」を把握するのは別の役割です。


8. 全体像をまとめてみる

  1. リポジトリをフォークし、クローンします。
  2. src/ にプロジェクトファイルを追加し、各 JTBD トピックごとに specs/*.md を作成。
  3. ./loop.sh plan を実行して初期計画を生成。
  4. ビルドを開始: ./loop.sh
  5. ログを観察し、計画が空になったらプロジェクトは構築完了。
  6. PR を開き、マージし、次の機能で繰り返します。

このワークフローは、LLM を developer‑assistant として活用し、ループでタスクを処理、実行時にテストし、クリーンなコードをコミットするという、透明性とバージョン管理を保ちながらの自律的開発を実現します。


9. 重要なポイント

  • ループが心臓部: 1 つのファイル (IMPLEMENTATION_PLAN.md) が全てをつなげます。
  • 計画と構築を分ける: 同じプロンプトインフラを共有しますが、行動と出力は異なります。
  • バックプレッシャーは必須: テスト、lint、型チェックで品質を保証。
  • スケール可能: 大規模機能ではワークスコープ計画で細分化、または小規模プロジェクトなら全体を 1 つの計画で把握。
  • LLM はプロンプトの質に左右される: プロンプトは簡潔にし、study を用い、ハイレベルな指示でガード。

このガイドに沿えば、どんなプロジェクトでもラルフ・ウィグム テクニックを導入し、AI をコストに優れた自律開発者として活用できます。

この記事を共有