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
Docコメントで始める簡単ガードレール
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Keisuke Ikeda
February 24, 2026
Programming
200
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Docコメントで始める簡単ガードレール
https://typescript-jpc.connpass.com/event/382128/
Keisuke Ikeda
February 24, 2026
More Decks by Keisuke Ikeda
See All by Keisuke Ikeda
JavaScript実装の自作プログラミング言語をTypeScript実装に移行した話
keisukeikeda
1
220
技術検証結果の整理と解析をAIに任せよう!
keisukeikeda
0
210
初めてのLisp自作譚
keisukeikeda
0
55
tsconfigのオプションで変わる型世界
keisukeikeda
2
250
Other Decks in Programming
See All in Programming
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
380
Security issues being discussed on Web Platforms
petamoriken
0
990
FreeBSDでZabbixを動かす
kenkino
0
310
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
2
140
GKE で Pod の見方を変えたら、スケールアウト時の挙動を真に捉えられた話
stkk
0
130
速習iPhone Duo対応
yuukiw00w
1
670
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
150
Webの地図
yosuke_furukawa
PRO
6
4.7k
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
150
Java 27新機能 / Java 27 new features
kishida
2
150
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
120
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
4.8k
Featured
See All Featured
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
290
A designer walks into a library…
pauljervisheath
211
25k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
420
Documentation Writing (for coders)
carmenintech
77
5.5k
RailsConf 2023
tenderlove
30
1.6k
How to Talk to Developers About Accessibility
jct
2
550
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
700
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Designing Experiences People Love
moore
143
24k
Transcript
%PDίϝϯτͰ࢝ΊΔ ؆୯ΨʔυϨʔϧ ,FJTVLF*LFEB 54,BJHJ.BTIVQ,BOTBJ !JLF@LFJDIBO
自己紹介 02/21 ,FJTVLF*LFEB ɾ౦ژͱؔʢେࡕژʣͷڌੜ׆த ɾ54,BJHJ ϑϩϯτΤϯυΧϯϑΝϨϯεؔ ɹ3FBDU5PLZPϑΣεͷελοϑ ɾษڧձେ͖Ϛϯ ษڧձதͷπΠʔτ͕͏Δ͍͞
ɾ࠷ۙɺ໑ͱै໑͕࢈·ΕͨͷͰྑ͍॑ˍै॑ʹͳΓ͍ͨ !JLF@LFJDIBO
03/21 օ͞Μ%PDίϝϯτॻ͖·͔͢ʁ Docコメントについて !JLF@LFJDIBO
04/21 ɾ ͱ!Ͱॻ͘ߏతͳίϝϯτه๏ ɾ௨ৗͷίϝϯτͷҧ͍ ɹ*%&ΛؚΉଟ͘ͷπʔϧͷػೳΛิॿ ɹπʔϧΛར༻ͯ͠υΩϡϝϯτΛੜՄೳ ɹ ɾجຊతʹϝδϟʔͳݴޠʹఆΊΒΕͨඪ४ه๏͕ଘࡏ ɹ+BWBEPD
%PDTUSJOH +4%PD 54%PD (P%PD %PYZHFO %PDίϝϯτͱʁ Docコメントについて !JLF@LFJDIBO
05/21 ɾ+BWBEPD͕ىݯ ɹ!QBSBNT!SFUVSOTͷΑ͏ʹ!Ͱλάه๏ ɹ*%&ͳͲ͕+BWBEPDίϝϯτΛαϙʔτ࢝͠ΊΔ ɹίϝϯτ͔ΒυΩϡϝϯτੜՄೳ ɹίϝϯτͷॻ͖ํͷඪ४ʹ ɾଞݴޠͷීٴ ɹ+BWBEPDͷॻ͖ํ͕ଞݴޠͰ༻͞ΕΔ ɹݴޠͷҧ͍Λٵऩ͢ΔͨΊʹɺ֤ݴޠ͝ͱͷඪ४͕ੜʢ+4%PDͳͲʣ %PDͷྺ࢙
Docコメントについて !JLF@LFJDIBO
06/21 ɾ։ൃεϐʔυΛ༏ઌͨ͠ࡍʹɺ༏ઌ͕͘ͳΔɻ ɾίϝϯτʹϝϯςφϯείετ͕͋Γɺݹ͍%PDίϝϯτ͕ٯʹϊΠζ ɹʹͳΔɻ ɾ*%&ΛؚΉଟ͘ͷπʔϧͷิਪ͕ڧྗʹͳΓɺ%PDίϝϯτͰิ ɹ͢Δҙຯ͕ബ͘ͳΔɻ %PDίϝϯτॻ͘ඞཁ͕͋Δͷ͔ʁʢʣ Docコメントについて !JLF@LFJDIBO
07/21 ɾςετ͕υΩϡϝϯτΘΓʹͳͬͨɻ ɾΫϦʔϯͳίʔυͰ͋Εɺίʔυͦͷͷ͕υΩϡϝϯτʹͳΓ͏Δɻ ɾͦͦաʹίϝϯτΛॻ͖͘Ͱͳ͍ɻίʔυͰѲͰ͖Δ͜ͱΛ ɹίϝϯτͰॻ͖͘Ͱͳ͍ͱ͍͏ߟ͕͑ීٴɻ ɾ5ZQF4DSJQUʹؔͯ͠ݴ͑ɺܕใΛίϝϯτͰิ͏ඞཁ͕ͳ͘ͳͬͨɻ %PDίϝϯτॻ͘ඞཁ͕͋Δͷ͔ʁʢʣ Docコメントについて !JLF@LFJDIBO
08/21 Docコメントを書く理由 !JLF@LFJDIBO ੜ"*͕ͨΓલͷ࣌ʹ %PDίϝϯτॻ͘ඞཁ͕͋Δͷ͔ʁ
09/21 Docコメントを書く理由 "*ʮ࣮ʯ͔Δ͕ʮҙਤʯ͔Βͳ͍ const sendInvitation = async (inviterId: string, email:
string): Promise<void> => { const inviter = await getUser(inviterId); if (inviter.invitationCount >= 5) return; await sendEmail(email, '招待', inviteUrl(inviterId)); await incrementInvitationCount(inviterId); }; !JLF@LFJDIBO
11/21 Docコメントを書く理由 ͦΕͧΕͷπʔϧͰ͔Δ͜ͱ !JLF@LFJDIBO
10/21 Docコメントを書く理由 %PDίϝϯτͰʮҙਤʯ͕͔Δ /** * 招待メールを送信する。 * 招待上限は不正利用防止のため5件に制限(仕様#123参照)。 * 上限超過時はエラーにしない仕様。呼び出し元でチェック不要。
* @param email 未登録アドレスであることは呼び出し元で検証すること。 */ const sendInvitation = async (inviterId: string, email: string): Promise<void> => { const inviter = await getUser(inviterId); if (inviter.invitationCount >= 5) return; await sendEmail(email, '招待', inviteUrl(inviterId)); await incrementInvitationCount(inviterId); }; !JLF@LFJDIBO
12/21 Docコメントを書く理由 ී௨ͷίϝϯτͰͩΊͳͷ͔ʁ ɾνʔϜͰॻ͖ํΛڞ௨ԽͰ͖Δɻ ɹී௨ͷίϝϯτͩͱॻ͖ํ͕όϥόϥʹͳΓ͍͢ɻ ɹ"*ʹίϝϯτΛॻ͍ͯΒ͏߹Ͱจମ͕ἧ͍͍͢ɻ ɾ*%&ΛؚΉଟ͘ͷπʔϧͷԸܙड͚ΒΕΔɻ ɾ"*͕ߏԽ͞Εͨใͱͯ͠ಡΈऔΓ͍͢ɻ !JLF@LFJDIBO
13/21 Docコメントを書く理由 %PDίϝϯτίʔυͷྡʹ͋Δϓϩϯϓτ ɾׂͷ ɹ$-"6%&NEͳͲͷϓϩϯϓτϑΝΠϧநతͳϧʔϧΛॻ͘ॴͰ ɹ͋ΓɺݸʑͷίʔυͷҙਤΛॻ͘ʹద͍ͯ͠ͳ͍ɻ ɾίʔυͱͷڑ ɹϓϩϯϓτϑΝΠϧ"*͕ࢀরͷͨΊʹผ్ϑΝΠϧಡΈࠐΈ͕ඞཁɻ ɹ%PDίϝϯτίʔυͱಉ͡ϑΝΠϧʹ͋ΔͨΊɺ"*͕ίʔυΛಡΉࡍ
ɹʹࣗવʹҰॹʹಡΈऔΒΕΔɻ !JLF@LFJDIBO
14/21 Docコメントを書く理由 ಋೖίετθϩ ɾڥߏஙઃఆϑΝΠϧͷมߋෆཁ ɾΤϥʔ͕ग़ͳ͍ͨΊطଘͷ։ൃϑϩʔΛյ͞ͳ͍ ɾطଘͷίʔυϕʔεʹޙ͔ΒՃՄೳ ɾ͔ؔΒ։࢝Մೳ !JLF@LFJDIBO
運用方法 15/21 %PDίϝϯτॻ͘ͷେมͱ͍͏Λ Ε͍ͯͳ͍ʁ !JLF@LFJDIBO
運用方法 16/21 %PDίϝϯτ"*ʹॻ͔ͤΑ͏ʂ !JLF@LFJDIBO
運用方法 17/21 %PDίϝϯτΛॻ͘ίετ"*ʹͤΔ !JLF@LFJDIBO
Docコメントは書くべき? 18/21 ͜͜·ͰͷΛ౿·͑ͯɺ %PDίϝϯτॻ͖͘ͳͷ͔ʁ !JLF@LFJDIBO
Docコメントは書くべき? 19/21 %PDίϝϯτॻ͖͔͘ʁ ɾ"*ʹରͯ͠Ͳ͜·ͰΨʔυϨʔϧΛඋ͠ɺίϯτϩʔϧ͍͔ͨ͠ ɾϦϯλʔɾςετɾܕఆ͕ٛेʹඋ͞Ε͍ͯΔͳΒԸܙগͳ͍ ɹٯʹͦΕΒͷඋ͕ෆेͳ߹Ըܙ͋Γ ɹಋೖίετθϩͰɺΤϥʔग़ͳ͍ͨΊ։ൃͷअຐʹͳΒͳ͍ ɾ"*༻લఏͰνʔϜશһͰ%PDίϝϯτΛϝϯςφϯεͰ͖Δ͔ʁ
!JLF@LFJDIBO
まとめ 20/21 ·ͱΊʢʣ ɾܕɾϦϯλʔɾςετ"*ͷϓϩϯϓτʹͳΔ͕ɺʮҙਤʯ%PDίϝ ɹϯτͷํ͕ΘΓ͍͢ ɾ%PDίϝϯτίʔυͷྡʹ͋Δہॴతͳϓϩϯϓτͱͯ͠ͷػೳ ɾ։ൃϑϩʔΛյ͞ͳ͍ಋೖίετθϩͷΨʔυϨʔϧ !JLF@LFJDIBO
まとめ 21/21 ·ͱΊʢʣ ɾ"*ʹ%PDίϝϯτΛॻ͔ͤΔ͜ͱͰɺίετͳҙਤͷ͢Γ߹Θͤͱ1MBO ɹϞʔυతͳӡ༻͕Մೳ ɾ%PDίϝϯτ͕༗ޮ͔νʔϜϓϩδΣΫτ࣍ୈɻ"*ͷΨʔυϨʔϧ ɹΛͲ͜·Ͱඋ͍͔ͨ͠Ͱஅ ɾ·ͣʮҙਤ͕ΘΓʹ͍͘ʯͱײͨؔ͡ͷ%PDίϝϯτ͔Β !JLF@LFJDIBO