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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
210
初めてのLisp自作譚
keisukeikeda
0
55
tsconfigのオプションで変わる型世界
keisukeikeda
2
250
Other Decks in Programming
See All in Programming
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
320
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
110
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
110
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
370
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
110
mrbgem 三角測量 開発
ogom
0
170
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.2k
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
320
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
330
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
740
iOSDCのペンライトを自動制御したい!
akkeylab
0
330
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
200
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
590
Become a Pro
speakerdeck
PRO
31
6.3k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
530
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
380
Building Applications with DynamoDB
mza
96
7.2k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.2k
Mind Mapping
helmedeiros
1
390
Code Review Best Practice
trishagee
74
20k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
GraphQLとの向き合い方2022年版
quramy
50
15k
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