Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cd...
Search
k.goto
July 17, 2026
Programming
2.9k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
2026/07/18 開催「AWS CDK Conference Japan 2026」での登壇資料です。
k.goto
July 17, 2026
More Decks by k.goto
See All by k.goto
Level Up Your CDK DX: 5 Tools I’ve Been Building
gotok365
2
200
IaC コードを資産へ:AWS CDK 社内ライブラリと横断展開 / aws-summit-japan-2026
gotok365
10
4.8k
AWS CDK の目玉新機能「Mixins」とは / cdk-mixins
gotok365
2
770
AWS CDKの仕組み / how-aws-cdk-works
gotok365
18
5.9k
AWS CDK 実践的アプローチ N選 / aws-cdk-practical-approaches
gotok365
8
2.8k
TypeScript製IaCツールのAWS CDKが様々な言語で実装できる理由 ~他言語変換の仕組み~ / cdk-language-transformation
gotok365
10
1.7k
とあるEdTechベンチャーのシステム構成こだわりN選 / edtech-system
gotok365
7
1.1k
CodePipelineのアクション統合から学ぶAWS CDKの抽象化技術 / codepipeline-actions-cdk-abstraction
gotok365
5
570
AWS CDKにおけるL2 Constructの仕組み / aws-cdk-l2-construct
gotok365
6
1.6k
Other Decks in Programming
See All in Programming
Webの地図
yosuke_furukawa
PRO
6
4.5k
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
410
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
160
Heart of Swift Concurrency
koher
0
840
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
470
Family mrubyの進捗
kishima
1
120
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
140
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
1
150
AIエージェント時代のコードレビューを設計する
nogu66
6
2.7k
Java 27新機能 / Java 27 new features
kishida
2
140
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
710
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
690
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
Art, The Web, and Tiny UX
lynnandtonic
304
22k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
Bash Introduction
62gerente
615
220k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Agile that works and the tools we love
rasmusluckow
331
22k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
500
Transcript
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 AWS CDK Conference Japan
2026 2026/07/18 k.goto
自己紹介 (k.goto) • 株式会社メイツ ‣ Chief Engineer • AWS Hero
‣ AWS DevTools Hero • AWS CDK コントリビューター ‣ Top Contributor ‣ Community Reviewer GitHub: @go-to-k X: @365̲step̲tech
AWS CDK とは? AWSアカウント Stack デプロイ Stack Stack
AWS CDK とは? CDK CLI ② CDKコマンド ⑥ デプロイ ⑤
読み込み/ビルド ③ 合成(synth) ※サブプロセス ① CDK実装 クラウドアセンブリ (cdk.out) ④ 生成 CDK App
CDK CLI の役割 • CDKコマンド ‣ cdk deploy, cdk synth,
etc... • CDK App のオーケストレーター ‣ CDK App をサブプロセスで呼び出して合成を実行 ‣ CDK App の出力したクラウドアセンブリ(cdk.out)を読み込み+ビルド • CloudFormation のラッパー ‣ クラウドアセンブリ内の CloudFormation テンプレートを読み込んでデプロイ
CDK App の役割 • ユーザーの実装した CDK コード ‣ aws-cdk-lib (ライブラリ)を使用
• クラウドアセンブリを生成(=合成)するまでがゴール ‣ デプロイ処理には関与しない ‣ AWS アクセスをしない (context メソッド=fromLookup() でのアクセスは CDK CLI) • クラウドアセンブリ(cdk.out)の中身 fi ‣ CloudFormation テンプレート、Lambda ファイル、Docker le、etc...
CloudFormation の役割 • 実際にデプロイ処理を行う CDK の要 ‣ CDK CLI が
AWS SDK (CloudFormation) 実行 • 必要なアセットは CDK CLI がすでに AWS にビルド・アップロード済み ‣ アセット: Lambda ファイル、Docker イメージ、etc... ‣ CloudFormation テンプレートにそれらの情報などは埋め込み済み
CDK と CloudFormation • CDK と CloudFormation は一心同体 ‣ 切っても切り離せない
• CloudFormation が色々やってくれる分、制約もある ‣ デプロイ時間が長い(遅い)
CDK と CloudFormation • CDK と CloudFormation は一心同体 ‣ 切っても切り離せない
‣ → 本当にそうなのか? • CloudFormation が色々やってくれる分、制約もある ‣ デプロイ時間が長い(遅い) ‣ → 切り離せれば、速度向上も可能になるのでは?
CloudFormation の切り離しの検討
CloudFormation の切り離しの検討 - CDK CLI / CDK App で完全に分離されている -
サブプロセス実行・クラウドアセンブリが接点
CloudFormation の切り離しの検討 置き換え - CDK CLI だけ置き換えても、CDK App はそのまま使える -
CDK App がそのまま使えるとユーザー側は書き換え不要
CloudFormation の切り離しの検討 置き換え - CDK CLI を置き換えられるなら、CloudFormation に縛られない - CloudFormation
部分は、各サービスの SDK 呼び出しで代替できる
いける!
AWS CDK を「作」ってみた
cdkd (CDK Direct) ぜひスターを!! https://github.com/go-to-k/cdkd
cdkd (CDK Direct) cdkd ② cdkdコマンド ⑥ デプロイ ⑤ 読み込み/ビルド
③ 合成(synth) ※サブプロセス ① CDK実装 クラウドアセンブリ (cdk.out) ④ 生成 CDK App AWS SDK (各サービス)
cdkd (CDK Direct) cdkd ② cdkdコマンド ⑥ デプロイ ⑤ 読み込み/ビルド
③ 合成(synth) ※サブプロセス ① CDK実装 クラウドアセンブリ (cdk.out) AWS SDK (各サービス) ④ 生成 CDK App CloudFormation テンプレートは そのまま使用!
cdkd (CDK Direct) 合成 (CDK App) CDK CLI の代替 クラウドアセンブリ解析
アセット ビルド/公開 cdkd エンジン CloudFormation の代替 SDK プロバイダー サブプロセス実行 クラウドアセンブリ生成 CloudFormation テンプレートのパース (+ manifest) Zip 化 / S3 アップロード Docker イメージビルド / ECR push DAG (有向非巡回グラフ = 依存グラフ) 生成 di 計算 (既存リソースとの比較) 並列実行 (未完了依存 0 で即時ディスパッチ) CC API プロバイダー SDK: 爆速 (作成コスト有) CC API: 広範囲カバー (フォールバック) ff ※CC API: Cloud Control API
車輪の再発明 (CDK の裏側) • CDK CLI のやっていたこと • CloudFormation のやっていたこと
‣ con g (context) 読み込み ‣ CFn テンプレート解析 (+値解決) - 複数の con g / context 指定方法 ‣ 合成のオーケストレート - 未解決 context 存在時の合成ループ ‣ Context プロバイダー - AWS SDK による値取得 ‣ アセット管理 ff fi fi - Zip 化 / S3 アップロード - Docker ビルド / ECR push - 依存解決 (Ref/GetAtt) - 組み込み関数 (Fn::Sub/etc...) ‣ 状態管理 (状態=スタック) ‣ プロパティ/リソース単位の di 計算 ‣ 実行計画 (依存グラフ + レベル管理) ‣ リソースプロビジョニング (API 実行) ‣ ロールバック ‣ リソースの安定化待ち
車輪の再発明 (CDK の裏側) • CDK CLI のやっていたこと • CloudFormation のやっていたこと
全て - 複数の con g / context 指定方法 - 依存解決 (Ref/GetAtt) - 組み込み関数 (Fn::Sub/etc...) ‣ 合成のオーケストレート 自作(フルスクラッチ) ‣ 状態管理 (状態=スタック) - 未解決 context 存在時の合成ループ プロパティ/リソース単位の di 計算 ‣ Context プロバイダー ‣ しました! 実行計画 (依存グラフ + レベル管理) - AWS SDK による値取得 ‣ con g (context) 読み込み ‣ CFn テンプレート解析 (+値解決) ff fi fi ‣ ※リソースの安定化待ち以外 ‣ アセット管理 ‣ リソースプロビジョニング (API 実行) →cdkd は速度重視のため - Zip 化 / S3 アップロード ‣ ロールバック - Docker ビルド / ECR push ‣ リソースの安定化待ち
車輪の再発明 (CDK の裏側) • CDK CLI のやっていたこと のやっていたこと • CloudFormation
CDK の仕組みを知っていれば ‣ con g (context) 読み込み テンプレート解析 (+値解決) ‣ CFn 実装はそんなに難しくない - 複数の con g / context 指定方法 ‣ 合成のオーケストレート - 未解決 context 存在時の合成ループ ‣ Context プロバイダー - AWS SDK による値取得 ‣ アセット管理 ff fi fi - Zip 化 / S3 アップロード - Docker ビルド / ECR push - 依存解決 (Ref/GetAtt) 組み込み関数 (Fn::Sub/etc...) -CDK の仕組みを知ることで 普段の CDK(状態=スタック) 開発で遭遇した挙動も ‣ 状態管理 理解できるようになります! di 計算 ‣ プロパティ/リソース単位の ‣ 実行計画 (依存グラフ + レベル管理) ‣ リソースプロビジョニング (API 実行) ‣ ロールバック ‣ リソースの安定化待ち
車輪の再発明 (CDK の裏側) • CDK CLI のやっていたこと 特にこちらが大変でした con g
(context) 読み込み ‣ (cdkd 自作 CloudFormation) 複数の con g / context 指定方法 - ‣ 合成のオーケストレート これらをマネージドでやってくれる - 未解決 context 存在時の合成ループ CloudFormation は偉大! ‣ Context プロバイダー - AWS SDK による値取得 ‣ アセット管理 ff fi fi - Zip 化 / S3 アップロード - Docker ビルド / ECR push • CloudFormation のやっていたこと ‣ CFn テンプレート解析 (+値解決) - 依存解決 (Ref/GetAtt) - 組み込み関数 (Fn::Sub/etc...) ‣ 状態管理 (状態=スタック) ‣ プロパティ/リソース単位の di 計算 ‣ 実行計画 (依存グラフ + レベル管理) ‣ リソースプロビジョニング (API 実行) ‣ ロールバック ‣ リソースの安定化待ち
cdkd 独自の強み • 独自の最適化 (速度向上) ‣ --no-wait ( Express mode):
CloudFront / RDS / ElastiCache / NAT Gateway ‣ VPC Lambda のプライベートサブネットのルート依存はがし • 未定義プロパティのドリフト検知 (cdk-real-drift に切り出し) • アプリコードのローカル実行 (cdk-local に切り出し) • CloudFormation との相互移行 ‣ cdkd export / import --migrate-from-cloudformation cdk-real-drift: https://github.com/go-to-k/cdk-real-drift cdk-local: https://github.com/go-to-k/cdk-local
CDK CLI (CloudFormation) との速度比較 ※ 3 回計測の最速値 ※ Express: CloudFormation
Express モード (2026/7~) CloudFormation の 最大 14 倍以上 Express モードの 最大 9 倍以上
CloudFormation の良いところ • マネージドによる動作の提供・保証 ‣ 依存解決 / di 計算 /
API 実行 / ロールバック ‣ 状態をユーザー側で持たなくていい • リソースの安定化待ち ‣ 安定化前にリソースにアクセスしてもエラーになることがある ‣ CloudFormation では「デプロイ完了 = 即使える」(速度とのトレードオフ) ff → 安心してデプロイできる・リソースを扱える (本番環境向き)
cdkd のユースケース • cdkd は CDK CLI の置き換えではなく補完し合う立ち位置 ‣ 開発
/ テストは cdkd で開発イテレーションを高速に ‣ ステージング / 本番環境は CDK CLI (CloudFormation) • AI 駆動開発における使い捨て環境・プロトタイプ環境の構築 ‣ cdkd の爆速さが AI との相性◎ ‣ とにかく速く作って壊す!(cdkd は削除も爆速!) • 適宜 cdkd export / import で、cdkd <-> CFn の相互移行が可能
cdkd (CDK Direct) ぜひスターを!! https://github.com/go-to-k/cdkd
Appendix
関連資料: AWS CDK の中身に興味ある方へ https://speakerdeck.com/gotok365/how-aws-cdk-works https://speakerdeck.com/gotok365/cdk-language-transformation
cdk-local (cdkl) • CDK 管理のアプリコードをローカル実行する CLI ツール ‣ 関連リソース情報を AWS
環境から自動取得も可能 - アプリはローカル実行しつつ、Secret / S3 / DB などは実リソースにアクセス - .env やローカルへのデータ同期などが不要に ‣ ブラウザ実行も可能 https://github.com/go-to-k/cdk-local
cdk-real-drift (cdkrd) • CDK ドリフト検出ツール ‣ CDK (CloudFormation) で未定義プロパティのドリフト検出も可能 -
cdk drift では検知不可のものが検出できる ‣ record / revert / ignore 可能 https://github.com/go-to-k/cdk-real-drift
cdk-multi-region-stack • 複数リージョンのリソースを 1 つの CDK スタックに記述 https://github.com/go-to-k/cdk-multi-region-stack
aws-cdk-unit-testing (Skill) • AWS CDK の単体テスト Skill ‣ AWS CDK
における単体テストの実践的なノウハウを Coding Agent が理解 - どの場面でどんなテストを書くべきか / 書かなくて良いか - 判断フロー・コードパターン別の例・アンチパターン ‣ builders. ash 寄稿記事をスキル化 - 『AWS CDK における単体テストの使い所を学ぶ』 fl https://github.com/go-to-k/cdk-skills
delstack • CloudFormation スタック強制削除ツール ‣ 通常の削除だと失敗するリソースも含め、スタック丸ごと強制削除 ‣ CDK ネイティブ対応済み (̀delstack
cdk̀ コマンド) https://github.com/go-to-k/delstack
Thank You!! k.goto AWS DevTools Hero X: @365̲step̲tech GitHub: @go-to-k