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.7k
5ヶ月でカバレッジを20%から90%にあげた話
y_ahiru
December 01, 2019
Tweet
Share
More Decks by y_ahiru
See All by y_ahiru
恣意性から考える、変更に強いモデルの作り方
yahiru
1
780
責務と認知負荷を整える! 抽象レベルを意識した関心の分離
yahiru
10
2.2k
さいきょうのレイヤードアーキテクチャについて考えてみた
yahiru
3
940
フロントエンドエンジニアも知っておきたい HTTP/3 で変わること
yahiru
16
13k
ゆるふわCQRS入門
yahiru
2
660
設計におけるソリューションドメイン
yahiru
3
1.7k
PHPで始めるGitHub Actions
yahiru
1
770
入門ミューテーションテスト/ A bigginer's guide to Mutation testing
yahiru
0
1.5k
Eloquentに別れを告げるタイミングについて考えた
yahiru
2
2k
Other Decks in Programming
See All in Programming
AIエージェントはこう育てる - GitHub Copilot Agentとチームの共進化サイクル
koboriakira
0
470
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
230
Result型で“失敗”を型にするPHPコードの書き方
kajitack
4
530
エラーって何種類あるの?
kajitack
5
320
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
2
410
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
1
710
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
230
AIコーディング道場勉強会#2 君(エンジニア)たちはどう生きるか
misakiotb
1
270
Benchmark
sysong
0
280
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
520
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
240
DroidKnights 2025 - 다양한 스크롤 뷰에서의 영상 재생
gaeun5744
3
330
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Speed Design
sergeychernyshev
32
1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
800
Visualization
eitanlees
146
16k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Agile that works and the tools we love
rasmusluckow
329
21k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.8k
Unsuck your backbone
ammeep
671
58k
Stop Working from a Prison Cell
hatefulcrawdad
270
20k
Six Lessons from altMBA
skipperchong
28
3.9k
Gamification - CAS2011
davidbonilla
81
5.3k
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 ͢Δ
ɾΧόϨοδશମͷதͰ͜Ε͚ͩͷίʔυ͕ςετதʹ ࣮ߦ͞Ε·ͨ͠Αͱ͍͏ࣄ࣮Ͱ͔͠ͳ͍ ɾͦΕҎ্ͷҙຯΛݟग़͢ͷςετίʔυͷ࣭ΛධՁͰ ͖ͳ͍ݶΓඍົ ɾઌ΄ͲͷۃͳྫͷΑ͏ʹΞϓϦέʔγϣϯͷ࣭ʹҰ ߩݙ͠ͳ͍··ΧόϨοδΛ͋͛Δ͜ͱͰ͖Δ ࣄ࣮ͱਪ ΧόϨοδຊʹ༗ޮͳࢦඪͳͷ͔