Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
CDK開発におけるコーディング規約の運用
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Ren Yamanashi
February 21, 2025
Programming
800
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CDK開発におけるコーディング規約の運用
JAWS-UG CDK支部#19 クラスメソッドコラボ回で登壇したスライドです
https://jawsug-cdk.connpass.com/event/343974/
Ren Yamanashi
February 21, 2025
More Decks by Ren Yamanashi
See All by Ren Yamanashi
保守性を高める AWS CDK のセオリー・ベストプラクティス
yamanashi_ren01
6
1.5k
ESLintプラグインを使用してCDKのセオリーを適用する
yamanashi_ren01
2
910
AWS初心者ってどうやってAWSを学ぶ?〜アプリエンジニアがやってよかったアーキテクチャ学習方法〜
yamanashi_ren01
0
730
Other Decks in Programming
See All in Programming
AI Augmentation Techniques with Liberty
ivargrimstad
0
170
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
210
Jetpack Compose Mechanisms
skydoves
3
900
[2026-10-09]一枚の布で作らなくてもいい。 信頼性は「パッチワーク」で紡がれる~既存の運用と新しい可能性をつなぎ合わせてきたCREの話~
tosite
0
120
AI-Powered Domain-Driven Design
ziobrando
0
360
オーケストレーション記述言語 Katari
yukikurage
0
210
dotNET_vulnclicker_intro.pdf
deka_morita
0
160
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
230
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
0
190
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
1.9k
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.2k
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
300
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
2
12k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1.1k
Crafting Experiences
bethany
1
390
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
590
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
The untapped power of vector embeddings
frankvandijk
2
2k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
360
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
330
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Transcript
2025/02/21 山梨 蓮 JAWS-UG CDK支部#19 クラスメソッドコラボ回
自己紹介 @ren_yamanashi ・job : web engineer (backend) ・lang 📝: TypeScript
・hobby 🚀: CDK Contribute
前提 ・JavaScript / TypeScriptを使用した開発を想定しています
自己紹 介 コーディング規約とは?
コーディング規約 ・コーディングにおけるルール (e.g. Construct で公開する変数は readonly をつける) ・保守性が高く、一貫性のあるコードを保つ →複数人での開発ではコーディング規約の運用が重要
コーディング規約 ・コーディングにおけるルール (e.g. Construct で公開する変数は readonly をつける) ❌ 自前で運用 ・保守性が高く、一貫性のあるコードを保つ
→複数人での開発ではコーディング規約の運用が重要
コーディング規約 ・コーディングにおけるルール (e.g. Construct で公開する変数は readonly をつける) ❌ 自前で運用 ・保守性が高く、一貫性のあるコードを保つ
→複数人での開発ではコーディング規約の運用が重要 ⭕ Linter / Formatter を使用した運用
課題 ・どのツールを使えばいいのか迷う (e.g. Linterは ESLint? Biome?) ・CDK開発特有のコーディング規約はどうする?
課題 ・どのツールを使えばいいのか迷う (e.g. Linterは ESLint? Biome?) ・CDK開発特有のコーディング規約はどうする? 目標:適切なツールの選定・コーディング規約の制定
取り上げる内容 ・ Linterの選定 ・コードの規約に関する内容 ・コメントの規約に関する内容 ・JSDoc
自己紹 介 コードの規約: Linterの選定
・JS/TS などのコードを解析して、ルールに沿っているかをチェックするツール ・コーディング規約を定めて、それに沿っていないコードを修正・違反にする Linter とは?
Linter とは? 🤔 どのLinterを使えばいいのか迷う (e.g. ESLint / Biome) ・JS/TS などのコードを解析して、ルールに沿っているかをチェックするツール
・コーディング規約を定めて、それに沿っていないコードを修正・違反にする
Linter とは? → それぞれの特徴などを正しく理解し、適切に選定する 🤔 どのLinterを使えばいいのか迷う (e.g. ESLint / Biome) ・JS/TS
などのコードを解析して、ルールに沿っているかをチェックするツール ・コーディング規約を定めて、それに沿っていないコードを修正・違反にする
① ESLint ② Biome ③ Oxlint
① ESLint ② Biome ③ Oxlint
・プラグイン(typescript-eslint)でTSをサポート ① ESLint ・有名なJSのLinter ・設定ファイル(eslint.config.js)の記述が必要 ・プラグインが豊富 / 自前でカスタムルールを作れる ・型情報を用いたLintルールが提供される(typescript-eslint)
・プラグイン(typescript-eslint)でTSをサポート ① ESLint ・JSのLinterとして有名 ・設定ファイル(eslint.config.js)の記述が必要 ・プラグインが豊富 / 自前でカスタムルールを作れる ・型情報を用いたLintルールが提供される(typescript-eslint)
型情報Lintルールの例 ・switch-exhaustiveness-check
・プラグイン(typescript-eslint)でTSをサポート ① ESLint ・JSのLinterとして有名 ・設定ファイル(eslint.config.js)の記述が必要 ・プラグインが豊富 / 自前でカスタムルールを作れる ・型情報を用いたLintルールが提供される(typescript-eslint) TypeScript
Compiler に依存してLintを行なっている
① ESLint ② Biome ③ Oxlint
・ESLintに比べて速い(15倍) ② Biome ・Rust製のLinter (Formatterなども提供) ・Webで使われる技術(JS/TS/CSS/JSON)をサポート ・設定ファイルの記述なしでも動作する(no config) ・型情報のLintルールがない
・ESLintに比べて速い(15倍) ② Biome ・Rust製のLinter (Formatterなども提供) ・Webで使われる技術(JS/TS/CSS/JSON)をサポート ・設定ファイルの記述なしでも動作する(no config) ・型情報のLintルールがない
・ESLintに比べて速い(15倍) ② Biome ・Rust製のLinter (Formatterなども提供) ・Webで使われる技術(JS/TS/CSS/JSON)をサポート ・設定ファイルの記述なしでも動作する(no config) ・型情報のLintルールがない TypeScript
Compiler に依存していない (パフォーマンス面の懸念)
① ESLint ② Biome ③ Oxlint
・ESLintに比べて速い(50~100倍) ③ Oxlint (Oxc) ・Rust製のLinter ・JS/TSを対象 ・設定ファイルの記述なしでも動作する(no config) ・型情報のLintルールがない ・ESLintや他のPluginとの互換性を意識
(ESLintの完全置き換えではなく、ESLintを補う)
③ Oxlint (Oxc) ESLintや他のPluginとの互換性を意識 → ESLintの完全置き換えではなく、速度面でESLintを補う
None
自己紹 介 CDKでは何を使う?
何がいいか? 個人的には・・・ ・まだESLint(typescript-eslint) ・速度が気になる場合は、Oxlintとの併用も ・型情報Lintルールは取り入れたい ・プラグインの豊富さ・カスタムルールが作成可能 (自分でルールが作れる選択肢は残しておきたい)
自己紹 介 コメントの規約: JSDoc
JSDocとは?
オプショナルなプロパティがある場合・・・ ・指定しない場合はどのようなデフォルト値がリソースに設定されるのか CDKでの活用例 具体的な実装を見ることなく理解できる
自己紹 介 CDK開発における “JSDocの規約”
CDK開発でのJSDocに関する規約 個人的には・・・ ・interfaceのプロパティ・Constructで公開するプロパティにはJSDocを必須に ・オプショナルなプロパティには必ず @default を記述する より明確で使いやすく、可読性の高いConstructに (aws-cdk/packages/awslint/lib/rules/docs.tsでも実装されている)
まとめ ・CDK開発におけるコーディング規約の運用を解説 ・Linter ・JSDoc JSDocに関するルール・CDK独自のルールは、 “eslint-cdk-plugin” で提供されているので、ぜひ使ってみてください!! ・とりあえずESLint ・interface・Constructのpublic変数にはJSDocを必須に ・オプショナルなプロパティには必ず
@default を記述