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コントリビューターによる、初心者CDKコントリビューターのためのJSII入門
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Shota Kawasaki
February 12, 2026
0
23
初心者CDKコントリビューターによる、初心者CDKコントリビューターのためのJSII入門
Shota Kawasaki
February 12, 2026
Tweet
Share
More Decks by Shota Kawasaki
See All by Shota Kawasaki
おばけのアイコン可愛い、で終わらせない!KiroのSpec駆動開発に再入門
kawaaaas
0
9
5分でわかって、明日からCDKを使いたくなる!個人的感動機能10選!
kawaaaas
0
160
なぜconsole.logはTokenになるのか?もうハマらないためにTokenをちゃんと理解する
kawaaaas
1
1.3k
初心者を卒業したい! CDKをちゃんと理解するためにAspectsを覗いてみる
kawaaaas
3
240
2026年はアウトプットに挑戦したい!
kawaaaas
0
14
3つのアーキテクチャで試す、IAM Policy Autopilot
kawaaaas
0
160
作って学ぶ!Kiro Powers
kawaaaas
0
150
Featured
See All Featured
Ethics towards AI in product and experience design
skipperchong
2
210
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.3k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
79
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
130
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
230
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
430
A Modern Web Designer's Workflow
chriscoyier
698
190k
Become a Pro
speakerdeck
PRO
31
5.8k
Evolving SEO for Evolving Search Engines
ryanjones
0
150
Un-Boring Meetings
codingconduct
0
220
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
270
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
310
Transcript
若手AWS なんでもLT 会 #2 2026/2/12 Shota Kawasaki 初心者CDK コントリビューターによる、 初心者CDK
コントリビューターのためのJSII 入門
出身: 千葉県 年次: 1 年目 好きなサービス: CDK, Kiro : @kawaaaas
最近CDK へのコントリビュートに 励んでいます Shota Kawasaki
皆さん、CDK 使用していますか?
AWS CDK とは AWS 公式が提供するIaC ツール プログラミング言語で リソースを定義 CloudFormation を生成
少ない記述量で ベストプラクティス に沿って構築
では、CDK を何の言語で書いていますか?
CDK はTypeScript 以外でも書ける CDK 本体はTS で書かれているが、様々な言語をサポートしている
CDK はTypeScript 以外でも書ける CDK 本体はTS で書かれているが、様々な言語をサポートしている ? 今回はここで使用されている JSII の話をします
JSII を理解するべき人 CDK 本体にコントリビュートしたい人 JSII の制約によるTS の避けたほうが良い書き方を知ることは重要です L3 コンストラクトを作りConstruct Hub
に公開したい人 Construct Hub に公開にするにはJSII によるクロス言語コンパイルが必須です CDK が好きな人 CDK の裏側が覗けるなんて、テンションが上がりますよね TS 以外の言語でCDK 開発する人 裏で何が起こっているかを知ることができます
JSII とは何か? AWS CDK で使用されている、TS で書いたライブラリを 他の言語でも使用できるようにするAWS 製のツール TypeScript Python
Greeter をPython でも使用 できるようになる https://aws.github.io/jsii/user-guides/lib-author/configuration/
JSII とは何か? package.json に設定を記載して実行する Python の例では、作成されたパッケージはPyPl に公開できる https://aws.github.io/jsii/user-guides/lib-author/configuration/ ここで各コンパイル先の言語の 設定を記述する
JSII のランタイムアーキテクチャ JSII は各言語向けにAPI サーフェスとプロキシコードを生成し、 実際のビジネスロジックはNode.js 子プロセス上で実行される ホスト言語側 Node.js プロセス
@jsii/kernel @jsii/runtime request API サーフェスと JSON リクエストに 変換するプロキシロジック 実際のJS 実行 response
JSII 利用時の把握しておくべき制約 JS/TS 以外で実行した時のパフォーマンスの低下 node ランタイムへの依存 CDK をTS 以外で開発する時 CDK
を作成する時(コントリビュート等) TypeScript の書き方の制約 TS でCDK 開発を行う(利用する) 際には制約は生じません
JS/TS 以外で実行した時のパフォーマンスの低下 ホスト言語側 Node.js プロセス @jsii/kernel @jsii/runtime request API サーフェスと
JSON リクエストに 変換するプロキシロジック 実際のJS 実行 response JS/TS 以外で実行する際は、ランタイムアーキテクチャの仕様上 避けられないオーバーヘッドが生じる 子プロセスと通信することよる パフォーマンスの低下 CDK をTS 以外で開発する時
node ランタイムへの依存 JS/TS 以外で実行する際でもCI/CD パイプラインや コンテナイメージにおいてNode.js の環境構築が必須となる ※ 参考:https://qiita.com/suzuki_sh/items/85dd85d107f453645ac9 CDK
をTS 以外で開発する時
CDK を作成する時(コントリビュート等) TypeScript の書き方の制約 コンパイル先の言語でサポートされていないTS の仕様は コントリビュート時は避ける必要がある C# の制約により、クラスのメンバーは、 クラス名と同じ名前にできない
https://aws.github.io/jsii/user-guides/lib-author/typescript-restrictions/
CDK を作成する時(コントリビュート等) Union 型は他言語だと緩い型に コンパイルされるため非推奨となる TypeScript の書き方の制約 コンパイル先の言語でサポートされていないTS の仕様は コントリビュート時は避ける必要がある
https://aws.github.io/jsii/user-guides/lib-author/typescript-restrictions/
CDK を作成する時(コントリビュート等) ジェネリクス型のような、サポートされてい る言語が限られる仕様は避ける必要がある TypeScript の書き方の制約 コンパイル先の言語でサポートされていないTS の仕様は コントリビュート時は避ける必要がある https://aws.github.io/jsii/user-guides/lib-author/typescript-restrictions/
一方で、ジェネリクス型でも同等の概念が 取り込まれている特定のケースは使用できる (非同期通信など)
JSII の仕組みと制約をすればなぜ?が解消する CDK のDESIGN_GUIDELINES.md に記載してある事項を 理解してコントリビュートすることができる デザインガイドラインにもUnion ではなくstatic ファクトリメソッドによる実装が提案されている
是非私と一緒にJSII を学んで、 CDK にコントリビュートしましょう!