概要
https://jampauchoa.substack.com/p/best-of-both-worlds-using-claude
詳細内容
## Using Claude Code SDK to Reduce E2E Test Time by 84%
https://jampauchoa.substack.com/p/best-of-both-worlds-using-claude
Claude Code SDKが、PRのコード変更に合致するE2Eテストのみを動的に選択するAIゲートキーパーを構築し、テスト実行時間を84%削減する方法を解説します。
**Content Type**: ⚙️ Tools
**Scores**: Signal:4/5 | Depth:4/5 | Unique:4/5 | Practical:5/5 | Anti-Hype:4/5
**Main Journal**: 86/100 | **Annex Potential**: 84/100 | **Overall**: 84/100
**Topics**: [[E2Eテスト最適化, LLMのツール呼び出し, CI/CD高速化, プロンプトエンジニアリング, コード依存関係分析]]
E2Eテストは、システムの完全なユーザーワークフローを検証する上で不可欠ですが、実行時間が長く、壊れやすく、コストが高いという課題があります。CI/CDパイプラインのボトルネックを避けるため夜間実行されることが多く、結果としてバグの発見が遅れ、修正が困難になることが頻繁にあります。本記事は、この課題に対し、Claude Code SDKの「ツール呼び出し」機能を活用して、特定のコード変更に関連するE2Eテストのみを実行するAIゲートキーパーを構築する革新的なアプローチを紹介します。
従来のglobパターンによるテスト選択では、コードベースの進化に伴うメンテナンス負荷や、変更範囲の広さからくる不正確さが問題でした。これに対し、本アプローチでは、Claude Codeがリポジトリ全体を一度に処理するのではなく、PRの変更内容を詳細に解析し、コードの依存関係を追跡することで、人間のような直感でテストを特定します。
ゲートキーパーの構築には、以下の要素が重要です。まず、`git diff`コマンドを精密に調整し、PRにおける実際のコード変更を抽出し、トークン数を最適化します。次に、WebdriverIOの`wdio.conf.ts`のような設定ファイルから、実行可能なE2Eテストのインベントリを動的に取得します。プロンプトエンジニアリングでは、「深く考える」といった指示や、テスト対象の厳密な制約、迷った場合はテストを含めるという安全策を盛り込みます。出力形式については、JSONモードでの制約との戦いを避け、Claudeに直接`test-recommendations.json`ファイルを作成させるという実用的な方法を採用しています。これらの要素を組み合わせ、`bun e2e:gatekeeper | claude -p --allowedTools "Edit Write"`のような形でパイプラインを構築します。
結果として、E2Eテスト時間は従来の44分から7分未満へと84%削減され、大規模な変更でも迅速なフィードバックが可能になりました。Claudeは関連するテストを見逃すことなく、開発者の時間を節約し、本番環境へのバグ流出を防ぎ、モバイルデバイスファームのランナー費用削減にも貢献しています。これは、LLMの高度なコード理解能力とツール呼び出し機能を活用することで、開発ワークフローを劇的に改善できる具体的な事例として、Webアプリケーションエンジニアにとって非常に示唆に富むものです。