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
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cd...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
1
53
IaC コードを資産へ:AWS CDK 社内ライブラリと横断展開 / aws-summit-japan-2026
gotok365
10
4.8k
AWS CDK の目玉新機能「Mixins」とは / cdk-mixins
gotok365
2
750
AWS CDKの仕組み / how-aws-cdk-works
gotok365
18
5.8k
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
1k
CodePipelineのアクション統合から学ぶAWS CDKの抽象化技術 / codepipeline-actions-cdk-abstraction
gotok365
5
560
AWS CDKにおけるL2 Constructの仕組み / aws-cdk-l2-construct
gotok365
6
1.6k
Other Decks in Programming
See All in Programming
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
560
AWS Transform Customによる Spring Boot 2.xから4.xへのVerUp
satoshi256kbyte
2
110
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
240
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
180
T3DD26: From RAGs to Riches
martinhelmich
0
110
typoなんかねぇよ
raspython3
0
610
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
250
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
200
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
160
プロポーザルを書いてもらう
pvcresin
0
590
Pythonの実行はどこまで賢くなったのか? CPythonとPyPyから見る最適化のしくみ
curekoshimizu
3
2.2k
初めての模倣学習とVLA
natsutan
0
310
Featured
See All Featured
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
Prompt Engineering for Job Search
mfonobong
0
420
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
What's in a price? How to price your products and services
michaelherold
247
13k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
390
Six Lessons from altMBA
skipperchong
29
4.5k
Marketing to machines
jonoalderson
1
5.7k
Side Projects
sachag
455
43k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Evolving SEO for Evolving Search Engines
ryanjones
0
270
It's Worth the Effort
3n
188
29k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
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