OpenClaw入門(応用編)——Ralph Loopで自律的なWeb開発を実現する
OpenClaw 3部作の最終回。Ralph Loopを使い、要件定義を渡すだけでNext.jsプロジェクトの計画→実装→テストを自律的に繰り返す「自動開発」を実現します。バッチ戦略やClaude Codeとの使い分けも解説。

はじめに
導入編でOpenClawの全体像を理解し、初心者編でセットアップとGitHub連携を体験しました。
最終回の応用編では、OpenClawの最も強力な活用法——Ralph Loopによる自律的な自動開発に挑戦します。
「要件定義を渡すだけで、AIが計画を立て、コードを書き、テストを実行し、完了するまで繰り返す」——そんな開発スタイルが、OpenClawとRalph Loopの組み合わせで実現します。
本記事はOpenClaw 3部作の応用編です。
| 記事 | 内容 |
|---|---|
| 導入編 | OpenClawとは何か、歴史、アーキテクチャ、他ツール比較 |
| 初心者編 | セットアップ、GitHub連携、基本操作のハンズオン |
| 応用編(本記事) | Ralph Loopによる自律開発、大規模プロジェクト戦略 |
この記事を読み終わると、以下ができるようになります:
- Ralph Loopの仕組み(PLANNINGモードとBUILDINGモード)を理解する
- Next.jsプロジェクトでRalph Loopを実行し、自律的なコード生成を体験する
- 大規模プロジェクトでのバッチ戦略を設計できる
- OpenClawとClaude Codeの最適な使い分けを判断できる
Ralph Loopとは何か
概要
Ralph Loopは、AIエージェントにPRD(要件定義書)を渡すと、計画→実装→テストを自律的に繰り返すループ手法です。
名前の由来はThe Simpsonsのキャラクター Ralph Wiggumで、「失敗しても何度でも繰り返し挑戦する」という哲学を体現しています。
もともとはClaude Code向けのスクリプトとして広まりましたが、OpenClawのスキルとして統合されたことで、メッセージングプラットフォーム経由で手軽に実行できるようになりました。
2つのフェーズ
| フェーズ | 内容 | 出力 |
|---|---|---|
| PLANNING | 要件を分析し、技術仕様と実装計画を生成 | SPECS/ディレクトリ、IMPLEMENTATION_PLAN.md |
| BUILDING | 計画に基づいてコードを実装・テスト・コミット | 実装コード、テストコード、コミット履歴 |
重要なのは、PLANNINGとBUILDINGの間にユーザーの確認ステップがあること。 計画を承認してからBUILDINGに進むため、想定外の実装を防げます。
ハンズオン 1: Ralph Loopの準備
Step 1: Ralph Loopスキルの有効化
OpenClawのダッシュボード(http://127.0.0.1:18789/)のスキル管理画面から「ralph-loop」を検索して有効化します。
Step 2: プロジェクトの作成
架空のNext.jsプロジェクト「TaskFlow」(タスク管理アプリ)を題材に進めます。
npx create-next-app@latest taskflow --typescript --tailwind --app --src-dir
cd taskflow
Step 3: PROMPT.mdの作成
Ralph Loopの起点となる要件定義ファイルを作成します。これがOpenClawへの「発注書」になります。
# TaskFlow - タスク管理機能
## 概要
Firestoreをバックエンドに使用したタスク管理アプリケーション。
ユーザーがタスクを作成・編集・削除・完了状態の切り替えができる。
## 技術スタック
- Next.js 15(App Router)
- TypeScript(strictモード)
- Tailwind CSS
- Firebase Firestore
## 機能要件
### タスク一覧表示
- Firestoreからタスクを取得して一覧表示する
- タスクには「タイトル」「説明」「ステータス」「作成日」がある
- ステータスは「未着手」「進行中」「完了」の3種類
### タスク作成
- モーダルダイアログでタスクを新規作成できる
- タイトルは必須、説明は任意
### タスク更新
- タスクのステータスをクリックで切り替えられる
- インライン編集でタイトルと説明を更新できる
### タスク削除
- 確認ダイアログの後にタスクを削除できる
## 非機能要件
- Server Componentsを活用し、初期表示を高速化する
- 楽観的更新(Optimistic Updates)でUXを向上させる
- TypeScript strictモード準拠
- any型の使用禁止
Step 4: AGENTS.mdの作成
AIエージェントに対するコンテキスト指示を設定します。これにより、モリソンのコーディング規約に沿ったコードが生成されます。
# AGENTS.md
## コーディング規約
- TypeScript strictモードを使用する
- any型の使用を禁止する
- コンポーネントはFC型で定義する
- Tailwind CSSでスタイリングする
- 不要なコメントを追加しない
## ディレクトリ構成
- src/app/ - ページ・レイアウト
- src/components/ - UIコンポーネント
- src/lib/ - ユーティリティ・Firebase設定
- src/types/ - 型定義
## Firestoreの規約
- コレクション名はキャメルケース
- ドキュメントIDは自動生成
- タイムスタンプはserverTimestamp()を使用
ハンズオン 2: PLANNINGフェーズの実行
Step 1: PLANNINGモードの開始
OpenClawのチャネル(Telegram等)から以下のように指示します。
~/projects/taskflow ディレクトリでRalph Loopを実行して。
まずPLANNINGモードで仕様書と実装計画を生成して。
PROMPT.md と AGENTS.md を参照してください。
Step 2: 生成された仕様書の確認
OpenClawはPROMPT.mdを分析し、以下のファイルを自動生成します。
taskflow/
├── PROMPT.md
├── AGENTS.md
├── SPECS/
│ ├── task-list.md # タスク一覧の詳細仕様
│ ├── task-create.md # タスク作成の詳細仕様
│ ├── task-update.md # タスク更新の詳細仕様
│ └── task-delete.md # タスク削除の詳細仕様
└── IMPLEMENTATION_PLAN.md # 実装計画
Step 3: 実装計画の確認
IMPLEMENTATION_PLAN.md には、実装順序と依存関係が記載されます。
# 実装計画
## Phase 1: 基盤(依存なし)
- [ ] 型定義の作成(src/types/task.ts)
- [ ] Firebase設定の作成(src/lib/firebase.ts)
- [ ] Firestoreユーティリティの作成(src/lib/tasks.ts)
## Phase 2: UIコンポーネント(Phase 1に依存)
- [ ] TaskCard コンポーネント
- [ ] TaskList コンポーネント
- [ ] TaskCreateModal コンポーネント
- [ ] TaskDeleteDialog コンポーネント
## Phase 3: ページ統合(Phase 2に依存)
- [ ] メインページへの統合(src/app/page.tsx)
- [ ] 楽観的更新の実装
- [ ] Server Componentsの活用
ここでユーザーが計画を確認し、承認してからBUILDINGに進みます。 問題があれば修正を依頼できます。
Phase 2のTaskCardに、ステータスバッジの色分け機能も追加して。
未着手=グレー、進行中=ブルー、完了=グリーンで。
ハンズオン 3: BUILDINGフェーズの実行
Step 1: BUILDINGモードの開始
計画を承認したら、BUILDINGモードに進みます。
PLANNINGの結果を確認しました。BUILDINGモードに進んでください。
IMPLEMENTATION_PLAN.md に従って実装してください。
Step 2: 自律的な実装ループ
Ralph Loopが以下を自動的に繰り返します。
Step 3: 進捗のモニタリング
OpenClawのダッシュボード(http://127.0.0.1:18789/)で進捗をリアルタイムに確認できます。
また、チャネルに進捗報告を送るよう指示することもできます。
各フェーズが完了するたびにこのチャットに報告して
すると、OpenClawは以下のような報告を送ってきます。
✅ Phase 1 完了
- src/types/task.ts — 型定義(Task, TaskStatus, CreateTaskInput)
- src/lib/firebase.ts — Firebase初期化
- src/lib/tasks.ts — Firestore CRUD関数
Phase 2 を開始します...
Step 4: 生成されたコードの確認
BUILDINGフェーズが完了すると、以下のようなコードが生成されます。
型定義の例(src/types/task.ts):
import type { Timestamp } from "firebase/firestore";
export type TaskStatus = "todo" | "in_progress" | "done";
export interface Task {
id: string;
title: string;
description: string;
status: TaskStatus;
createdAt: Timestamp;
updatedAt: Timestamp;
}
export interface CreateTaskInput {
title: string;
description?: string;
}
コンポーネントの例(src/components/TaskCard.tsx):
import type { FC } from "react";
import type { Task, TaskStatus } from "@/types/task";
interface TaskCardProps {
task: Task;
onStatusChange: (id: string, status: TaskStatus) => void;
onDelete: (id: string) => void;
}
const statusConfig: Record<TaskStatus, { label: string; className: string }> = {
todo: { label: "未着手", className: "bg-gray-100 text-gray-600" },
in_progress: { label: "進行中", className: "bg-blue-100 text-blue-600" },
done: { label: "完了", className: "bg-green-100 text-green-600" },
};
export const TaskCard: FC<TaskCardProps> = ({ task, onStatusChange, onDelete }) => {
const config = statusConfig[task.status];
const nextStatus: Record<TaskStatus, TaskStatus> = {
todo: "in_progress",
in_progress: "done",
done: "todo",
};
return (
<div className="rounded-lg border bg-white p-4 shadow-sm">
<div className="flex items-start justify-between">
<div className="flex-1">
<h3 className="font-medium text-gray-900">{task.title}</h3>
{task.description && (
<p className="mt-1 text-sm text-gray-500">{task.description}</p>
)}
</div>
<button
onClick={() => onDelete(task.id)}
className="ml-2 text-gray-400 hover:text-red-500"
>
<span className="sr-only">削除</span>
×
</button>
</div>
<div className="mt-3">
<button
onClick={() => onStatusChange(task.id, nextStatus[task.status])}
className={`rounded-full px-3 py-1 text-xs font-medium ${config.className}`}
>
{config.label}
</button>
</div>
</div>
);
};
このように、AGENTS.mdのコーディング規約に沿ったコードが自動生成されます。
全体戦略: 大規模プロジェクトへの適用
バッチ戦略: 依存関係を考慮した並列処理
20〜30のタスクがある実務レベルのプロジェクトでは、すべてを直列に処理すると時間がかかります。PROMPT.mdにバッチ戦略を明記することで、OpenClawが効率的な順序で実装を進めます。
PROMPT.mdに以下のように記載します。
## 実装順序(バッチ戦略)
### バッチ1: 基盤(最優先・直列実行)
型定義、Firebase設定、共通UIコンポーネントを先に実装する。
これらは他のすべての機能の前提となる。
### バッチ2: コア機能(バッチ1完了後・並列実行可能)
タスクのCRUD操作を実装する。
各機能は独立しているため、並列実装が可能。
### バッチ3: 応用機能(バッチ2完了後)
検索、ドラッグ&ドロップ、通知などの追加機能。
### バッチ4: 品質(最後に実行)
E2Eテスト、パフォーマンス最適化。
スケール感: 実務での数字
実際にRalph Loopで開発した場合の時間とコストの目安です(Claude Sonnet 4.5利用時)。
| プロジェクト規模 | タスク数 | 所要時間(目安) | APIコスト目安 |
|---|---|---|---|
| 小規模(CRUD+α) | 8〜12 | 1〜2時間 | $4〜8 |
| 中規模(複数画面) | 15〜25 | 3〜5時間 | $15〜30 |
| 大規模(フル機能アプリ) | 30〜50 | 1〜2日 | $50〜100 |
注意: これはコード生成の時間とAPIコストの目安です。生成されたコードのレビュー、動作確認、手動調整の時間は別途必要です。コストはBatch API(50%オフ)やプロンプトキャッシュ(最大90%オフ)を活用することで大幅に削減できます。APIの料金詳細は初心者編を参照してください。
OpenClaw × Claude Code: 最適な使い分け
OpenClawとClaude Codeは競合ではなく、補完関係にあります。
| シーン | 推奨ツール | 理由 |
|---|---|---|
| 新機能の自律的な開発 | OpenClaw + Ralph Loop | バックグラウンドで自律実行、完了まで任せられる |
| 対話的なデバッグ | Claude Code | 「ここにブレークポイント置いて」のような即座の対話 |
| PRレビュー | OpenClaw | チャネル経由でいつでも依頼、チームで共有しやすい |
| リファクタリング | Claude Code | コードベースの文脈を深く理解した上での判断が必要 |
| 定期タスクの自動化 | OpenClaw | スケジュール実行・Webhook連携が可能 |
| アーキテクチャ設計 | Claude Code | 対話的な議論を繰り返す作業に向いている |
併用の具体例
Tips・注意点
Ralph Loopを成功させるコツ
| コツ | 説明 |
|---|---|
| PROMPT.mdを具体的に書く | 曖昧な要件は曖昧な実装につながる |
| AGENTS.mdでルールを明示 | コーディング規約、ディレクトリ構成、禁止事項を明記 |
| バッチを小さくする | 1バッチ3〜5タスクが最適、大きすぎるとエラーが増加 |
| PLANNINGの出力を確認 | BUILDINGに入る前に計画を必ずレビュー |
| テストを要件に含める | テストコードの生成を要件に明記するとコード品質が向上 |
セキュリティの再確認
応用編で扱うRalph Loopは、OpenClawが自律的にコードを書き換えるため、セキュリティリスクが高まります。
| リスク | 対策 |
|---|---|
| 意図しないファイル変更 | Git管理下で作業し、差分を確認 |
| 機密情報の混入 | .envファイルを.gitignoreに含める |
| 本番環境への影響 | 開発環境のみで実行 |
| APIキーの大量消費 | 使用量アラートを設定 |
Ralph Loopは必ず新規ブランチで実行してください。 mainブランチで直接実行すると、意図しない変更が本番に影響する可能性があります。
OpenClawが向いていないケース
- 機密性の高いコードベース — LLMにコードを送信することに変わりはない
- 既存の大規模コードベースのリファクタリング — コンテキストの理解にはClaude Codeが向いている
- 本番環境への直接操作 — 自律型エージェントに本番操作をさせるのは危険
まとめ
OpenClaw 3部作を通じて、導入から応用までを一通り体験しました。
| 記事 | 学んだこと |
|---|---|
| 導入編 | OpenClawの全体像、歴史、他ツールとの違い |
| 初心者編 | セットアップ、GitHub連携、基本操作 |
| 応用編(本記事) | Ralph Loopによる自律開発、バッチ戦略、Claude Code併用 |
次のアクションとしておすすめ:
- まず導入編・初心者編でセットアップを済ませる — まだの方は導入編から
- 小さなサイドプロジェクトでRalph Loopを試す — 既存プロジェクトではなく、新規プロジェクトが安全
- PROMPT.mdの書き方を磨く — Ralph Loopの品質は要件定義の質に比例する
- Claude Codeと併用する — 設計はClaude Code、実装はOpenClaw、レビューはClaude Codeが黄金パターン
開発者が寝ている間にも、OpenClawがIssueを処理し、コードを書き、PRを作成している——そんな開発スタイルがすでに始まっています。
参考リンク:
関連記事: