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
初心者を卒業したい! CDKをちゃんと理解するためにAspectsを覗いてみる
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Shota Kawasaki
January 20, 2026
290
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
初心者を卒業したい! CDKをちゃんと理解するためにAspectsを覗いてみる
Shota Kawasaki
January 20, 2026
More Decks by Shota Kawasaki
See All by Shota Kawasaki
CloudFormationから理解するCDKのAwsCustomResourceの使用法
kawaaaas
1
42
CDKとは?からコントリビュートまで〜半年間のCDK学習振り返りとこれから〜
kawaaaas
1
120
アーキテクト・CDK・OSSを一気に学ぶ!L3 Construct実装のススメ
kawaaaas
0
81
おばけのアイコン可愛い、で終わらせない!KiroのSpec駆動開発に再入門
kawaaaas
0
29
初心者CDKコントリビューターによる、初心者CDKコントリビューターのためのJSII入門
kawaaaas
0
30
5分でわかって、明日からCDKを使いたくなる!個人的感動機能10選!
kawaaaas
1
350
なぜconsole.logはTokenになるのか?もうハマらないためにTokenをちゃんと理解する
kawaaaas
1
1.4k
2026年はアウトプットに挑戦したい!
kawaaaas
0
21
3つのアーキテクチャで試す、IAM Policy Autopilot
kawaaaas
0
190
Featured
See All Featured
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
170
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
950
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Deep Space Network (abreviated)
tonyrice
0
210
Crafting Experiences
bethany
1
180
The browser strikes back
jonoalderson
0
1.3k
[SF Ruby Conf 2025] Rails X
palkan
2
1.1k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Balancing Empowerment & Direction
lara
6
1.2k
Transcript
初心者を卒業したい! CDK をちゃんと理解するために Aspects を覗いてみる Toranomon Tech Hub 第6 回
新春!初心者だらけのLT 大会! 2026/1/22 Shota Kawasaki
出身: 千葉県 所属: SIer 年次: 1 年目 好きな技術: AWS, React
好きなAWS サービス: CloudFront, Kiro, CDK : @kawaaaas Shota Kawasaki
今回のテーマは「新しいチャレンジ」
昨年から、AWS CDK にチャレンジしている
AWS CDK とは AWS 公式が提供するIaC ツール 書き慣れた言語で リソースを定義 CloudFormation を生成
少ない記述量で ベストプラクティス に沿って構築
学生時代 入社後 CDK の有識者が多い部署に配属 興味を持ち、自ら0→1 で学習した
研修や趣味にて、 CDK を用いてこんなアーキテクチャ実装した①
研修や趣味にて、 CDK を用いてこんなアーキテクチャ実装した②
研修や趣味にて、 CDK を用いてこんなアーキテクチャ実装した③
実装していく中で、CDK の虜になった
ベストプラクティスに沿ってデフォルトの設定が反映 されているから、少ない記述量でリソースの定義ができる CDK の感動ポイント① L2 コンストラクト L3 L2 L1 抽象度高
汎用性低 抽象度低 汎用性高
CDK の感動ポイント② Grant メソッド ・直接ポリシーを書かずに権限を付与 ・権限を許可する対象がわかりやすい
CDK の感動ポイント③ Tag 管理 Stack やapp に対してadd するだけで 全リソースに一括でTag を付与できる
魅力を知ったしCDK が好きになった、 ただ「なんとなく書ける」から抜け出せない いい感じに実装しといたで
2026 年はCDK を自信を持って 好きと言えるようになりたい! 内部実装まで理解して、 コントリビュートもしたい!
魅力を語ってた機能、ちゃんと理解している? → まずは理解して魅力を語れるように! 全リソースに一括でTag を付与できる けど、これなんで?
Tag.of() はどんな仕組みで成り立っているの? Tag は内部でAspects という機能を利用している
Aspects とは 特定のスコープ内のすべての construct に対して共通の操作を適用する方法 Visitor デザインパターンが採用されており 既存のオブジェクト構造を修正することなく新しい操作を追加できる
Constract Prepare Validate Synthesize CDK のアプリケーションライフサイクル https://docs.aws.amazon.com/cdk/v2/guide/apps.html#lifecycle
Construct Prepare Validate Synthesize CDK のアプリケーションライフサイクル 定義されたConstruct に基づき Construct ツリーを形成する
https://docs.aws.amazon.com/cdk/v2/guide/apps.html#lifecycle
Construct Prepare Validate Synthesize CDK のアプリケーションライフサイクル リソース間の依存を解消し、 Aspects が適用されているかを確認する https://docs.aws.amazon.com/cdk/v2/guide/apps.html#lifecycle
Visitor デザインパターンによるツリー探索 GoF デザインパターンのひとつ オブジェクト構造の各要素に新しい操作を追加するためのデザインパターン Constract フェーズで構築されたツリーを探索する Visitor を受け入れる具象クラス →Stack
やConstract 各要素に適用される操作を定義する具象クラス →Tag
IAspect を継承しているTag クラス visit のメソッドを実装する Visitor デザインパターンによるツリー探索 /core/lib/tag-aspect.ts
app に対して、visit が再帰的に呼ばれる ことでAspects 機能が実装されている Visitor デザインパターンによるツリー探索 /packages/aws-cdk-lib/core/lib/private/synthesis.ts
Aspect を継承しスタック内のすべての S3 バケットに対して、バージョニングが 有効化されているかを確認する Tag.of() 以外の応用例 Tag はAspects の一例に過ぎないので、
IAspect を継承すればAspects を用いた機能を実装できる https://github.com/aws-samples/cdk-aspects-override/blob/main/lib/aspects.ts
是非みなさんも、好きな技術を 自信を持って好きと言えるように 私と一緒に挑戦しましょう!