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
Ren Yamanashi
February 21, 2025
Programming
790
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
900
AWS初心者ってどうやってAWSを学ぶ?〜アプリエンジニアがやってよかったアーキテクチャ学習方法〜
yamanashi_ren01
0
730
Other Decks in Programming
See All in Programming
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
640
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
150
Agents on Rails - Rails at Scale 2026
irinanazarova
0
330
FreeBSDでZabbixを動かす
kenkino
0
350
Jetpack Compose Mechanisms
skydoves
2
330
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
340
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
470
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
730
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
120
Are APIs Still Relevant in the AI Era?
soyuka
0
420
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.8k
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
290
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Into the Great Unknown - MozCon
thekraken
41
2.8k
Designing for Timeless Needs
cassininazir
1
520
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
570
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Optimizing for Happiness
mojombo
378
71k
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 を記述