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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
k.goto
July 17, 2026
Programming
2.8k
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
IaC コードを資産へ:AWS CDK 社内ライブラリと横断展開 / aws-summit-japan-2026
gotok365
10
4.7k
AWS CDK の目玉新機能「Mixins」とは / cdk-mixins
gotok365
2
730
AWS CDKの仕組み / how-aws-cdk-works
gotok365
18
5.8k
AWS CDK 実践的アプローチ N選 / aws-cdk-practical-approaches
gotok365
8
2.7k
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
コミュニティ駆動 AWS CDK ライブラリ「Open Constructs Library」 / community-cdk-library
gotok365
3
620
Other Decks in Programming
See All in Programming
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
240
Google Apps Script で Ruby を動かす
kawahara
0
130
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
530
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.3k
Android CLI
fornewid
0
210
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
270
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.2k
今さら聞けない .NET CLI
htkym
0
180
OpenSpecのproposalにbrainstormingを持たせてみた
tigertora7571
1
200
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
3.9k
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.7k
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.7k
Featured
See All Featured
The Curse of the Amulet
leimatthew05
2
14k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Mobile First: as difficult as doing things right
swwweet
225
10k
Un-Boring Meetings
codingconduct
0
370
We Have a Design System, Now What?
morganepeng
55
8.3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Optimizing for Happiness
mojombo
378
71k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
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