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
PHPUnitの「Depends」を使うと次のテストに返り値を渡せるの、なんで?読むぞ! #p...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
asumikam
April 11, 2026
Programming
71
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PHPUnitの「Depends」を使うと次のテストに返り値を渡せるの、なんで?読むぞ! #phpcon_odawara
PHPカンファレンス小田原 2026
https://phpcon-odawara.jp/ja/2026/
asumikam
April 11, 2026
More Decks by asumikam
See All by asumikam
「嘘をつくテスト」の失敗例から学ぶ 良いテストコード #frontend_phpcon_do
asumikam
0
730
Harnessing the Power of Mocks and Stubs in PHPUnit / #laravellivejp
asumikam
0
1k
委員長たちの「コシ」
asumikam
0
450
書籍「ユーザーストーリーマッピング」が私のバイブル
asumikam
4
590
「通るまでRe-run」から卒業!落ちないテストを書く勘所
asumikam
3
1.1k
PHPコミュニティのあるきかた & ちいさく PHPUnitをつくってみる / Tech Challenge Party 2026
asumikam
0
150
ubuntu-latest から ubuntu-slim へ移行しよう!コスト削減うれしい~!
asumikam
0
1.3k
ちいさくPHPUnitをつくり、仕組みと拡張ポイントを探る
asumikam
3
1.2k
ちいさくPHPUnitをつくってみる
asumikam
0
140
Other Decks in Programming
See All in Programming
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
210
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
140
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
160
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
13k
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
370
Webフレームワークの ベンチマークについて
yusukebe
0
170
AIだと陥りがちなJakarta EE最新技術への移行時の落とし穴と解決策
tnagao7
0
110
Contextとはなにか
chiroruxx
1
330
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
11
5.9k
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.2k
Oxcを導入して開発体験が向上した話
yug1224
4
320
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
210
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
440
Code Review Best Practice
trishagee
74
20k
Why Our Code Smells
bkeepers
PRO
340
58k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
170
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
580
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
Transcript
1)16OJUͷʮ%FQFOETʯΛ͏ͱ ࣍ͷςετʹฦΓΛͤΔͷɺͳΜͰʁ ಡΉͧʂ BTVNJLBN
1)16OJUͷ"UUSJCVUFT
w 1)16OJUҎ߱ɺ%PDίϝϯτʹهड़͢Δํ๏͔Β 1)1ͷ"UUSJCVUFͱஈ֊తʹҠߦ͖ͯͨ͠ w Έͳ͞Μͷ͓ؾʹೖΓͷ1)16OJU"UUSJCVUFTͳΜͰ ͔͢ʁ 1)16OJUͷ"UUSJCVUFɺ৭ʑͬͯΔʁ
ͨͱ͑ɺ%BUB1SPWJEFSɻ
ͨͱ͑ɺ5FTU8JUIɻ
ͨͱ͑ɺ(SPVQɻ WFOEPSCJOQIQVOJUHSPVQTMPX
ͨͱ͑ɺ%FQFOET
w ͋Δςετϝιου͕ผͷςετϝιουʹʮґଘʯ͠ ͍ͯΔ͜ͱΛએݴ͢Δ"UUSJCVUF w ґଘݩͷςετ͕ޭ͢Δͱɺґଘઌςετ͕࣮ߦ͞Ε ͞ΒʹґଘݩͷฦΓ͕ґଘઌͷҾͱͯ͠͞ΕΔ w ࣦഊͨ͠߹ґଘઌͷςετʮ4ʢεΩοϓʣʯ ʹͳΔ 1)16OJU"UUSJCVUFT%FQFOET
1)16OJU"UUSJCVUFT%FQFOET
1)16OJU"UUSJCVUFT%FQFOET ґଘઌςετ
1)16OJU"UUSJCVUFT%FQFOET ґଘݩςετ͕ޭ͢Ε ґଘઌςετ͕࣮ߦ͞ΕΔ
1)16OJU"UUSJCVUFT%FQFOET ґଘݩςετ͕ࣦ͠ഊͨ͠Βɺ ͜ͷςετશମ͕ߦΘΕͳ͍
1)16OJU"UUSJCVUFT%FQFOET ͔͠ɺґଘݩͷσʔλΛड͚औΕΔʂ ʢ%FUB1SPWJEFSΈ͍ͨͩͳ🧐ʣ
ͳΜͰʁ
ؾʹͳΔʂʂʂ
ಡΉͧʂ
ࠓͷൃද w %FQFOET͕ͲΜͳΈͰಈ͍͍ͯΔ͔Λ ίʔυϦʔσ Οϯάͯ͠શʹཧղ͢Δ w %FQFOETͷ͍Ͳ͜Ζʁ
ਃ͠Ε·ͨ͠ w͋͢Έ 𝕏 !BTVNJLBN wגࣜձࣾϦϯέʔδ w1)1ΧϯϑΝϨϯεখాݪ࣮ߦҕһ
ಡΉͧ
w ಡΈ·ͨ͠ w αϚϦʔͱ͓ͯ͠ಧ͚͠·͢ w ग़ͯ͘ΔίʔυҙਤΛ͑ΔͨΊ؆қԽ͍ͯ͠Δͷ Ͱ࣮ࡍͷͷͱҟͳΓ·͢ ಡΉͧ ಡΉͧ
ͬ͘͟Γʙͷߏ "UUSJCVUFΛࢀߟʹςετΛฒͼସ͑Δ ґଘؔνΣοΫɾॲཧ ςετ࣮ߦ ฦΓͷ֨ೲ લॲཧ ࣮ॲཧ ಡΉͧ
ͬ͘͟Γʙͷߏ "UUSJCVUFΛࢀߟʹςετΛฒͼସ͑Δ ґଘؔνΣοΫɾॲཧ ςετ࣮ߦ ฦΓͷ֨ೲ લॲཧ ࣮ॲཧ ಡΉͧ
"UUSJCVUFΛࢀߟʹςετΛฒͼସ͑Δ > UFTU UFTU UFTU <%FQFOET bUFTU > ಡΉͧ
"UUSJCVUFΛࢀߟʹςετΛฒͼସ͑Δ > UFTU UFTU UFTU <%FQFOET bUFTU > > UFTU
UFTU UFTU ಡΉͧ
w <%FQFOET>Λ3F fl FDUJPOͰಡΈऔΓɺʮͲͷςετ͕ Կʹґଘ͍ͯ͠Δ͔ʯΛ෦දݱʹม͢Δ w ֤ςετʹʮࣗΑΓઌʹޭ͍ͯ͠ͳ͚ΕͳΒͳ͍ ςετͷϦετʯΛ࣋ͨͤΔ w ͦͷϦετΛͱʹɺґଘݩ͕ඞͣઌʹདྷΔΑ͏࣮ߦ
ॱΛΈସ͑Δ "UUSJCVUFΛࢀߟʹςετΛฒͼସ͑Δ ಡΉͧ
ͬ͘͟Γʙͷߏ "UUSJCVUFΛࢀߟʹςετΛฒͼସ͑Δ ςετ࣮ߦલ ςετ࣮ߦ ςετ࣮ߦޙ લॲཧ ࣮ॲཧ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFIBOEMF%FQFOEFODJFT ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFIBOEMF%FQFOEFODJFT ґଘ͕ಛʹͳ͍߹Կ͠ͳ͍ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFIBOEMF%FQFOEFODJFT ґଘϦετΛ͙Δ͙Δ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFIBOEMF%FQFOEFODJFT ࠓ·ͰͷޭςετϦετΛΈͯ ΤϥʔʗεΩοϓॲཧ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFIBOEMF%FQFOEFODJFT ޭͨ͠ςετͷSFUVSO7BMVFΛऔಘ EFQFOEFODZ*OQVUʹ֨ೲ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFIBOEMF%FQFOEFODJFT ޭͨ͠ςετͷSFUVSO7BMVFΛऔಘ EFQFOEFODZ*OQVUʹ֨ೲ ˣ͍ͭೖΕ͔ͨ·ͩΘ͔Βͳ͍Ͷ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFIBOEMF%FQFOEFODJFT ޭͨ͠ςετͷSFUVSO7BMVFΛऔಘ EFQFOEFODZ*OQVUʹ֨ೲ ˢ͜ͷޙ͏ͷ͔ͳʁ ˣ͍ͭೖΕ͔ͨ·ͩΘ͔Βͳ͍Ͷ ಡΉͧ
ςετ࣮ߦલɺԿΛ͍ͯ͠Δʁ w ґଘݩͷςετ͕ͯ͢ޭࡁΈ͔Λ֬ೝ͢Δ w શ෦ޭ͍ͯ͠ΕςετͷҾΛ४උ͢Δ w ҰͭͰະޭͳΒςετεΩοϓ͞ΕΔ w SFUVSO7BMVF EFQFOEFODZ*OQVUʁ🧐
w ࣍ͷॲཧ(0 ಡΉͧ
ͬ͘͟Γʙͷߏ "UUSJCVUFΛࢀߟʹςετΛฒͼସ͑Δ ςετ࣮ߦલ ςετ࣮ߦ ςετ࣮ߦޙ લॲཧ ࣮ॲཧ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFSVO5FTU ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFSVO5FTU EFQFOEFODZ*OQVUΛҾʹ JOWPLF5FTU.FUIPE࣮ߦʂ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFJOWPLF5FTU.FUIPE ςετέʔεͷݺͼग़͠ʙʙʂʂʂ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFJOWPLF5FTU.FUIPE ςετέʔεͷݺͼग़͠ʙʙʂʂʂ UFTU3FTVMUΛฦ͍ͯ͠Δɻ͏ͷ͔ʂʁ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFSVO5FTU ͪͳΉͱʜ UIJTEBUBʹEBUB1SPWJEFSͷ͕ ೖ͍ͬͯͨʂ ಡΉͧ
w ґଘݩςετʢͳͲʣͷฦΓΛ݁߹ͯ͠ҾΛΈ ཱͯɺςετϝιουΛݺͼग़͢ w UFTU3FTVMUʁ🧐 w ࣍ͷॲཧ(0 ςετ࣮ߦ࣌ɺԿΛ͍ͯ͠Δʁ ಡΉͧ
ͬ͘͟Γʙͷߏ "UUSJCVUFΛࢀߟʹςετΛฒͼସ͑Δ ςετ࣮ߦલ ςετ࣮ߦ ςετ࣮ߦޙ લॲཧ ࣮ॲཧ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTF SVO#BSF 1)16OJUa5FTU3VOOFSa5FTU3FTVMUa1BTTFE5FTUT UFTU.FUIPE1BTTFE ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTF SVO#BSF 1)16OJUa5FTU3VOOFSa5FTU3FTVMUa1BTTFE5FTUT UFTU.FUIPE1BTTFE ฦΓΛड͚औͬͯ UFTU.FUIPE1BTTFEʹ͠ʜ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTF SVO#BSF 1)16OJUa5FTU3VOOFSa5FTU3FTVMUa1BTTFE5FTUT UFTU.FUIPE1BTTFE ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTF SVO#BSF 1)16OJUa5FTU3VOOFSa5FTU3FTVMUa1BTTFE5FTUT UFTU.FUIPE1BTTFE SFUVSO7BMVFʹ֨ೲ͍ͯ͠Δʂ ʢIBOEMF%FQFOEFODJFTͰΈͨͭʙʙʣ ಡΉͧ
w ฦΓΛϓϩηεશମͰڞ༗͞ΕΔྖҬʹอଘ͢Δ w ޙଓͷґଘςετ͜͜Λࢀরͯ͠ҾΛड͚औΔ ςετ࣮ߦޙɺԿΛ͍ͯ͠Δʁ ಡΉͧ
શʹཧղͨ͠ ಡΉͧ
શମͷ·ͱΊ w ʮલॲཧʯͰ͏·͍͜ͱฒͼସ͑ͯ w ʮ࣮ॲཧʯʢςετέʔεʣͰલͷSFUVSO7BMVFΛ ͏·͍͜ͱςετʹ͍ͯͨ͠ w ͏͚࣌ͩอ࣋͢ΔͰͳ͘ৗʹSFUVSO7BMVFΛ͢ w ಡΜͰΈΕʮͦ͏ͳͬͨΒͦ͏ͳΔΖʯͳॲཧͩͬͨ
w ͜ΕͰεοΩϦΕ·͢ ಡΉͧ
%FQFOETʹ͍ΛͤΔ
͍
͍ॴΉ͍ͣʂ ʢਖ਼ʣ
w ศརͦ͏ͱࢥ͍ͭͭ w ςετجຊʮಠཱʯͷํ͕خ͍͠ w ґଘؔΛ࡞Δͱࣦഊ͕࿈తͳεΩοϓΛੜΜͩΓɺ ҉ͷ࣮ߦॱং੍͕ੜ·ΕͨΓ͢Δ w ͨͩ͠ɺηοτΞοϓίετ͕ߴ͍ૢ࡞ɺঢ়ଶͷมભΛ εςοϓ͝ͱʹݕূ͍ͨ͠໘Ͱ༗ޮ͔ʁ
1)16OJUͷ%FQFOETʹ͍ΛͤΔ
None
None
৭ʑ͋Γͦ͏ʂ
%FQFOET༗ޮ׆༻͍ͯ͠Δਓ ৭ʑڭ͍͑ͯͩ͘͞ʂ
🍊͓ΘΓ🍊 Έͯ͘ΕͯŗžŜƄŪŤƃŝœŖ😘