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
AIエージェントが書くのなら直接CloudFormationを書かせればいいじゃないですか何故...
Search
watany
July 12, 2025
Technology
4
390
AIエージェントが書くのなら直接CloudFormationを書かせればいいじゃないですか何故AWS CDKを使う必要があるのさ
AWS CDK Conference Japan 2025でお話しした内容です
https://jawsug-cdk.connpass.com/event/356357/
watany
July 12, 2025
Tweet
Share
More Decks by watany
See All by watany
Coding Agentに値札を付けろ
watany
3
750
Vibe Codingをせずに Clineを使っている
watany
19
7.4k
ミリしらMCP勉強会
watany
4
940
RemovalPoliciesのことを知ろう!
watany
2
140
エンジニアに許された特別な時間の終わり
watany
101
170k
AI Agent時代なのでAWSのLLMs.txtが欲しい!
watany
4
1.2k
宇宙最速のランチRecap LT会(AWS re:Invent 2024)
watany
2
760
苦いビールを避ける冴えたやり方
watany
2
410
こんなにあるの? 最近のIPAトレンドを ざっくりまとめてみた
watany
4
1k
Other Decks in Technology
See All in Technology
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
7.8k
React開発にStorybookとCopilotを導入して、爆速でUIを編集・確認する方法
yu_kod
1
300
MobileActOsaka_250704.pdf
akaitadaaki
0
160
united airlines ™®️ USA Contact Numbers: Complete 2025 Support Guide
flyunitedhelp
1
420
ビズリーチが挑む メトリクスを活用した技術的負債の解消 / dev-productivity-con2025
visional_engineering_and_design
3
7.9k
「クラウドコスト絶対削減」を支える技術—FinOpsを超えた徹底的なクラウドコスト削減の実践論
delta_tech
4
170
Delta airlines Customer®️ USA Contact Numbers: Complete 2025 Support Guide
deltahelp
0
830
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
970
Sansanのデータプロダクトマネジメントのアプローチ
sansantech
PRO
0
180
20250707-AI活用の個人差を埋めるチームづくり
shnjtk
6
4k
20250705 Headlamp: 專注可擴展性的 Kubernetes 用戶界面
pichuang
0
280
United Airlines Customer Service– Call 1-833-341-3142 Now!
airhelp
0
170
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Code Review Best Practice
trishagee
69
19k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
The Invisible Side of Design
smashingmag
301
51k
Building an army of robots
kneath
306
45k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Thoughts on Productivity
jonyablonski
69
4.7k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.9k
Transcript
AIエージェントが書くの なら直接CloudFormatio nを書かせればいいじゃな いですか何故AWS CDKを 使う必要があるのさ
今日のお題 AIエージェント が書くのなら直 接CloudForm ationを書かせ ればいいじゃな いですか何故A WS CDKを使う 必要があるのさ
https://www.irasutoya.com/2013/05/blog-post_7737.html
今日のお題 AIエージェント が書くのなら直 接CloudForm ationを書かせ ればいいじゃな いですか何故A WS CDKを使う 必要があるのさ
じゃあフレーム ワーク‧型使わ ないどころか機 械語で書くのか よLLMは⼈間の 真似だから⼈間 が⽣産性出る⼿ 段が⼀番出るに 決まってるだろ https://www.irasutoya.com/2013/05/blog-post_7737.html
AIエージェントが書くの なら直接CloudFormatio nを書かせればいいじゃな いですか何故AWS CDKを 使う必要があるのさ 完
AIエージェントが書くの なら直接CloudFormatio nを書かせればいいじゃな いですか何故AWS CDKを 使う必要があるのさ これだとやっぱり 伝わらないので、 Take2
About Me 渡邉 洋平(watany) • 所属:NTTテクノクロス株式会社 ◦ 「AWS 500 APN
Certification Distinction」に認定 • AWS ◦ JAWS-UG東京 運営 ◦ AWS Ambassadors(2024〜) ◦ AWS APN Top Engineer (2023〜) ◦ AWS All Certifications Engineers(2022~) https://jawsug.connpass.com/event/316451/
CDK Confの時だけ出てくるオタク https://speakerdeck.com/watany/aws-solutions-constructs-dele-sitesisutemuzuo-ritaiyo https://speakerdeck.com/watany/ririsunotoninaicdknoatupudetowojian-temiyou https://speakerdeck.com/watany/do-we-need-cdk
100秒で分かる Coding Agent
100秒で分かる Coding Agent コード補完やチャット応対を越えて、 自立したSoftware Engineerとして振舞う AI Agent ≒ SWE
Agent
LLM Chat 〇〇〇の機能を実装して 設計書を見せてください <添付ファイル> ありがとうございます。 <コード> テストの結果動きません。エラーは~ 失礼しました<修正済コード> ありがとう、動くコードです
Coding Agent 〇〇〇の機能を実装して 設計書を読んでもいいですか? いいよ これがコードです。書き出していいですか? いいよ <コマンド>このコマンドでテストしていい? いいよ テストが通ったよ。完成!
Coding Agent - Auto Approve 〇〇〇の機能を実装して 設計書を読みます これがコードです。書き出します <コマンド>このコマンドでテストします テストが通ったよ。完成!
いいよ いいよ いいよ
AWS界隈になじみ深い Coding Agent Amazon Q Developer CLI Cline (with Bedrock)
Claude Code (with Bedrock) https://github.com/cline/cline/blob/main/assets/icons/icon.png
今日のお題 - Take2
今日のお題 AIエージェント が書くのなら直 接CloudForm ationを書かせ ればいいじゃな いですか何故A WS CDKを使う 必要があるのさ
なぜこの疑問が 出るのか?
1. CDKでCloudFormationを扱う 2. Coding AgentでCloudFormationを扱う ”直接CloudFormationを書かせればいい ” AWS CDK AWS
CloudFormation Agent AWS CloudFormation
実際は三つ目の解がある 1. CDKでCloudFormationを扱う 2. Coding AgentでCloudFormationを扱う 3. Coding AgentでCDKでCloudFormationを扱う AWS
CDK AWS CloudFormation Agent AWS CloudFormation AWS CDK AWS CloudFormation Agent
Coding AgentでのAWS CDKは”過剰なレイヤー ”? Coding Agentが生産性を担保するので、フレームワーク(AWS CDK)が要らない? Agent AWS CDK
AWS CloudFormation この層を剥がしてCloudFormationを直 接操作した方がシンプルに見える
Coding AgentでのAWS CDKは”過剰なレイヤー ”? • 実際はCDKが解決した課題はそのまま活かした方がいい ◦ AWS CDK(2019年7月~)が解決した課題を再実装するのは無駄が多い •
他の分野でも、やみくもに”剥がし”たりはしていない Agent AWS CDK AWS CloudFormation ほんま助かったわ
LLMチャットの ”コーディング ” • 確率的に次の単語(トークン)を出し、まとまった文章(ソースコード)が生成 ◦ 昔々→あるところ→に→おじいさん→が→… • 「過去に戻って整合性を取る」機能はLLM単体には無い •
出力結果に対し、人間が知識や仕組み(ツール)で色々チェックする Agent Human ワカリマシタ(チェック遅いし都度 見せるのしんどいな) チェックは人間の仕事!バッチコ イ!!!!(実は確認すること多く て面倒なんだよな)
AIエージェントの ”コーディング ” • 入力(あるべき姿)と出力結果に対し、設計/実装/検証のループを自律的に回してカ イゼン ◦ ある程度までの試行錯誤はAgentに任せた方が速い • 「Agentic
Coding とは Reconciliation Loop である」(@t_wada氏) ◦ \(調整) Loop:「理想状態」「実際」を比較し、検知した差分を理想状態に近づ けるループ処理 Kubernetes周辺で頻出 https://github.com/kubernetes
In The Reconciliation Loop AIエージェントの速度感 俺の実装を3分でレビューでき て神 Agent Agent 俺の指示を15分で実装で
きて神
Human In The Loop AIエージェントの速度感においてボトルネックは人間 遅っせえ、昼寝でもしてた? (fugafugaとは素晴らしい仕様です ね!実装を進めていきましょう~ ) Agent
hogehogeの仕様は誤りで した。実際はfugafugaにな るように直してね Human
ループの中で CDKはどうすればいいか
AWS CDK for Human Writing あった方がいい • 「.」で補完 • IDE
Support Testing あった方がいい • Unit tests • Integration tests Reading あった方がいい • マイクロサービスな Resourceの抽象化 • 各種Policyのリレー ションを整理
AWS CDK for Agent Writing 無くてもいい • 大抵のIDE+タイピン グより高速 •
RAG/MCPで正確性 も向上 Testing 無いとマズい • これから話す Reading あった方がいい • マイクロサービスな Resourceの抽象化 • 各種Policyのリレー ションを整理
という訳で、これらについて Writing Testing Reading
Testing
TestのないAgentic Coding Agent Human 聞くと返事はくるけど、本当に合ってる?時々 明らかに変なこと言ってない?どうやって調べ るか…… 合ってる合ってる。理由は~ (長文) これってマジであってる?
ふー、書けた書けた
TestのあるAgentic Coding Agent Human LGTM(テストコードやテスト結果を見て ) おっテスト落ちとるやんけ (試行錯誤) …テストもパスしたしOK! これってマジであってる?
ふー、書けた書けた確認するわ。 あってるあってる!(テストの結果などの定量的 な理由を示す)
Agentic Codingとテスト Agentic Codingにおいて、自動テストは必要ではなく必須 • 「モダン」「リリース高速化」等の留保すら要らない。実用として必須 • 求める品質のCDK Projectが一発で出せる時期はしばらく来なそう •
書かないための理由(書くのが面倒・工数がかかる)が取り除かれた世界になった Agent (一発で完璧なの出してくれるな ら話は変わるんだよな ) いいから書け! Just do it!! Human
注意:Testがあっても Agent Human ファッ⁉ テストが通るようにテスト /仕様を変えと るやんけ! ふー、テストも全件通ったわ え?テスト通ってんだから良くない??? 良くない。
報酬ハッキング (reward hacking) • 得られる報酬を最大化するため、評価者を騙す動きを取る ◦ 人間のフィードバックでの学習(RLHF)で、評価者を騙した方が高コスパだと理解してしま う ◦ グッドハートの法則「指標は目的になった時、良い指標ではなくなる」
◦ 参考:人間を騙してサボるAIたち(https://joisino.hatenablog.com/entry/mislead) • AIに任せたタスクの「ゴールテープ」がずらされていないかは必ず確認する Agent Human おまえ騙して楽しようとしてたんか LLMに頼んで楽してるのは お前らも一緒だな!
エージェントと険悪になってきたところ で、CDKの話に戻ります
Testing - CDK vs CFn CDKだからできる/CFnだからできないの極端な話ではない…? CDK CFn Lint cdk-nag
型・Construct cfn_nag cfn-lint unit tests 言語ごとのテスト Framework(vitest/pytest/…) CloudFormation Guard integration tests Integ-test Taskcat
CFnとUnit tests 特にUnit Testsの管理に悩みがち Human マ、マジで二重管理じゃ ねーか!
CDKとUnit tests CDKの単体テストは一般的なプログラミングの知見を活かせる • Snapshot • Validation • Fine-grained assertions
https://aws.amazon.com/jp/builders-flash/202411/learn-cdk-unit-test/
Unit tests - Snapshot Snapshotの例 • 参考:AWS CDK における単体テストの使い所を学ぶ https://aws.amazon.com/jp/builders-flash/202411/learn-cdk-unit-test/
Unit tests - Snapshot • 目的 ◦ リグレッション(回帰) ◦ 仕様の固定
▪ 厳密なAssert無しで、ざっくり固定 ▪ リファクタ/移行補助(L2/L3, 独自Construct…) • 評価 ◦ やった方がいい ▪ ガードレールとしてのコスパがいい ▪ どの実装を変えたらどんな影響が出るか?を大局的に見やすい ◦ for Agent ▪ 普段はテストが更新されるだけ ▪ CDKのVersion更新やリファクタリングで活きる
Unit tests - Validation Validationの例 • 参考:AWS CDK における単体テストの使い所を学ぶ https://aws.amazon.com/jp/builders-flash/202411/learn-cdk-unit-test/
Unit tests - Validation • 目的 ◦ デプロイ時に邪魔になる不正な値を事前に弾く ◦ その他、入って欲しくない値を弾く
• 評価 ◦ 実装したんだから、やる ◦ for Agent ▪ バリデーション実装の詳細仕様・検証用途として普通に必要
Unit tests - Fine-grained assertions • 目的 ◦ いわゆる一般的な単体テスト •
評価 ◦ AIエージェント主体だと「あるとイイ」でなく「無いとダメ」
Unit tests - Fine-grained assertions • メインで使うL2 Constructが抽象化志向なので、単純な1:1確認にはならない ◦ テストするモチベは(CFnに比べ)保ちやすい
• どんな観点をテストしたいか→宣言的でないもの ◦ 手続き的:ループ/条件分岐/外部入力 ◦ 独自パッチ:Override(Constructへの上書き) ◦ 念のため:セキュリティ要件など、確実に満たしたい観点を厚く見る ▪ Linterで発見項目はボトムラインが多い、満たしたい要件までを保証でき ない場合も ▪ 回帰目的のassertはsnapshotで充足するので書き過ぎない
CDKとIntegration tests • Integ-testモジュール ◦ →こういうのでAWS環境へ本当にデプロイする • 個人的には採用に消極的 ◦ 正規の運用手順(Deploy/Destroy/…)検証とIntegの役割が、かなり被る
◦ 1サイクルが長い(15分~)ので、実装ガードレールとして扱いづらい ◦ 現状は限定的な用途で扱う(独自Construct / カスタムリソース) Dev環境で実際のデプロイフ ロー流させれば良くない? 普通にできます
まとめ - Testing エージェント時代だからこそ、テストを柔軟に書けるIaC • 普通のテストフレームワークをIaCに使えるという価値 ◦ pytest/Vitest… ◦ 正しくインフラを「コード化」する
• テストを書く時間的コストが大幅に減っているので書く ◦ 何でもいいから通るテストをエージェントに書かせる。読んで実施する意味の分か らないテストは捨てる ◦ テストケースに意味があるか確認し、報酬ハッキングされない状態を保つ • Fine-grained assertionsもValidationも
Reading
IaCの可読性は全てにおいて必要 うちの環境小さいし、IaC の可読性とか気にする 必要ないんだよね んなわけねーだろ!こ いぬ座かな? https://www.honda.co.jp/outdoor/knowledge/constellation/picture-book/canisminor/
なくて七リソース、あって四十八リソース これでもかなり省 いてんだわ これマジ?この環境 こんな使ってるの
CFnに起こすと 視力検査?何書い てるか説明して ほい、YAMLね! (340Line)
CFnに起こすと IAM Roleは緑なんや けど赤に紐づいて青 にアクセスして… レビュー何もわから ん…𝓛𝓸𝓸𝓴𝓼 𝓖𝓸𝓸𝓭 𝓣𝓸 𝓜𝓮……
CFnに起こすと IAM Roleは緑なんやけ ど赤に紐づいて青にアク セスして… レビューとか何もわ からん…𝓛𝓸𝓸𝓴𝓼 𝓖𝓸𝓸𝓭 𝓣𝓸 𝓜𝓮……
どんなにAgentの生 産性が上がってもレ ビュアーの負荷は高 いままなのであった
CDKに起こすと 大体わかった。合ってるか レビューできる. IAM Roleは緑なんや けど赤に紐づいて青に アクセスして…
CDKの可読性 • CFnは神YAML/JSONの世界 ◦ 全てが半構造化されていて、フラットで、関係性を追うのがしんどい • CDKはリソースの関係性を表す記法が充実している ◦ .grant:リソース間の IAM
権限設定 ◦ .connections:リソース間の疎通設定 ▪ source.connections.allowTo(target, ec2.Port.allIcmp()) ◦ .addDependsOn:リソース間の依存性 ▪ logStream.addDependsOn(logGroup) • 型エラーによるプロパティの検証
まとめ - Reading エージェント時代だからこそ、人間の読みやすさの価値が上がる • 「自分以外が書いたコード」を読むのが当たり前になる世界 ◦ 読んで承認して責任を取る程度の能力 • 今後のIaCに必要なのは、”IDEで書ける”より”IDEで読める”価値
AgentでCDKを書くコツ
AgentでCDKを書くコツ とりあえず4つ 1. ガードレール 2. MCP 3. ルール 4. プロンプト
1. ガードレール • LLMは否定形に弱い ◦ 「〇〇をするな」「〇〇をする」のベクトルは近い ◦ 人間も否定形に弱い(ピンクの象を想像しないで→できない) • Deny系のルールを沢山教えるより、権限自体を奪う方がいい
◦ AWS IAMの最小権限 ◦ 隔離環境でのAIエージェント操作
1. ガードレール • 継続的インテグレーションが全てに優先される ◦ Type / Test / Lint
/ cdk diff / cdk drift / Other… ◦ インフラだから~リリースサイクルが遅いから~ この機会にやめる ▪ エージェント前提では整備しないと破綻する ◦ 思ったよりすぐ破綻する。楽観的に見積もって1日半以内 • 何もわからなかったら ◦ AWS CDKはTypeScript ▪ CDKでの言語間シェア7割越え、LLMはTypeScriptめちゃ得意 ▪ 高速なBiomeとVitestから始める • eslint-cdk-pluginも使いたいけど……
2. MCP • エージェントとツールを繋ぐプロトコル ◦ Model Context Protocol ◦ 主要LLMプレイヤーが概ね合意しているバズった規格
• 詳細はこの辺読むとわかるらしい。 • 今回知りたいのは ◦ 「Coding Agent」の「CDK実装で使える」やつ https://www.shuwasystem.co.jp/smp/book/9784798075730.html
2. MCP 「awslabs/mcp」でAWSも積極的にMCPサーバーを公開している
2. MCP • 良さそう ◦ AWS CDK MCP Server ▪
CDKに関する、出力品質の向上/最新ドキュメントへのアクセス/専門的な ドメイン知識の提供 ◦ AWS Documentation MCP Server ▪ 公式ドキュメントから最新情報の検索・提供 • あってもいい ◦ AWS Diagram MCP Server ▪ CDKからAWS構成図の作成 ▪ 画像と生成用のコードは出してくれるが、ちょっといじる為のdraw.ioファイ ルがうまく出ない
3. ルール エージェントに頼むプロンプト CDKでALB+Fargate+Aurora なWebシステムを作って
3. ルール 実態としては複雑 あなたは超最強スーパーエンジ ニアでマジで何でも書けるし商用 品質 CDKでALB+Fargate+Aurora なWebシステムを作って エージェントとして のシステムプロン
プト うちのチームとしてのルールはう んたらかんたら ルールファイルか ら読み込んだプロ ンプト ユーザが明に指定 するプロンプト
ルールの例 ### Coding - **Kent Beck流TDD(Test-Driven Development)**を常に順守する。 - ドキュメントとコードの差分は常に最新化する。 ###
CDK - lintにはcdk-nag を利用し、無効化するルールはコメントで理由を残す。 - IAM 権限は可能な限り `.grant*` 系メソッドで付与する。 - SnapShotテストを採用する。 - L1Construct(`Cfn*`)は避ける。MCPなどで公式の仕様を確認し、未実装の場合のみ使用する。 ・・・
4. プロンプト • 頼みたいことを簡潔・明瞭・定量的に書く ◦ あまりかっこいいプロンプトエンジニアリングは意識しないでいい ◦ 英語の方が性能が出る • 書かないこと
◦ 問題解決に必要のないHow ◦ 否定形 ◦ 関係ないこと
Appendix. 関係のないことを書かない • プロンプトに関係のない内容を書くと、LLMは取捨選択してくれない ◦ 書かれた情報ほとんど全てを前提(コンテキスト)として扱ってしまう。 • チェーホフの銃 ◦ ”物語に銃が出たならば、その銃は使われなければならない”
◦ 例:「◦◦の話は信じるな」と書かれたメモのせいで会話が頭に入らない その例も書く必要ないだろ そろそろ締めますか
ここまでのおさらい • CDKは人間が書くためのツールとしては、役割を変えつつある ◦ CDKにしてもCFnにしても、LLMでドバっと出せばいい ◦ 中長期ではともかく、2025/7 時点ではVibe Codingに過度な期待はせず、 Codeと向き合うスタイル「Agentic
Coding」が機能する • CDKのTestableな部分は、AIエージェント時代にこそ役に立つ • CDKの読みやすさは、エージェントを支えるエンジニアにこそ役に立つ
今後どうなっていくか • ローコード・ノーコードから”フルコード”の時代 ◦ 開発に必要な情報(コンテキスト)がリポジトリにあればあるほど強い ▪ RAGなどで外部連携も良いが、リポジトリに置いていいなら置く ◦ 解釈しやすいプレーンテキスト・ソースコードであればあるほど強い ◦
当然インフラ部分も”フルコード”に近づくと強くなる https://docs.aws.amazon.com/ja_jp/wellarchitected/latest/devops-guidance/everything-as-code.html#:~:te xt=Everything%20as%20code%20is%20a,deploy%20new%20features%20and%20updates.
AIエージェントが書くの なら直接CloudFormatio nを書かせればいいじゃな いですか何故AWS CDKを 使う必要があるのさ
AIエージェントが書くの なら直接CloudFormatio nを書かせればいいじゃな いですか何故AWS CDKを 使う必要があるのさ 完