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
Docコメントで始める簡単ガードレール
Search
Keisuke Ikeda
February 24, 2026
Programming
180
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
200
技術検証結果の整理と解析をAIに任せよう!
keisukeikeda
0
180
初めてのLisp自作譚
keisukeikeda
0
46
tsconfigのオプションで変わる型世界
keisukeikeda
2
240
Other Decks in Programming
See All in Programming
yield再入門 #phpcon
o0h
PRO
0
630
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
220
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
360
OSINT for SRE: 学術論文とポストモーテムから探る システム障害の共通パターン / SRE NEXT 2026
tomoyk
1
4k
【やさしく解説 設計編 #1】「ドメイン駆動」と「実装駆動」ってなに? 〜設計の考え方を、たとえ話で学ぼう〜
panda728
PRO
1
120
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
880
AIエージェントで 変わるAndroid開発環境
takahirom
2
680
Apache Hive: そしてCloud Native Lakehouseへ
okumin
1
150
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
150
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
300
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
170
関数型プログラミングのメリットって何だろう?
wanko_it
0
180
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
280
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
Prompt Engineering for Job Search
mfonobong
0
380
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Practical Orchestrator
shlominoach
191
11k
Skip the Path - Find Your Career Trail
mkilby
1
170
Git: the NoSQL Database
bkeepers
PRO
432
67k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
220
Claude Code のすすめ
schroneko
67
230k
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