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
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
230
技術検証結果の整理と解析をAIに任せよう!
keisukeikeda
0
220
初めてのLisp自作譚
keisukeikeda
0
88
tsconfigのオプションで変わる型世界
keisukeikeda
2
250
Other Decks in Programming
See All in Programming
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.9k
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
180
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
0
870
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
260
Event is what happens
moro
2
770
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
150
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
110
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.1k
Web Framework Benchmark Battle 2026, Any%
a_matsuda
2
2k
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
1.1k
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
The Curious Case for Waylosing
cassininazir
1
570
Building AI with AI
inesmontani
PRO
1
1.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.3k
Site-Speed That Sticks
csswizardry
13
1.6k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
940
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
710
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
59k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3.1k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
990
The Cult of Friendly URLs
andyhume
79
7k
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