Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Claude CodeでETLジョブ実行テストを自動化してみた
Search
yoshiki kasama
April 22, 2026
Programming
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Claude CodeでETLジョブ実行テストを自動化してみた
Claude Code の Skills と Hooks を使って ETL テストを自動化した際の工夫点を共有する 5 分 LT 資料
yoshiki kasama
April 22, 2026
Other Decks in Programming
See All in Programming
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.5k
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
320
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
340
Claspは野良GASの夢をみるか
takter00
0
190
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
13
4.3k
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
130
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
540
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
280
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
240
技術記事、 専門家としてのプログラマ、 言語化
mizchi
13
5.9k
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
250
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Amusing Abliteration
ianozsvald
1
200
What's in a price? How to price your products and services
michaelherold
247
13k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
580
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
230
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.7k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
590
Designing Powerful Visuals for Engaging Learning
tmiket
1
410
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Transcript
Claude CodeでETLジョブ実行テス トを自動化してみた 2026-04-24 / kasama
kasama Classmethod データエンジニア 専門: AWSデータ基盤 最近の関心事: Claude Codeで業務自動化 自己紹介 2
Claude Code で AWS 操作を含むテストを安全に自動実行する ための設計の 勘所 dontAsk mode で
自動実行 devcontainer で実行環境を隔離 IAM policy で AWS 側の最終ガード → 事故なく自動実行を成立させる このLTで伝えたいこと 3
1. テスト対象のETLパイプライン 2. 前提環境 3. 自動化前のテスト手順と課題 4. 自動化の全体像 5. 検討ポイント①
実行方式(Ralph Loop vs 現方式) 6. 検討ポイント② 権限モード(→ dontAsk ) 7. 補足: auto mode の評価フロー 8. 補足: auto mode の進化(v2.1.118) 9. 検討ポイント③ 隔離環境(→ devcontainer)+ 認証フロー 10. 検討ポイント④ AWS 側のIAM権限(最終ガード) 11. 最後に 目次 4
AWS 認証 IAM ユーザー(MFA デバイス設定済み、アカウントA) スイッチロールしてアカウントBの IAM Role で操作(1時間セッション、MFA必須) aws-vault
+ 1Password CLI を credential_process 経由で使用 aws ... --profile <your-profile> で認証完了する状態 ローカル環境(macOS) AWS CLI v2 / Python 3.9+ / Node.js 18+ / pnpm VS Code + Dev Containers 拡張機能 aws-vault + 1Password CLI + 生体認証のチェーンは macOS 固有のためホスト側で動作 前提環境 5
EventBridge → Step Functions(Lambda呼出)→ DuckDBでCSV→Parquet変換 → Icebergテーブル更新 テスト対象のETLパイプライン 6
従来は AWS Management Console から手動実行。画面を順に操作する必要があった。 1. Step Functions 画面で「新しい実行の開始」 2.
ジョブ完了まで画面を眺める(数分待機) 3. Athena 画面でクエリ実行、Iceberg テーブルの書込内容を検証 4. S3 画面で archive パスにファイル移動されたか確認 5. テスト失敗 → 1 からやり直し 課題: 画面遷移・入力・目視確認の往復で疲弊。エビデンスの取得も手作業 → Claude Code で 自動化できないか? がスタート地点 自動化前のテスト手順と課題 7
自動化の全体像 8
Claude Code を自動実行する方法は主に2つ。 claude -p + --allowedTools (Ralph Loop): shell
scriptから claude -p をループで呼 出、glob で allow-list claude --permission-mode dontAsk + permissions.allow / deny ← 採用: 単一セッション で実行、allow-list を JSON で集中管理 Ralph Loop を採用しなかった理由 skill ベースの宣言的ワークフロー管理を優先(Ralph Loop は shell script で workflow 実装 が必要) 単一セッションでのコンテキスト維持を優先(複数ステップで状態・前提を共有できる) 参考: https://ghuntley.com/loop/ 検討ポイント① 実行方式(Ralph Loop vs 現方式) 9
モード 未マッチツールの挙動 deny 評価 allow 評価 default / plan プロンプト表示(対話必要)
✓ ✓ acceptEdits 編集とファイル操作 Bash(mkdir/mv/cp/rm 等)は自 動、他の Bash はプロンプト ✓ ✓ auto 分類器で判定 + カスタム allow/soft_deny で補強可 ✓ ✓ bypassPermissions すべて実行(無防備) ✗ ✗ dontAsk ← 採用 自動拒否 ✓ ✓ → dontAsk のみ「allow-list に無い = 自動拒否」で、完全自動実行に適する 参考: https://code.claude.com/docs/en/permission-modes 検討ポイント② 権限モード 10
auto mode は 2段階ゲートでツール呼び出しを判定する Stage 1: permissions (パターンマッチで即決) 記述: ツールパターン(例:
Bash(aws s3 ls:*) / Read(/tmp/*) ) 一致すれば即確定: deny = ハードブロック、 allow = 即承認 一致しなければ Stage 2 へ委譲 Stage 2: 分類器 / autoMode (分類器に"方針"を自然言語で指示) 分類器がツール呼び出しを自然言語ルールに照らして判定 autoMode.soft_deny = 原則ブロックしたい行為のリスト(会話の明示意図で覆せる=ソフト) autoMode.allow = soft_deny でブロックされた行為のうち「これは OK」と例外を指定するリスト 違い: permissions.* は正確なツール名で即決(堅い)/ autoMode.* は分類器への方針指示 で、意味レベルで判定される(柔軟だが曖昧) 参考: https://code.claude.com/docs/en/auto-mode-config 補足: auto mode の評価フロー 11
v2.1.118〜: 独自ルールでビルトイン安全ルールが完全に上書きされていたものが "$defaults" でビルト インを継承可能に { "autoMode": { "soft_deny": [
"$defaults", "Never modify files under infra/terraform/prod/" ], "allow": [ "$defaults", "Editing infra/terraform/prod/staging-mirror/ is allowed" ] } } 使い分け: permissions.allow / deny を網羅できれば auto も決定論的に動く。未指定ツールが来た場 合、 dontAsk は即拒否(決定論)/ auto は分類器判定(非決定論) 。今回は未知のツールを確実に拒否 したかったため dontAsk を採用 補足: auto mode の進化(v2.1.118) 12
隔離環境 判定 備考 ホスト直接 ✗ Claude がログインユーザの全権限で動作。~/.ssh、~/.aws、どこでも読み書きできる /sandbox ✗ Bash
からのプロジェクト外への「書き込み」と未許可ドメインへの「通信」だけ制限。 「読み取 り」と Read/Edit/Write は無制限 devcontainer ◎ ← 採用 Docker コンテナの中で動作。ホスト側はプロジェクトフォルダしか見えない、他は一切触れな い devcontainer を選んだ理由 被害は mount 先に限定: ホスト全体のファイルシステムを守れる 参考: https://code.claude.com/docs/en/sandboxing 検討ポイント③ 隔離環境 13
IAM アクセスキーはホスト側に留め、一時認証情報だけをコンテナに渡す ホスト macOS 1. aws-vault exec <profile> --duration=2h --
code . で VS Code を起動 2. aws-vault が Keychain から IAM アクセスキーを読取 3. op read で 1Password から MFA TOTP を自動取得(Touch ID で 1Password unlock) 4. sts:AssumeRole で一時認証情報を発行 → VS Code プロセスに export devcontainer devcontainer.json の containerEnv で ${localEnv:AWS_*} を forward 一時認証情報はメモリ上の環境変数のみ、ディスクには書かれない 2時間で期限切れ → VS Code を閉じる → aws-vault exec で再起動 → Rebuild Container 検討ポイント③(続き)devcontainer の認証フロー 14
Claude Code 側の allow-list は補助。万一突破されても AWS 側の IAM ロールで止まる 設計。
Claude Code 側(補助) permissions.allow : Bash(aws s3 *) 等、利用想定のサブコマンドのみ permissions.deny : Bash(rm -rf *) / Bash(aws s3 rm *) / Bash(cdk destroy *) 等 IAM ロール(最終ガード) ReadOnlyAccess + 必要な write のみ許可( states:StartExecution / athena:StartQueryExecution / s3:PutObject / glue:StartJobRun / events:PutEvents ) 。そ れ以外は default deny 検討ポイント④ AWS側のIAM権限をガードレールに 15
まとめ Claude Code の Skills + Hooks で ETL テストを
一気通貫で自動化(テスト計画生成 → ジョ ブ実行 → エビデンス記録 → サマリ作成) dontAsk mode × devcontainer × IAM policy の多層防御で安全に自動実行可能に 自動テスト後のAIフィードバックで改善提案が自動で検出・記録されるのは AI ならではのメリッ ト 実装詳細・実際の動作はブログを参照してください Claude CodeでETLジョブ実行テストを自動化してみた | DevelopersIO 最後に 16
ご清聴ありがとうございました