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
5ヶ月でカバレッジを20%から90%にあげた話
Search
y_ahiru
December 01, 2019
Programming
2
6.8k
5ヶ月でカバレッジを20%から90%にあげた話
y_ahiru
December 01, 2019
Tweet
Share
More Decks by y_ahiru
See All by y_ahiru
恣意性から考える、変更に強いモデルの作り方
yahiru
1
1k
責務と認知負荷を整える! 抽象レベルを意識した関心の分離
yahiru
10
2.5k
さいきょうのレイヤードアーキテクチャについて考えてみた
yahiru
3
1k
フロントエンドエンジニアも知っておきたい HTTP/3 で変わること
yahiru
16
13k
ゆるふわCQRS入門
yahiru
2
690
設計におけるソリューションドメイン
yahiru
3
1.7k
PHPで始めるGitHub Actions
yahiru
1
810
入門ミューテーションテスト/ A bigginer's guide to Mutation testing
yahiru
0
1.6k
Eloquentに別れを告げるタイミングについて考えた
yahiru
2
2k
Other Decks in Programming
See All in Programming
XP, Testing and ninja testing ZOZ5
m_seki
3
620
詳しくない分野でのVibe Codingで困ったことと学び/vibe-coding-in-unfamiliar-area
shibayu36
3
4.9k
Go言語の特性を活かした公式MCP SDKの設計
hond0413
1
230
Devvox Belgium - Agentic AI Patterns
kdubois
1
120
10年もののAPIサーバーにおけるCI/CDの改善の奮闘
mbook
0
810
NixOS + Kubernetesで構築する自宅サーバーのすべて
ichi_h3
0
640
私達はmodernize packageに夢を見るか feat. go/analysis, go/ast / Go Conference 2025
kaorumuta
2
540
なぜGoのジェネリクスはこの形なのか? Featherweight Goが明かす設計の核心
ryotaros
7
1.1k
PHPに関数型の魂を宿す〜PHP 8.5 で実現する堅牢なコードとは〜 #phpcon_hiroshima / phpcon-hiroshima-2025
shogogg
1
150
スマホから Youtube Shortsを見られないようにする
lemolatoon
27
31k
What's new in Spring Modulith?
olivergierke
1
140
コードとあなたと私の距離 / The Distance Between Code, You, and I
hiro_y
0
130
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Embracing the Ebb and Flow
colly
88
4.8k
KATA
mclloyd
32
15k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
53k
Faster Mobile Websites
deanohume
310
31k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Scaling GitHub
holman
463
140k
It's Worth the Effort
3n
187
28k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Transcript
PHP Conference Japan 2019 ٢ా͋ͻΔ (@strtyuu) ϲ݄ͰΧόϨοδΛ ͔Βʹͨ͠
ࣗݾհ ٢ా͋ͻΔ!TUSUZVV τΡΪϟολʔגࣜձࣾ 4PGUXBSF&OHJOFFS -BSBWFM+1$POGFSFODF ίΞελοϑ
ɾΧόϨοδ͋͛Δ͜ͱΛख์͠ʹਪ͢ΔͷͰ͋Γ ·ͤΜɻ ɾΧόϨοδඞͣ͠ΞϓϦέʔγϣϯͷ࣭ͱൺྫ͠ ·ͤΜɻ ⚠$BVUJPO
Ռൃද
$PWFSBHF 5FTUT
$PWFSBHF 5FTUT Min.t ϦϦʔε
$PWFSBHF 5FTUT PHP Conference Ԡื Min.t ϦϦʔε
$PWFSBHF 5FTUT PHP Conference Ԡื Min.t ϦϦʔε ࠾͞ΕΔ
ͳͥɺ ΧόϨοδΛ্͔͛ͨͬͨͷ͔
ɾؾܰʹίʔυͷमਖ਼͕͍ͨ͠ ɾίʔυϦʔσΟϯάͷίετΛԼ͍͛ͨ ΧόϨοδΛ্͔͛ͨͬͨཧ༝ ΧόϨοδΛ্͔͛ͨͬͨཧ༝
ɾΫϥε͕ͨͪΧδϡΞϧʹґଘ͍͋ͬͯ͠Δ ɾϑϨʔϜϫʔΫϨΠϠͷվળΛ͠ଓ͚͍͕ͨɺӨڹൣғ ͕ͱ͍ͯ ؾܰʹίʔυͷमਖ਼͕͍ͨ͠ ΧόϨοδΛ্͔͛ͨͬͨཧ༝
ɾΫϥε͕ͨͪΧδϡΞϧʹґଘ͍͋ͬͯ͠Δ ɾϑϨʔϜϫʔΫϨΠϠͷվળΛ͠ଓ͚͍͕ͨɺӨڹൣғ ͕ͱ͍ͯ ؾܰʹίʔυͷमਖ਼͕͍ͨ͠ ΧόϨοδΛ্͔͛ͨͬͨཧ༝ ɾӨڹൣғ͕Θ͔Βͣɺςετ࿙Ε͕ൃੜ͢ΔՄೳੑ͕͋ Δ
ɾ5PHFUUFSଓ͍͍ͯΔαʔϏε ɾྺ࢙తܦҢͷ͋Δίʔυવ͋Δ ίʔυϦʔσΟϯάͷίετΛԼ͍͛ͨ ΧόϨοδΛ্͔͛ͨͬͨཧ༝
ɾ5PHFUUFSଓ͍͍ͯΔαʔϏε ɾྺ࢙తܦҢͷ͋Δίʔυવ͋Δ ίʔυϦʔσΟϯάͷίετΛԼ͍͛ͨ ΧόϨοδΛ্͔͛ͨͬͨཧ༝ ɾಡΜͰ༷Λཧղ͢Δͷʹίετ͕ଟ͔͔͘Δ ɾαʔϏε͕ଓ͚ଓ͘΄ͲɺͦͷίετΛ͏ਓ͕ଟ͘ ͳΔ
ΧόϨοδΛ্͛ΔաఔͰ ͬͨ͜ͱ
ɾϧʔϧɾํܾΊ ɾςετڥͷඋ ɾFUD ΧόϨοδΛ্͛ΔաఔͰͬͨ͜ͱ ΧόϨοδΛ্͛ΔաఔͰͬͨ͜ͱ
ɾϧʔϧɾํܾΊ ɾςετڥͷඋ ɾFUD ΧόϨοδΛ্͛ΔաఔͰͬͨ͜ͱ ΧόϨοδΛ্͛ΔաఔͰͬͨ͜ͱ
ɾ·ͣ֎ଆ͔Βςετ͢Δ ɾϦϑΝΫλϦϯά࠷খݶʹɺςετΛॻ͘͜ͱΛ༏ઌ ɾʹΌʙΜΫϥεΛڐ͢ ϧʔϧɾํܾΊ ϧʔϧɾํܾΊ
ɾϒϥοΫϘοΫεςετͳΒɺ࣮ͷ࣭Λؾʹͤͣς ετͰ͖Δ͜ͱ͕ଟ͍ ɾΧόϨοδ͕Ք͗ͦ͢͏ ·ͣ֎ଆ͔Βςετ͢Δ ϧʔϧɾํܾΊ
ɾΨοπϦϦϑΝΫλϦϯάͯ͠Δͱ͕࣌ؒΓͳ͍ ɾઃܭϦϑΝΫλϦϯάܧଓͯ͠܁Γฦ͠ߦͳ͍ͬͯ ͘ͷ ɾ͍͖ͳΓᘳΛࢦ͢ͷͰͳ͘Ұาͣͭண࣮ʹਐΊͯ ͍͘ ɾᘳओٛμϝ ϦϑΝΫλϦϯά࠷খݶʹ ςετΛॻ͘͜ͱΛ༏ઌ ϧʔϧɾํܾΊ
ɾཧతͳϦϑΝΫλϦϯάͱ΄Ͳԕ͍͕ɺݱ࣮ͷ߹ ͔Β͍ͼͭͳܗͰଥڠͤ͟ΔΛ͑ͳ͔ͬͨΫϥε ɾϦϑΝΫλϦϯάͷաఔͰઈରʹൃੜ͢Δ ɾྑ͘ͳΔͨΊͷୈҰาͱͯ͠ड͚ೖΕΔ͔͠ͳ͍ ʹΌʙΜΫϥεΛ࡞Δ ςετڥͷඋ
ɾϧʔϧɾํܾΊ ɾςετڥͷඋ ɾFUD ΧόϨοδΛ্͛ΔաఔͰͬͨ͜ͱ ΧόϨοδΛ্͛ΔաఔͰͬͨ͜ͱ
ɾ؆୯ʹςετσʔλΛ࡞ΔΈΛ༻ҙ͢Δ ɾ؆୯ʹ݁߹ςετΛͰ͖ΔΈΛ༻ҙ͢Δ ɾςετͷ࣮ߦΛૣ͘͢Δ ɾάϩʔόϧϔϧύʔΛϞοΫͰ͖ΔΑ͏ʹ͢Δ ςετڥͷඋ ςετڥͷඋ
ɾ؆୯ʹςετσʔλΛ࡞ΔΈΛ༻ҙ͢Δ ɾ؆୯ʹ݁߹ςετΛͰ͖ΔΈΛ༻ҙ͢Δ ɾςετͷ࣮ߦΛૣ͘͢Δ ɾάϩʔόϧϔϧύʔΛϞοΫͰ͖ΔΑ͏ʹ͢Δ ςετڥͷඋ ςετڥͷඋ
؆୯ʹςετσʔλΛ࡞ΔΈΛ༻ҙ͢Δ ςετڥͷඋ ɾશίϯετϥΫλͳΫϥεͰɺ"DUJWF3FDPSEͰ ɺͲͪΒͰରԠͰ͖ΔΑ͏ʹ͍ͨ͠ ɾॊೈʹΛΈཱ͍ͯͨ ɾঢ়ଶͷ۩ମతͳΛநԽͰ͖ΔΑ͏ʹ͍ͨ͠
؆୯ʹςετσʔλΛ࡞ΔΈΛ༻ҙ͢Δ ςετڥͷඋ ɾશίϯετϥΫλͳΫϥεͰɺ"DUJWF3FDPSEͰ ɺͲͪΒͰରԠͰ͖ΔΑ͏ʹ͍ͨ͠ ɾॊೈʹΛΈཱ͍ͯͨ ɾঢ়ଶͷ۩ମతͳΛநԽͰ͖ΔΑ͏ʹ͍ͨ͠ ɾͪΐ͏Ͳྑ͍ϥΠϒϥϦ͕ݟ͔ͭΒͳ͍ɾɾɾɻ
࡞ͬͨ ςετڥͷඋ ࣗ༝ʹσϑΥϧτΛ ্ॻ͖Մೳ ঢ়ଶΛநԽ ࢦఆ͚ͨͩ͠࡞Ͱ͖Δ
ɾ؆୯ʹςετσʔλΛ࡞ΔΈΛ༻ҙ͢Δ ɾ؆୯ʹ݁߹ςετΛͰ͖ΔΈΛ༻ҙ͢Δ ɾςετͷ࣮ߦΛૣ͘͢Δ ɾάϩʔόϧϔϧύʔΛϞοΫͰ͖ΔΑ͏ʹ͢Δ ςετڥͷඋ ςετڥͷඋ
؆୯ʹ݁߹ςετΛͰ͖ΔΈΛ༻ҙ͢Δ ςετڥͷඋ ɾݱঢ়ͩͱ݁߹ςετ͕ॻ͖ʹ͍͘ ɾϑϨʔϜϫʔΫͷϥΠϑαΠΫϧ͝ͱςετ͕͍ͨ͠ ɾ%*ίϯςφͷఆٛͱ͔ؒతʹςετ͍ͨ͠
࡞ͬͨ ςετڥͷඋ
ɾ؆୯ʹςετσʔλΛ࡞ΔΈΛ༻ҙ͢Δ ɾ؆୯ʹ݁߹ςετΛͰ͖ΔΈΛ༻ҙ͢Δ ɾςετͷ࣮ߦΛૣ͘͢Δ ɾάϩʔόϧϔϧύʔΛϞοΫͰ͖ΔΑ͏ʹ͢Δ ςετڥͷඋ ςετڥͷඋ
ςετͷ࣮ߦΛૣ͘͢Δ ςετڥͷඋ ɾͨ͘͞Μςετͷ13Λग़͢ͷͰɺ$*ͳΔ͘ૣ͘ճͬ ͯ͘Εͨํ͕خ͍͠
ςετͷ࣮ߦΛૣ͘͢Δ ςετڥͷඋ ɾͨ͘͞Μςετͷ13Λग़͢ͷͰɺ$*ͳΔ͘ૣ͘ճͬ ͯ͘Εͨํ͕خ͍͠ ɾQDPWͰΧόϨοδΛܭଌ͢Δ
QDPWΛೖΕΔ ςετڥͷඋ ɾYEFCVHͱҧ͍ɺσόοάػೳ͕ͳ͘ΧόϨοδܭଌʹ ಛԽ͍ͯ͠ΔͨΊɺѹతʹ͘ϝϞϦফඅগͳ͍ ɾQIQECHΑΓૣ͍ Speed up PHPUnit Code
Coverage Analysis - Nicolas Cabot - Medium https://medium.com/@nicocabot/speed-up-phpunit-code-coverage-analysis-4e35345b3dad
QDPWΛೖΕΔ ςετڥͷඋ %PDLFSpMF ίϚϯυ
ɾ؆୯ʹςετσʔλΛ࡞ΔΈΛ༻ҙ͢Δ ɾ؆୯ʹ݁߹ςετΛͰ͖ΔΈΛ༻ҙ͢Δ ɾςετͷ࣮ߦΛૣ͘͢Δ ɾάϩʔόϧϔϧύʔΛϞοΫͰ͖ΔΑ͏ʹ͢Δ ςετڥͷඋ ςετڥͷඋ
ɾJT%FW CPPMΈ͍ͨͳͭ ɾ݅ذʹΘΕ͍ͯΔ άϩʔόϧϔϧύʔ ςετڥͷඋ
ɾJT%FW CPPMΈ͍ͨͳͭ ɾ݅ذʹΘΕ͍ͯΔ άϩʔόϧϔϧύʔ ςετڥͷඋ ɾڍಈΛม͑Δ͜ͱ͕ग़དྷͳ͍ ɾ݅ذͷ͏ͪύλʔϯ͔͠ςετग़དྷͳ͍
ςετڥͷඋ ͍ͨΔॴͰΘΕ͍ͯΔͷͰ શ෦ϦϑΝΫλϦϯά͢Δ༨༟ͳ͍ɾɾɾ
ςετڥͷඋ https://kunit.jp/archives/108 1)17$3͕DVSMؔΛͬऔΔํ๏ /&8(".&!LVOJU
ςετڥͷඋ
ςετڥͷඋ
ςετڥͷඋ ͜ΕɺͳΜͰग़དྷΔͷͰɾɾɾʁ
ςετڥͷඋ
ςετڥͷඋ Φεεϝ͠·ͤΜʂ ͝ར༻ࣗݾͰɾɾɾ
ͬͯΈͯͲ͏͔ͩͬͨ
ɾ͔͚ͨίετݟ߹ͬͨՌ͕ग़Δͷ͔ݱ࣌ͰΘ͔ Βͳ͍ ɾΓ͗ͨ͢ؾ͕͢ΔɺͦΕͧΕͷΞϓϦέʔγϣ ϯʹ߹ͬͨΧόϨοδͰे ɾΧόϨοδΛ͍͔͚Δͷඍົ ɾϩʔΧϧͷ1)1Λʹ্͛ͯΈͨΒɺखಈςετͰ ൃݟͰ͖ͳͦ͞͏ͳόάΛݟ͚ͭΔ͜ͱ͕ग़དྷͨ ɾϦϑΝΫλϦϯάΛ͢Δ͕ग़དྷ্͕ͬͨͱ͜Ζͳͷ ͰɺΉ͠Ζ͔͜͜Β͕ελʔτ ˋ·Ͱ্͛ͯΈͨײ
ͬͯΈͯͲ͏͔ͩͬͨ
$VSBUJPO$PNNVOJDBUJPO1MBUGPSN IUUQTUPHFUUFSDPN ·ͱΊΑ͏ɺ͋ͭ·Ζ͏
ΧόϨοδ ຊʹ༗ޮͳࢦඪͳͷ͔
ɾमਖ਼ʹର͢Δ҆શੑͷ߹͍Λࣔͯ͘͠ΕΔ ɾ࣭Λվળ͢ΔͨΊͷΩοΧέʹͳΔ ɾςετͷཏੑ͕ߴ͍͜ͱྑ͍͜ͱ ɾΧόϨοδΛຒΊΔͨΊͷςετͰόάʹؾ͚ͮΔ͜ͱ ͕͋Δ ༗ޮͷҙݟ ΧόϨοδຊʹ༗ޮͳࢦඪͳͷ͔
ɾΧόϨοδ͚ͩͰ࣭Λஅ͢Δͷ͍͠ ɾςετͷ࣭ͱؔͳ͍ ແޮͷҙݟ ΧόϨοδຊʹ༗ޮͳࢦඪͳͷ͔
ɾΧόϨοδΧόϨοδͰ͔͠ͳ͍ ɾΧόϨοδ͚ͩͰԿݴ͏͜ͱ͕Ͱ͖ͳ͍ ͷ݁ ΧόϨοδຊʹ༗ޮͳࢦඪͳͷ͔
ΧόϨοδ ্ςΫχοΫ
!DPEF$PWFSBHF*HOPSF
ແҙຯͳίʔυΛҰԯߦՃͯ͠ UIJTBTTFSU5SVF USVF ͢Δ
ɾΧόϨοδશମͷதͰ͜Ε͚ͩͷίʔυ͕ςετதʹ ࣮ߦ͞Ε·ͨ͠Αͱ͍͏ࣄ࣮Ͱ͔͠ͳ͍ ɾͦΕҎ্ͷҙຯΛݟग़͢ͷςετίʔυͷ࣭ΛධՁͰ ͖ͳ͍ݶΓඍົ ɾઌ΄ͲͷۃͳྫͷΑ͏ʹΞϓϦέʔγϣϯͷ࣭ʹҰ ߩݙ͠ͳ͍··ΧόϨοδΛ͋͛Δ͜ͱͰ͖Δ ࣄ࣮ͱਪ ΧόϨοδຊʹ༗ޮͳࢦඪͳͷ͔