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
2k
読みやすいテストコードへの一歩、適切な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
東京Ruby会議12 vs PHPカンファレンス小田原〜オーガナイザーが語る見所と裏側〜
asumikam
0
34
PHPUnitでモックとスタブを使いこなす / PHP Conference Japan 2024
asumikam
2
940
紅白ぺぱ合戦 asumikam LT #cohackpp
asumikam
0
150
『こわい』を 『こわくない』に変える ~OSS貢献編~
asumikam
2
270
「PHPカンファレンス小田原」がつくる世界
asumikam
4
300
逆ポーランド記法とpreg_match_all
asumikam
2
830
キョムリリースをやめて、プロダクトと向き合う!
asumikam
10
5k
「PHPカンファレンス小田原2024」を実行委員長がふりかえる
asumikam
2
2k
PHPカンファレンス小田原2024 オープニング
asumikam
1
1.5k
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Practical Orchestrator
shlominoach
186
10k
Rails Girls Zürich Keynote
gr2m
94
13k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
A designer walks into a library…
pauljervisheath
205
24k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Unsuck your backbone
ammeep
669
57k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Designing for humans not robots
tammielis
250
25k
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͍ͯ͠Δཧ༝ʯ͕ νʔϜͷڞ௨ೝࣝͱͯ͠ங͚͍ͯͨΒśŖſśŖşŖ‼
Ҿ͖ग़͠Λ૿ͯ͠ ϝνϟɾΧΠςΩɾςετϥΠϑ ΛૹΖ͏ʂ
🍊͓ΘΓ🍊 Έͯ͘ΕͯŗžŜƄŪŤƃŝœŖ😘