Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ループエンジニアリングでE2Eテストを実践

 ループエンジニアリングでE2Eテストを実践

Avatar for Noriyuki TAKEI

Noriyuki TAKEI

July 08, 2026

More Decks by Noriyuki TAKEI

Other Decks in Technology

Transcript

  1. Noriyuki TAKEI 武井 宜行 Information • Microsoft MVP for AI

    Platform • サイオステクノロジー株式会社 Favorites • スカッシュ • スキー • 走ること • ストリートファイター6 blog https://tech-lab.sios.jp/ core skill Azureによる クラウドネイティブなアプリ開発 X @noriyukitakei books 世界一やさしいRAG構築入門
  2. 4つのループは「誰が停止を決め、どこまで自走するか」で選ぶ 自律度が上がる順(人間の関与が減る順)に並ぶ。まず一番単純な形から始め、痛くなったら上の型へ昇格する。 ① ターンベース 関与 高 トリガー:ユーザーのプロンプト 停止:Claude自身が判断 毎ターン、あなたがプロンプトを打ち、Claudeが 1サイクル(文脈収集→行動→自己確認→応答)

    回して返す。止まる判断はClaude自身。 ② ゴールベース 関与 中 トリガー:手動プロンプト(/goal) 停止:目標達成・最大ターン 完了条件を先に定義すると、達成までClaudeが反 復。止まろうとするたび評価役が条件を確認して 差し戻す。 ③ 時間ベース 関与 低 トリガー:指定した時間間隔 停止:中止・作業完了 トリガーが「時間」になり人間は不在。同じ作業 を一定間隔で繰り返す、または外部の変化を定期 的に見て反応する。 ④ プロアクティブ 関与 ほぼゼロ トリガー:イベント/予定(無人) 停止:達成・全体は無期限 イベントや予定で無人起動。時間ベース+ゴール ベースを合成し、トリアージ→修正→レビューを 多段編成で自走させる。
  3. ターンベース:1往復ごとに人間が運転席に座る あなた Claude ①「ログイン機能を追加して」 文脈収集 → 行動 → 自己確認 ②実装して応答

    ③「エラー処理も足して」(次のターン) もう1サイクル回して確認 ④応答 ポイント トリガー ユーザーのプロンプト 停止条件 Claude自身が完了/不足を判 断 使う機能 通常のプロンプト 向くタスク 定型でない短い作業 人間の関与 高 渡すプロンプト(通常の対話・毎ターン手動) ログイン機能を追加して → (次ターン)エラー処理も足して 停止条件:指定なし(Claude自身が判断)
  4. ゴールベース:完了条件を先に定義すれば、達成まで自走する あなた Claude ①/goal 完了条件を定義(例:Lighthouse 90以上、5回で停止) 達成 or 最大ターンまで反復 試行:生成

    → 実行 自己評価:条件を満たしたか ②達成 → 完了報告 ポイント トリガー 手動プロンプト(/goal) 停止条件 目標達成・最大ターン 使う機能 /goal(完了条件を定義) 向くタスク 検証できる終了条件 人間の関与 中 渡すプロンプト(Claudeへ) /goal Lighthouseを90以上にする。5回で停止。 終了条件:スコア90以上 最大試行:5回
  5. 時間ベース:時間で起動し、人間不在で定期実行する スケジューラ Claude 外部システム 指定間隔で繰り返し(人間は不在) ①5分ごとに起動(/loop) 1サイクル回す(=ターンベース) ②PR確認・CI修正・レビュー対応 ③状態を返す ④完了

    → 待機(次の間隔へ) ポイント トリガー 指定した時間間隔 停止条件 中止・作業完了 使う機能 /loop ・ /schedule 向くタスク 定期作業・外部システム連携 人間の関与 低 渡すプロンプト(時間で自動発火・人は不在) /loop 5m PRを確認・レビュー対応・CI修正 起動間隔:5分 停止:中止するまで継続
  6. プロアクティブ:イベントで起動し、人間不在のまま自走する イベント Claude 外部システム ①バグ報告イベントで無人起動 達成 or 指定回数まで反復(人はいない) ②修正を適用・テスト実行 ③テスト結果を返す

    自己評価:テストが通ったか ④達成 → 次のイベントを待つ ポイント トリガー イベント/予定(無人) 停止条件 達成 or 指定回数(最大ター ン) 使う機能 /goal を無人で実行 向くタスク 定義済みの反復作業 人間の関与 ほぼゼロ(不在) 渡すプロンプト(イベントで自動投入・人は不在) /goal テストが通るまで修正。最大5回。 終了条件:テスト通過 最大試行:5回
  7. 補足:main(人間の指示)を起点に「仕様書→コード→実行→差し戻し」のループを形成。 実画面のDOMはPlaywright MCPで確認し、ズレを防ぎます。 E2E テスト自動化エージェントの構成 main(人間の指示)が3つのエージェントを仲介し、差し戻しループを制御する testspec-write エージェント 設計書を読んでテスト仕様書を起こす ①

    テスト仕様書を出力 テスト仕様書 docs/testspec/{機能名}.md ② テスト仕様書の読み込み testspec-to-code エージェント 仕様書からPlaywrightコードを生成・修正する ⑤ テストコードの生成・修正 テストコード tests/e2e/{機能名}.spec.ts ⑥ テストコードの読み込み test-runner エージェント 実行して結果を切り分け・報告する 差し戻しループは最大3回。3周しても失敗が続けば人間(CD)へ Playwright MCP 対象画面を開き role/label/testid を確認 ③ MCPに接続 ④ DOMの読み込み テスト対象 Web 画面 ⑦ テスト実行 8
  8. キモは、失敗を「4つ」に仕分けること A セレクタ指定ミス(data-testid の誤 り 等) コード生成へ差し戻し → 自動修正 B

    待ち不足(未描画のままアサーション ) コード生成へ差し戻し → 自動修正 C 実装側のバグ(仕様と挙動が不一致) 人間へエスカレーション D 環境・データ起因(サイト障害 等) 人間へエスカレーション 13