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
Shota Kawasaki
February 12, 2026
0
12
初心者CDKコントリビューターによる、初心者CDKコントリビューターのためのJSII入門
Shota Kawasaki
February 12, 2026
Tweet
Share
More Decks by Shota Kawasaki
See All by Shota Kawasaki
5分でわかって、明日からCDKを使いたくなる!個人的感動機能10選!
kawaaaas
0
150
なぜconsole.logはTokenになるのか?もうハマらないためにTokenをちゃんと理解する
kawaaaas
1
420
初心者を卒業したい! CDKをちゃんと理解するためにAspectsを覗いてみる
kawaaaas
3
240
2026年はアウトプットに挑戦したい!
kawaaaas
0
7
3つのアーキテクチャで試す、IAM Policy Autopilot
kawaaaas
0
150
作って学ぶ!Kiro Powers
kawaaaas
0
120
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
220
Measuring & Analyzing Core Web Vitals
bluesmoon
9
760
The browser strikes back
jonoalderson
0
400
Technical Leadership for Architectural Decision Making
baasie
2
250
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
Navigating Weather and Climate Data
rabernat
0
110
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
54
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Git: the NoSQL Database
bkeepers
PRO
432
66k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
120
Side Projects
sachag
455
43k
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 にコントリビュートしましょう!