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
990
責務と認知負荷を整える! 抽象レベルを意識した関心の分離
yahiru
11
2.4k
さいきょうのレイヤードアーキテクチャについて考えてみた
yahiru
3
1k
フロントエンドエンジニアも知っておきたい HTTP/3 で変わること
yahiru
16
13k
ゆるふわCQRS入門
yahiru
2
690
設計におけるソリューションドメイン
yahiru
3
1.7k
PHPで始めるGitHub Actions
yahiru
1
790
入門ミューテーションテスト/ A bigginer's guide to Mutation testing
yahiru
0
1.5k
Eloquentに別れを告げるタイミングについて考えた
yahiru
2
2k
Other Decks in Programming
See All in Programming
HTMLの品質ってなんだっけ? “HTMLクライテリア”の設計と実践
unachang113
4
2.7k
そのAPI、誰のため? Androidライブラリ設計における利用者目線の実践テクニック
mkeeda
2
260
TDD 実践ミニトーク
contour_gara
1
290
Amazon RDS 向けに提供されている MCP Server と仕組みを調べてみた/jawsug-okayama-2025-aurora-mcp
takahashiikki
1
110
アプリの "かわいい" を支えるアニメーションツールRiveについて
uetyo
0
220
Android 16 × Jetpack Composeで縦書きテキストエディタを作ろう / Vertical Text Editor with Compose on Android 16
cc4966
0
170
知っているようで知らない"rails new"の世界 / The World of "rails new" You Think You Know but Don't
luccafort
PRO
1
100
GitHubとGitLabとAWS CodePipelineでCI/CDを組み比べてみた
satoshi256kbyte
4
210
How Android Uses Data Structures Behind The Scenes
l2hyunwoo
0
400
Navigation 2 を 3 に移行する(予定)ためにやったこと
yokomii
0
130
Namespace and Its Future
tagomoris
6
700
さようなら Date。 ようこそTemporal! 3年間先行利用して得られた知見の共有
8beeeaaat
3
1.4k
Featured
See All Featured
Statistics for Hackers
jakevdp
799
220k
Embracing the Ebb and Flow
colly
87
4.8k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Site-Speed That Sticks
csswizardry
10
810
Building Flexible Design Systems
yeseniaperezcruz
328
39k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
The Invisible Side of Design
smashingmag
301
51k
Context Engineering - Making Every Token Count
addyosmani
1
30
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.1k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
13k
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 ͢Δ
ɾΧόϨοδશମͷதͰ͜Ε͚ͩͷίʔυ͕ςετதʹ ࣮ߦ͞Ε·ͨ͠Αͱ͍͏ࣄ࣮Ͱ͔͠ͳ͍ ɾͦΕҎ্ͷҙຯΛݟग़͢ͷςετίʔυͷ࣭ΛධՁͰ ͖ͳ͍ݶΓඍົ ɾઌ΄ͲͷۃͳྫͷΑ͏ʹΞϓϦέʔγϣϯͷ࣭ʹҰ ߩݙ͠ͳ͍··ΧόϨοδΛ͋͛Δ͜ͱͰ͖Δ ࣄ࣮ͱਪ ΧόϨοδຊʹ༗ޮͳࢦඪͳͷ͔