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開発におけるコーディング規約の運用
Search
Ren Yamanashi
February 21, 2025
Programming
690
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.4k
ESLintプラグインを使用してCDKのセオリーを適用する
yamanashi_ren01
2
860
AWS初心者ってどうやってAWSを学ぶ?〜アプリエンジニアがやってよかったアーキテクチャ学習方法〜
yamanashi_ren01
0
690
Other Decks in Programming
See All in Programming
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
150
CSC307 Lecture 17
javiergs
PRO
0
320
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
190
Vite+ Unified Toolchain for the Web
naokihaba
0
240
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
150
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
320
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.6k
dRuby over BLE
makicamel
2
330
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
160
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
260
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
500
Swiftのレキシカルスコープ管理
kntkymt
0
220
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
140
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
240
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
270
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
160
Building an army of robots
kneath
306
46k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
130
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
390
Navigating Team Friction
lara
192
16k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
180
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
140
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
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 を記述