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
3
510
CDK開発におけるコーディング規約の運用
JAWS-UG CDK支部#19 クラスメソッドコラボ回で登壇したスライドです
https://jawsug-cdk.connpass.com/event/343974/
Ren Yamanashi
February 21, 2025
Tweet
Share
More Decks by Ren Yamanashi
See All by Ren Yamanashi
保守性を高める AWS CDK のセオリー・ベストプラクティス
yamanashi_ren01
6
1.1k
ESLintプラグインを使用してCDKのセオリーを適用する
yamanashi_ren01
2
720
AWS初心者ってどうやってAWSを学ぶ?〜アプリエンジニアがやってよかったアーキテクチャ学習方法〜
yamanashi_ren01
0
610
Other Decks in Programming
See All in Programming
AI駆動開発カンファレンスAutumn2025 _AI駆動開発にはAI駆動品質保証
autifyhq
0
120
Verilator + Rust + gRPC と Efinix の RISC-V でAIアクセラレータをAIで作ってる話 RTLを語る会(18) 2025/11/08
ryuz88
0
210
Temporal Knowledge Graphで作る! 時間変化するナレッジを扱うAI Agentの世界
po3rin
5
1.2k
Dive into Triton Internals
appleparan
0
430
data-viz-talk-cz-2025
lcolladotor
0
110
業務でAIを使いたい話
hnw
0
230
Bakuraku E2E Scenario Test System Architecture #bakuraku_qa_study
teyamagu
PRO
0
230
SwiftDataを使って10万件のデータを読み書きする
akidon0000
0
250
Kotlinで実装するCPU/GPU 「協調的」パフォーマンス管理
matuyuhi
0
270
フロントエンド開発のためのブラウザ組み込みAI入門
masashi
7
3.7k
Developer Joy - The New Paradigm
hollycummins
1
400
なんでRustの環境構築してないのにRust製のツールが動くの? / Why Do Rust-Based Tools Run Without a Rust Environment?
ssssota
14
47k
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
116
20k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
Practical Orchestrator
shlominoach
190
11k
Facilitating Awesome Meetings
lara
57
6.6k
Mobile First: as difficult as doing things right
swwweet
225
10k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
10
910
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
RailsConf 2023
tenderlove
30
1.3k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
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 を記述