技術
約4分で読めます
【Claude Code】テスト中は寝てたいのでAIにぶん投げる方法を考えてみた
E2Eテストを寝てる間に自動で回して、朝起きたら結果だけ見たい。そんな夢を叶えるのが Claude Code の公式プラグイン「Ralph Wiggum」だ。
Ralph Wiggum は、Claude Code に反復的な自動ループ機能を追加するプラグイン。完了条件が満たされるまで同じプロンプトを繰り返し実行し、テストの実行・修正を自律的に行ってくれる。
前提条件
- 開発環境は構築済み(新規インストールなど管理者権限が必要な場面を避けるため)
- Docker内でテスト実行可能な状態
- Claude Maxなど定額プラン推奨(長時間回すとレート制限に引っかかる可能性あり)
1. ネットワーク制限(PC自体をサンドボックス化)
--dangerously-skip-permissions を使う場合、外部通信を遮断するのが安全。
Linux / WSL2
# 許可する通信だけ通す
sudo iptables -A OUTPUT -d api.anthropic.com -j ACCEPT
sudo iptables -A OUTPUT -d statsig.anthropic.com -j ACCEPT
sudo iptables -A OUTPUT -d 127.0.0.0/8 -j ACCEPT # localhost
sudo iptables -A OUTPUT -d 172.16.0.0/12 -j ACCEPT # Docker network
sudo iptables -A OUTPUT -d 10.0.0.0/8 -j ACCEPT # Docker network (alternative)
sudo iptables -A OUTPUT -d 192.168.0.0/16 -j ACCEPT # ホストネットワーク経由
sudo iptables -A OUTPUT -j DROP # それ以外は全部ブロック
# 確認
sudo iptables -L OUTPUT -n
元に戻す場合
sudo iptables -F OUTPUT
永続化したい場合
sudo apt install iptables-persistent
sudo netfilter-persistent save
2. Claude Code設定
.claude/settings.json
{
"permissions": {
"allow": [
"Bash(*)",
"Read(*)",
"Write(*)",
"Edit(*)",
"MultiEdit(*)"
]
}
}
これでもAskが出る場合は --dangerously-skip-permissions を使う。環境やコマンドによってはsettings.jsonの許可設定が効かないケースもあるので、ネットワーク制限をかけた上で使うのが現実的。
3. Ralph Wiggumプラグインのインストール
cd your-project
claude
# Claude Code内で
/plugin install ralph-wiggum
4. 実行コマンド例
基本形
claude --dangerously-skip-permissions
Claude Code起動後:
/ralph-loop "E2Eテストを1件ずつ実行して修正する。
## ルール
- 1イテレーションで1テストファイルのみ扱う
- スクショは1回のリクエストで最大2枚まで確認
- 通ったテストのスクショは見ない
## 手順
1. tests/e2e/ から未通過のテストを1つ選ぶ
2. そのテストだけ実行
3. 失敗したら失敗箇所のスクショを確認して修正
4. 通ったら次のテストへ
5. 全テスト通過したら DONE と出力
## 行き詰まった場合(同じテストで3回以上失敗)
- 何がブロックしているか記録
- スキップして次のテストへ
- 最後にスキップしたテストをリストアップ
DONE" --max-iterations 100 --completion-promise "DONE"
ヘッドレスで実行(ターミナル閉じても継続)
nohup claude --dangerously-skip-permissions -p '/ralph-loop "..." --max-iterations 100' > ralph.log 2>&1 &
または tmux / screen で:
tmux new -s ralph
claude --dangerously-skip-permissions
# /ralph-loop 実行後、Ctrl+B D でデタッチ
5. 朝の確認
# ログ確認
tail -100 ralph.log
# テストを再実行して結果確認
# (プロジェクトのテストコマンドに置き換える)
6. 注意点
コンテキスト長
長時間回すとコンテキスト長の限界に達する可能性がある。イテレーションごとにある程度リセットされるので通常は大丈夫。
画像の扱い
1リクエストで大量の画像を読み込むとコンテキスト爆発する。プロンプトで「スクショは最大2枚」など明示的に制限すること。
無限ループ防止
--max-iterationsは必ず設定する- プロンプトに「行き詰まったらスキップ」のロジックを入れる
本番DB
絶対に本番DBには繋がない構成にしておく。テスト用DBを使う。
7. トラブルシューティング
Askで止まる
--dangerously-skip-permissions を使う。ネットワーク制限してれば安全。
ネットワーク制限でClaude APIに繋がらない
# anthropic.comを許可リストに追加
sudo iptables -I OUTPUT 1 -d api.anthropic.com -j ACCEPT
sudo iptables -I OUTPUT 2 -d statsig.anthropic.com -j ACCEPT
Dockerに繋がらない
# Docker networkを確認
docker network inspect bridge
# そのサブネットを許可リストに追加
参考
てことでこれを試してみて、止まってなかったら報告する。