Pepabo Tech Conference #13
!ISZTE3BJMTΞϓϦέʔγϣϯͷΞοϓσʔτେม
View Slide
ೖࣾ!ISZTE&$ࣄۀ෦αʔϏεج൫νʔϜIUUQTISZTEPSH
IUUQTISQFQBCPDPNJOUFSWJFX
αʔϏεج൫νʔϜͬͯ
ࠜݯతͰ͋Γɺղܾɾ࣮ݱํ๏͕Θ͔Βͳ͍Α͏ͳٕज़՝ʹऔΓΈɺ&$ࣄۀ෦ͷ࣍ͷͷΛࢧ͑Δɻ!LFODIBO
جຊઓུw%FWFMPQFS&YQFSJFODFͷ্w࣍ͷΛࢧ͑Δٕज़ͷࢿ
جຊઓུw%FWFMPQFS&YQFSJFODFͷ্w࣍ͷΛࢧ͑Δٕज़ͷࢿ"
%FWFMPQFS&YQFSJFODFͷ্ʁ
࠷ۙ͜Μͳ͜ͱΛ͍ͯ͠·͢wݴޠॲཧܥɺϑϨʔϜϫʔΫͷόʔδϣϯΞοϓwΤϥʔ௨ͱ͖߹͏
࠷ۙ͜Μͳ͜ͱΛ͍ͯ͠·͢wݴޠॲཧܥɺϑϨʔϜϫʔΫͷόʔδϣϯΞοϓwΤϥʔ௨ͱ͖߹͏ܧଓతʹߦ͏ͨΊͷΈͮ͘Γ#
͔͜͜Βຊ
3BJMTΞϓϦέʔγϣϯͷΞοϓσʔτେม
ͲΜͳΞϓϦέʔγϣϯʁwϓϥΠϕʔτͳ8FC"1*Λ୲wೖग़ྗ+40/wෳͷΞϓϦέʔγϣϯ͔Βࢀর
ͲΜͳঢ়گͳͷʁ$ bundle exec rake stats+----------------------+--------+--------+---------+---------+-----+-------+| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |+----------------------+--------+--------+---------+---------+-----+-------+| Controllers | 7140 | 5771 | 126 | 494 | 3 | 9 || Helpers | 104 | 86 | 0 | 14 | 0 | 4 || Jobs | 777 | 633 | 31 | 46 | 1 | 11 || Models | 25804 | 17165 | 386 | 1574 | 4 | 8 || Mailers | 501 | 407 | 16 | 40 | 2 | 8 || Javascripts | 479 | 375 | 0 | 53 | 0 | 5 || Libraries | 4927 | 4084 | 177 | 453 | 2 | 7 || Tasks | 164 | 143 | 0 | 0 | 0 | 0 || Config specs | 56 | 48 | 0 | 0 | 0 | 0 || Controller specs | 8095 | 6640 | 0 | 6 | 0 | 1104 || Decorator specs | 434 | 351 | 0 | 0 | 0 | 0 || Feature specs | 342 | 261 | 0 | 0 | 0 | 0 || Job specs | 1807 | 1497 | 0 | 0 | 0 | 0 || Lib specs | 6743 | 5685 | 0 | 0 | 0 | 0 || Mailer specs | 2733 | 2181 | 0 | 0 | 0 | 0 || Model specs | 48150 | 39211 | 0 | 4 | 0 | 9800 || Request specs | 26140 | 22135 | 0 | 0 | 0 | 0 || Serializer specs | 1278 | 752 | 0 | 0 | 0 | 0 || Uploader specs | 155 | 130 | 0 | 0 | 0 | 0 |+----------------------+--------+--------+---------+---------+-----+-------+| Total | 135829 | 107555 | 736 | 2684 | 3 | 38 |+----------------------+--------+--------+---------+---------+-----+-------+Code LOC: 28664 Test LOC: 78891 Code to Test Ratio: 1:2.84JNQMF$PWͰͷܭଌ݁Ռ
؆୯ʹͰ͖ͦ͏ʂ
ΞϓϦέʔγϣϯͷॴwෳσʔλϕʔεwෳ߹ओΩʔ
ΞϓϦέʔγϣϯͷॴwෳσʔλϕʔεwUIJBHPQSBEJPDUPQVTwෳ߹ओΩʔwDPNQPTJUFQSJNBSZLFZTDPNQPTJUF@QSJNBSZ@LFZT
ݸਓతͳؾ࣋ͪw3BJMTΞϓϦέʔγϣϯͲͷఔ͕ඪ४ػೳͰ࡞ΒΕ͍ͯΔ͔͕қʹ݁w֦ுతͳϥΠϒϥϦ͕ΘΕ͍ͯΔͱͦΕ͚ͩ֬ೝൣғɺྔ͕γϯϓϧʹ૿͑Δҹ
ҰํͰʜwϥΠϒϥϦΛར༻͍ͯ͠Δͱ͍͏ͷɺࣗલͰ֦ு͍ͯ͠Δͱ͍͏ύλʔϯͷ/ഒָ
Ξοϓσʔτͯ͠ΈΑ͏ʂ
UIJBHPQSBEJPDUPQVTw3BJMTܥͰෳσʔλϕʔεʹରԠͨ͜͠ͱ͋ͬͯ׆ಈ͕ԼՐʹwࢀߟIUUQTHJUIVCDPNUIJBHPQSBEJPDUPQVTwٯʹ͍͏ͱ3BJMTʹ͢ΕෆཁʹͳΔw3FBE8SJUF4QMJUUJOHͱ͓ͯͬͯ͠Γɺ͜Εඪ४ػೳͰ·͔ͳ͑Δ
'DPNQPTJUF@QSJNBSZ@LFZTw։ൃࠓ͞Ε͍ͯΔw3BJMTͷόʔδϣϯ͝ͱʹରԠόʔδϣϯ͕ଘࡏwҙͷόʔδϣϯʹରԠͨ͠ͷΛ͑ऴΘΓʂ
·͕͍ͪ
Ξοϓσʔτͯ͠Έ͚ͨͲʜwBMJBT@BUUSJCVUFΛղܾͰ͖ͳ͍wΞοϓσʔτͷલޙͰൃߦ͞ΕΔΫΤϦʹҧ͍͕ग़Δ
BMJBT@BUUSJCVUFͬͯʁwҙͷଐੑΛผͷ໊લͰѻ͑ΔΑ͏ʹ͢Δػೳw IUUQTBQJSVCZPOSBJMTPSHDMBTTFT"DUJWF.PEFM"UUSJCVUF.FUIPET$MBTT.FUIPETIUNM
BMJBT@BUUSJCVUFΛ͏ཧ༝wΧϥʔϛʔγϣοϓҎ্ͷྺ࢙Λ࣋ͭαʔϏεw࣌ͷɺϑϨʔϜϫʔΫʢ3BJMTʣʹԊͬͨσʔλϞσϧͷઃܭ͕Ͱ͖͍ͯͳ͍Օॴ͕ଘࡏ͍ͯ͠Δwͦ͜Λٵऩ͠ɺ୭͕ѻ͍͍͢Ϟσϧʹ͢ΔͨΊʹBMJBT@BUUSJCVUFΛ͏wΞϓϦέʔγϣϯͱσʔλʹ͓͚ΔϥΠϑαΠΫϧͷҧ͍ͷӨڹ
BMJBT@BUUSJCVUFͰͷwҎԼͷΑ͏ͳΫΤϦ͕ղܾͰ͖ͳ͔ͬͨwύονΛ͋ͯͯରԠw6QTUSFBNͷؐݩ·ͩͰ͢
ൃߦ͞ΕΔΫΤϦʹҧ͍͕ʜwςετΦʔϧάϦʔϯʹͳΓwݕূڥ্Ͱ2"Λߦ͍ɺҰ௨Γಈ࡞ݕূΛߦͬͨwϦϦʔεΛલʹ٧·ΔϦΫΤετΛൃݟ
ൃߦ͞ΕΔΫΤϦʹҧ͍͕ʜwҎԼͷΑ͏ͳΫΤϦͷ݁Ռ͕ҙਤ͠ͳ͍ͷʹwεϩʔΫΤϦʹͳͬͯ͠·ͬͨwൃߦ͞ΕΔΫΤϦ·Ͱ֬ೝͰ͖͍ͯͳ͔ͬͨ
मਖ਼͚ͩ͜͜Ͱ͍͍ͷ͔ʁ
ࠩͷ֬ೝ͕େมʜwൃߦ͞ΕΔ42-Λશͯ֬ೝ͢Δͷେมʜwػցతʹஅ͠ɺࢹͷΛݮΒͤͳ͍ͷ͔ʜ
͜ΕͰ֬ೝͰ͖Δ͔ʂwςετͰൃߦ͞ΕΔΫΤϦΛόʔδϣϯຖʹอଘw"DUJWF3FDPSE-PH4VCTDSJCFSͰൃߦ͞ΕΔ42-Λऩूwલޙͷ݁ՌΛࣈ໘ͷΈͰൺֱw4FUOFX <26&3:>?4FUOFX <26&3:>w1SFQBSFE4UBUFNFOUͳΒ"45ΛΘͳ͍͚ͯ͘Δ͔ʂwྫ4&-&$5'30."8)&3&JE
ͬͯΈͨ
ͪΐͬͱμϝ͔ʜwIUUQTHJUIVCDPNISZTETRBQʢSVCZHFNTPSHʹͳ͍Ͱ͢ʣwDPNQPTJUF@QSJNBSZ@LFZTͷςετͰࢼͯ͠Έͨw୯ͳΔࣈ໘Ͱͷൺֱͩͱεϖʔεɺύϥϝʔλͷҧ͍Έ͍ͨͳͷ͕Ҿ͔͔ͬΓͩΊ͔wͦͦςετσʔλͷ༻ҙͷΫΤϦͱ͔ೖ͍ͬͯͨΓʜw݁Ռͷ(JTUͪ͜ΒwIUUQTCJUMZP;0,,
࠷ޙʹwԣணͤͣʹࠩΛͪΌΜͱ֬ೝ͠·͠ΐ͏wվΊͯ͜Ε͕ϥΠϒϥϦΛ͏͜ͱͩͱೝࣝw·ͩఘΊ͖Εͯͳ͍ͷͰ্ख͍ํ๏ͳ͍͔ࡧதͰ͢wͳʹ͔͍ͬͯΔਓ͕͍ͨΒڭ͍͑ͯͩ͘͞ʂʂʂ