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
読みやすいテストコードへの一歩、適切なAssertionを使う
Search
asumikam
March 09, 2024
4
1.6k
読みやすいテストコードへの一歩、適切なAssertionを使う
PHPerKaigi 2024
https://fortee.jp/phperkaigi-2024/proposal/1be00d06-afa8-4ba9-a49b-9118c782f8e3
asumikam
March 09, 2024
Tweet
Share
More Decks by asumikam
See All by asumikam
逆ポーランド記法とpreg_match_all
asumikam
2
570
キョムリリースをやめて、プロダクトと向き合う!
asumikam
9
4.4k
「PHPカンファレンス小田原2024」を実行委員長がふりかえる
asumikam
2
1.6k
PHPカンファレンス小田原2024 オープニング
asumikam
1
1.3k
ひたすらチームの自慢をします【スクフェス神奈川2024 スポンサーLT】
asumikam
2
580
10年間、派手髪を貫く技術
asumikam
1
490
privateメソッドのテストって書かない方がいいんだっけ?
asumikam
35
15k
ゼロからのスタート: 敢えて「徐々に」始めるスクラム
asumikam
3
1.1k
失敗例から学ぶSOLID原則
asumikam
20
8k
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Infographics Made Easy
chrislema
238
18k
Design by the Numbers
sachag
277
18k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
13
430
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Fireside Chat
paigeccino
25
2.8k
GraphQLの誤解/rethinking-graphql
sonatard
59
9.6k
Creatively Recalculating Your Daily Design Routine
revolveconf
214
11k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
224
21k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
23
1.9k
Code Reviewing Like a Champion
maltzj
517
39k
Transcript
ಡΈ͍͢ςετίʔυͷҰาɺ దͳ"TTFSUJPOΛ͏ BTVNJLBN
͜Μʹͪʂ w͋͢Έ͔Μ͏·Εͦͩͪ͗͢ͳΈ͘ w 𝕏 !BTVNJLBNখాݪ͔Β͖·ͨ͠
QSJWBUFϝιουͷςετͬͯ ॻ͔ͳ͍ํ͕͍͍Μ͚ͩͬʁ 1)1FS,BJHJ BTVNJLBN ͖ͬ͞ ൃද͖ͯͨ͠ż‼
͖ͬ͞ͷൃද IUUQTTIPVMEJUFTUQSJWBUFNFUIPETDPN
ʮ୯ମςετͷߟ͑ํ͍ํʯ ୯ମςετʹ͓͍ͯɺ֤ςετɾέʔε͕ ͖͢͜ͱͦͷςετʹؔΘΔਓͨͪʹ ςετରͷίʔυ͕ղܾ͠Α͏ͱ͍ͯ͠ ΔޠʢTUPSZʣΛ͑Δ͜ͱͳͷͰ͢ɻ ͖ͬ͞ͷൃද
ετʔϦʔ͕͏·͘ΘΔͱ ༷ ͕ςετέʔεʹΑͬͯ දݱ͞Ε͍ͯΔ͜ͱ͕େࣄͳͷͰͳ͍͔ ͖ͬ͞ͷൃද
ʮ༷ʯΛςετίʔυʹදݱ͢Δ w Βͳ͍ίʔυΛಡΉ࣌ʹςετίʔυ͕͋Δͱ ʮͳʹΛΧόʔ͍ͯ͠Δ͔ʯ͕͙͢ʹΘ͔ͬͯྑ͍ w ͭ·ΓɺʮͳʹΛΧόʔ͍ͯ͠Δ͔ʯΛ త֬ʹࣔ͢ΞαʔγϣϯΛॻ͘͜ͱ͕େࣄ
දݱํ๏ʹʮ͍ۙʯͱʮԕ͍ʯ͕͋Δ w ۙ͗͢ΔͱzِཅੑzͬΆ͘ͳΔ͠ ԕ͗͢ΔͱzِӄੑzͬΆ͘ͳΔ🧐 w ৄ͘͠ˠ
༷Λදݱͨ͠ྑ͍ڑײͷ ςετίʔυΛॻͨ͘Ίʹʜ ͲΜͳ"TTFSUJPO͕͋Δ͔Λ ͓ͬͯ͘ͷ͕େࣄ🙌
༷Λදݱͨ͠ྑ͍ڑײͷ ςετίʔυΛॻͨ͘Ίʹʜ ͲΜͳ"TTFSUJPO͕͋Δ͔Λ ͓ͬͯ͘ͷ͕େࣄ🙌
͍ͬͯ͘ʂ ͋͢ΈΊ ͜͜·ͰͰ
͓͠ͳ͕͖ ʮదʹʯۙ͘͢Δ ʮͪΐͬͱԕΊʹʯྻΛΈΔ BTTFSU&RVBMT
ʮదʹʯۙ͘͢Δ
ʮదʹʯۙ͘͢Δ w ʮͦΕBTTFSU4BNFΑΓదͳͷ͋Δ͔ʂ🧐ʯ w ࢥߟͷखΛݮΒͯ͠ʮదʹʯ͍ۙͯ͘͘͠
ʮBTTFSU4BNFʯΛ͏ͱʜ Կ͔͕ʮಉ͡ʯͩͳʙ ͱԿ͔͕ಉͩ͡ͳʙ ͳʹ͔ΛDPVOUͯ͠Δͧ BDUVBM͔ʂ
ʮBTTFSU$PVOUʯΛ͏ͱ‼ Կ͔͕ʮಉ͡ʯͩͳʙ ͱԿ͔͕ಉͩ͡ͳʙ BDUVBM͔ʂ
ʮࢥߟͷखʯ͕ݮΔײ͡ ՄಡੑŗşƄŗşƄ
ʮࢥߟͷखʯΛݮΒͧ͢ʂू
ʮࢥߟͷखʯΛݮΒͧ͢ʂू
ʮࢥߟͷखʯΛݮΒͧ͢ʂू BTTFSU4BNFΑΓ Ҿ͕ݮͬͨΓ͢Δ Ϩϐʔ😘
ʮࢥߟͷखʯΛݮΒ͢ڧྗͳڠྗऀ w 3FDUPS͕ஔ͖͑ͯ͘ΕͨΓ w IUUQTHJUIVCDPNSFDUPSQIQSFDUPSQIQVOJUCMPCNBJOSVMFT $PEF2VBMJUZ3FDUPS.FUIPE$BMM"TTFSU1SPQFSUZ&YJTUT3FDUPSQIQ w 1)14UPSN͕ࢦఠͯ͘͠ΕͨΓ w IUUQTXXXKFUCSBJOTDPNIFMQQIQTUPSNQIQBTTFSUJPODBOCF
SFQMBDFEXJUIBTTFSUFNQUZBTTFSUOPUFNQUZIUNM w 1)14UBO͕ࢦఠͯ͘͠ΕͨΓ w IUUQTHJUIVCDPNQIQTUBOQIQTUBOQIQVOJU
ʢ༨ஊʣ NFTTBHF͔͍ͯ·͔͢ʁʁ͔͖·͠ΐ͏ʂʂ खͬऔΓૣ͘ʮਖ਼͘͠ͳ͍ʯΛ ͑ΒΕͯՄಡੑŗşƄŗşƄɻ ͋͢ΈΊ ͜͜·ͰͰ
ʮͪΐͬͱԕΊʹʯ ྻΛΈΔ
BTTFSU4BNFͰશ෦ݟΔͱ ͪΐͬͱۙ͗͢Δ͕࣌͋Δ
BTTFSU4BNFͰશ෦ݟΔͱ ͪΐͬͱۙ͗͢Δ͕࣌͋Δ શ෦Λ͔֬Ί͍ͨ Θ͚͡Όͳ͍ Μ͚ͩͲͳ͊
BTTFSU4BNFͰશ෦ݟΔͱ ͪΐͬͱۙ͗͢Δ͕࣌͋Δ શ෦Λ͔֬Ί͍ͨ Θ͚͡Όͳ͍ Μ͚ͩͲͳ͊ BTTFSU4BNF͏ͱ ͔֬Ί͍ͨ͜ͱ͕ ϘϠ͚Δͳ͊
BTTFSU4BNFͰશ෦ݟΔͱ ͪΐͬͱۙ͗͢Δ͕࣌͋Δ શ෦Λ͔֬Ί͍ͨ Θ͚͡Όͳ͍ Μ͚ͩͲͳ͊ BTTFSU4BNF͏ͱ ͔֬Ί͍ͨ͜ͱ͕ ϘϠ͚Δͳ͊ େ͕খΛ ݉Ͷͳ͍
ʮͪΐͬͱԕΊʯ͔ΒΈͯ ͪΐ͏Ͳ͍͍࣌͋Δ
Έ͍ͨͱ͜Ζ͚ͩɺΈΔʂ
BTTFSU"SSBZ)BT,FZ ʮͪΐͬͱԕΊʯ͔ΒྻΛΈΔू *UFSBCMFʢྻʣʹࢦఆͷΩʔ͕͋Δ͔
BTTFSU$POUBJOT ʮͪΐͬͱԕΊʯ͔ΒྻΛΈΔू *UFSBCMFʢྻʣͷதʹࢦఆͷཁૉ͕͋Δ͔
BTTFSU$POUBJOT0OMZ ʮͪΐͬͱԕΊʯ͔ΒྻΛΈΔू *UFSBCMFʢྻʣͷཁૉ͕ࢦఆͷܕͷΈ͔
BTTFSU$POUBJOT 0OMZ*OTUBODF0G ʮͪΐͬͱԕΊʯ͔ΒྻΛΈΔू *UFSBCMFʢྻʣͷཁૉ͕ ͯ͢ࢦఆͷΦϒδΣΫτ͔
ਖ਼͍͠ڑײΛߟ͑ͯ ΞαʔγϣϯΛબ΅͏ ͋͢ΈΊ ͜͜·ͰͰ
BTTFSU&RVBMT
Α͘ฉ͖·͢ΑͶɺίϨɻ
Α͘ฉ͖·͢ΑͶɺίϨɻ
Α͘ฉ͖·͢ΑͶɺίϨɻ ཁʮΏΔ͍ൺֱʯͱʮ͖͍ͭൺֱʯ
͏Ұาઌ
ʮΏΔ͍ʯํ͕خ͍࣌ͬͯ͠ͳ͍Ͱ͔͢ʁ
ʮΏΔ͍ʯํ͕خ͍࣌ͬͯ͠ͳ͍Ͱ͔͢ʁ wΦϒδΣΫτ wྻ
BTTFSU&RVBMTͱΦϒδΣΫτ
BTTFSU&RVBMTͱΦϒδΣΫτ ˡམͪΔ
BTTFSU&RVBMTͱΦϒδΣΫτ ˡམͪΔ ˡམͪͳ͍
BTTFSU&RVBMTͱΦϒδΣΫτ wΦϒδΣΫτಉ࢜ͷൺֱ ͩͱBTTFSU&RVBMTͷํ͕ خ͍͠ w͜Μͳײ͡ͷʮخ͍͠ʯ ৭ʑ୳͍ͬͯ͘Ρʂʂʂ
BTTFSU&RVBMTͱ࿈ྻ
BTTFSU&RVBMTͱ࿈ྻ ˡམͪΔ
BTTFSU&RVBMTͱ࿈ྻ ˡམͪΔ ˡམͪͳ͍
BTTFSU&RVBMTͱ࿈ྻ
BTTFSU&RVBMTͱ࿈ྻ w ࿈ྻͷॱ൪ w Ωʔͷॱ൪Λؾʹͤͣʹ Ξαʔγϣϯ͍ͨ࣌͠ʹ͑Δ w ʮॱ൪ʹڵຯͳ͍Ͱ͢Αʯ
ͬͯ࣌ʹબ͢Δ
ఴࣈྻͷ߹
ఴࣈྻͷ߹ ˡམͪΔ
ఴࣈྻͷ߹ ˡམͪΔ ˡམͪΔ
ఴࣈྻͷ߹ ŪƄŖţſ
ఴࣈྻͷ߹ 🤩🤩🤩
ఴࣈྻͷ߹ BTTFSU&RVBMT $BOPOJDBMJ[JOH ྻͷཁૉ͕ಉ͡Ͱ͋Δ͔Ͳ͏͔Λݕূɺ ॱংΛແࢹͯ͠ൺֱ
ఴࣈྻͷ߹ BTTFSU&RVBMT $BOPOJDBMJ[JOH ྻͷཁૉ͕ಉ͡Ͱ͋Δ͔Ͳ͏͔Λݕূɺ ॱংΛແࢹͯ͠ൺֱ நग़ॲཧͰ ࣃൈ͚ʹͳͬͨྻ ͱ͔ʹศར
"QQFOEJY 1)16OJU͕͘Δ🚀
"QQFOEJY1)16OJU͕͘Δ🚀 w 5FTU%PVCMFT w 1)16OJUͰTPGUEFQSFDBUFEʹͳͬͨςετελϒͱϞοΫΦϒδΣΫτ ؔ࿈ͷϝιου͕IBSEEFQSFDBUFEʹʢ1)16OJUͰআʣ w .FUBEBUB w EPDίϝϯτͰॻ͍͍ͯͨςετΞ
ϊςʔγϣϯ͕EFQSFDBUFEʹ ʢ1)16OJUͰআʣ w "UUSJCVUFͰॻ͜͏ͳʂʂʂ w NPSFIUUQTQIQVOJUEFBOOPVODFNFOUTQIQVOJUIUNM
śŭŭŸ1)16OJU֓ʢ͞Μʣ ίϨͱ߹Θͤͯ 1)16OJUͷ DIBOHFMPHΛݟΔͱ ྲྀΕ͕Θ͔ͬͯ ໘ന͍👏
·ͱΊ·͢ʂ
wʮԕۙײ͕ŘŘײ͡ʯͷΞαʔγϣϯΛॻ͘ͱ ಡΈ͍͢ςετίʔυʹͳΔϤ wͬͯ͐ʙͷ͔Β৭ʑհ͖ͯ͠·ͨ͠
ʮదʹʯۙ͘͢Δ
wBTTFSU$PVOU wBTTFSU5SVF BTTFSU'BMTF wBTTFSU/VMM wBTTFSU&NQUZ ʮదʹʯۙ͘͢Δ
ʮԕۙײʯΛେࣄʹ͢Δ
wBTTFSU&RVBMTΛ͏બ wʮԕۙײʯͷදݱํ๏ ʮԕۙײʯΛେࣄʹ͢Δ ԕ͍ ͍ۙ BTTFSU&RVBMT $BOPOJDBMJ[JOH BTTFSU&RVBMT BTTFSU$POUBJOT
ܥ ˞Πϝʔδਤ
wBTTFSU&RVBMTΛ͏બ wʮԕۙײʯͷදݱํ๏ ʮԕۙײʯΛେࣄʹ͢Δ ԕ͍ ͍ۙ BTTFSU&RVBMT $BOPOJDBMJ[JOH BTTFSU&RVBMT BTTFSU$POUBJOT
ܥ ˞Πϝʔδਤ
wʮ*.0ʯͰ͢ʂ wͲͷબΛ͢Δ͔Έ͔ͳ🥺 wʮͦΕΛzબz͍ͯ͠Δཧ༝ʯ͕ νʔϜͷڞ௨ೝࣝͱͯ͠ங͚͍ͯͨΒśŖſśŖşŖ‼
Ҿ͖ग़͠Λ૿ͯ͠ ϝνϟɾΧΠςΩɾςετϥΠϑ ΛૹΖ͏ʂ
🍊͓ΘΓ🍊 Έͯ͘ΕͯŗžŜƄŪŤƃŝœŖ😘