技術 約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
# そのサブネットを許可リストに追加

参考


てことでこれを試してみて、止まってなかったら報告する。