PHPカンファレンス沖縄2019(https://phpcon.okinawa.jp/)の登壇資料です
サンプルコード https://github.com/NakanishiTetsuhiro/php-conf-okinawa-2019
LaravelͰઃܭ͢ΔࡍͷϕετϓϥΫςΟεΛ୳ΔגࣜձࣾRe:Buildͯͭ(Twitter: @kaoru6strings)201910݄12ʢʣPHPΧϯϑΝϨϯεԭೄ 2019https://phpcon.okinawa.jp/
View Slide
ࣗݾհ• த େʢͯͭʣ@kaoru6strings• גࣜձࣾRe:Buildॴଐ• Laravel + Nuxt.jsͰࣄΛ͍ͯ͠·͢• झຯɿԻָɺΪλʔɺόϯυ
ٕज़ؔ࿈ͷεΩϧηοτͰ͖Δ ͪΐͬͱͰ͖Δ ษڧதϑϩϯτΤϯυ+4 7VFKT/VYUKT K2VFSZόοΫΤϯυ-BSBWFM 3VCZPOSBJMT 1ZUIPOΠϯϑϥ%PDLFS -JOVY "84 7JSUVBM#PY 7BHSBOU.BDLFSFM,VCFSOFUFT($1
ຊεϥΠυͱαϯϓϧίʔυطʹެ։͞Ε͍ͯ·͢• αϯϓϧίʔυ• https://github.com/NakanishiTetsuhiro/php-conf-okinawa-2019
ઃܭͱʁPowered by Google
ຊηογϣϯ͕ࢦ͢ʮྑ͍ઃܭʯͷఆٛ• มߋʹڧ͍ίʔυͰ͋Δ͜ͱ• ϓϩδΣΫτͱແؔͳಡΈख͕ɺಡΈ͍͢ίʔυ͋Δ͜ͱ• ϏδωεαΠυɺσϕϩούʔɺαʔϏεར༻ऀ͕3ํྑ͠Ͱ͋Δ͜ͱ
ຊʹ͋ͬͨා͍ʢϑΟΫγϣϯͰ͢ʣ
ͱ͋ΔϓϩδΣΫτͰͷ͜ͱͩͬͨ…• ίϯτϩʔϥʔʹ΄΅શͯͷॲཧ͕ॻ͔Ε͍ͯΔ• ܗ֚Խͨ͠ϦϙδτϦύλʔϯ• ແବʹSlackʹు͖ग़͞Εଓ͚ΔΤϥʔ௨
͜Θ͍…
ͳͥਏ͍ͷ͔…• ॏཁͳܾࡁͷॲཧ͕ίϯτϩʔϥʔهड़͞Ε͍ͯΔ• ίϐϖίʔυ͕େྔʹൃੜ͍ͯͨ͠• ॏཁͳόά͕ى͖ͨΤϥʔ௨Λ୭ؾʹ͠ͳ͘ͳ͍ͬͯͨ
ࠓ͍ͭ͜ΛϦϑΝΫλϦϯά͍͖ͯ͠·͢
STEP 1ϦϙδτϦύλʔϯͷഉআ
Repositoryύλʔϯͷ֓ཁ• DBΞΫηε͢ΔͨΊͷෳࡶͳΫΤϦΛӅṭͰ͖Δ• σʔλૢ࡞ͷ࣮ࡍͷํ๏ΛӅṭͰ͖Δ• σʔλͷετΞઌ͕มΘͬͨ߹ͷվम͕༰қ• ྫɿDBΤϯδϯΛMySQL͔ΒPostgresมߋ
RepositoryύλʔϯΛഉআͨ͠ཧ༝• RepositoryύλʔϯΛཧղ͍͜͠ͳͤΔϝϯόʔ͕গͳ͔ͬͨ• ෳͳΫΤϦ͕͋·Γଘࡏ͠ͳ͍• DBͷΤϯδϯ͕·Δ·ΔೖΕସΘΔ໘ߟ͑ʹ͍͘
ϦϑΝΫλϦϯά͢Δલ
ϦϑΝΫλϦϯάޙ
STEP 2ServiceΫϥεͱϞσϧॲཧΛಀ͕͢
Serviceಀ͕͢ॲཧ• ίϯτϩʔϥσʔλͷड͚͠Λ୲͏ΫϥεͳͷͰϏδωεϩδοΫؙʑServiceΫϥεҠߦ• Controller -> Service -> Model(Eloquent) ͷྲྀΕΛҙࣝ͢Δ
Modelಀ͕͢ॲཧ• ࣗҎ֎ͷModelʹؔ࿈ੑ͕ͳ͍ॲཧΛModelʹҠಈ• ྫ1ɿΧʔτͷதΛͱͬͯ͘Δॲཧ• ྫ2ɿϢʔβʔͷੜ݄Λऔಘ͢Δॲཧ
ϦϑΝΫλϦϯάલʢίϯτϩʔϥʔʣ
ϦϑΝΫλϦϯάޙʢίϯτϩʔϥʔʣ
ϦϑΝΫλϦϯάޙʢServiceΫϥεʣ
ϦϑΝΫλϦϯάޙʢCartΫϥεʣ
STEP 3ྫ֎ॲཧΛదʹֻ͚Δ
ྫ֎ॲཧͲ͏͢Δʁ• ෆཁͳtry-catchΛআ• ෆ໌ͳΤϥʔ͕ى͖ͨͱ͖ɺ։ൃऀʹ௨Λ͠ɺϢʔβʔʹΤϥʔΛฦ͢ॲཧΛଓߦ͢ΔΑ͏ʹ͢Δ
ϦϑΝΫλϦϯάޙʢOrderServiceΫϥεʣ
ϦϑΝΫλϦϯάޙʢPaymentServiceΫϥεʣ
ৼΓฦͬͯΈΔ
ຊηογϣϯͰʮྑ͍ઃܭʯΛୡͰ͖͔ͨ• ίϯτϩʔϥ͔ΒϏδωεϩδοΫΛͨ͠• ͨ͠ίʔυServiceΫϥεɺModelʹৼΓ͚ͨ1. มߋʹڧ͍ίʔυͰ͋Δ͜ͱ
ຊηογϣϯͰʮྑ͍ઃܭʯΛୡͰ͖͔ͨ• ҰൠతͳσβΠϯύλʔϯΛऔΓೖΕΔ͜ͱͰΤϯδχΞಉ͕࢜ίϛϡχέʔγϣϯΛͱΓ͍͢ίʔυʹ͢Δ͜ͱ͕Ͱ͖ͨ• ϓϩδΣΫτͷنʹԠͯ͡͏σβΠϯύλʔϯΛߜΔ͜ͱͰγϯϓϧͳίʔυʹ͢Δ͜ͱ͕Ͱ͖ͨ2. ϓϩδΣΫτͱແؔͳಡΈख͕ɺಡΈ͍͢ίʔυ͋Δ͜ͱ
ຊηογϣϯͰʮྑ͍ઃܭʯΛୡͰ͖͔ͨ• ϏδωεαΠυ:• มߋʹڧ͍ίʔυʹ͢Δ͜ͱͰɺϏδωεαΠυͷཁٻʹૉૣ͘ରԠͰ͖ΔΑ͏ʹͳͬͨ• σϕϩούʔ:• ಡΈ͍͢ίʔυʹ͢Δ͜ͱͰ͜Ε͔Βͷ࣮ΛָʹͰ͖ͨ• ར༻ऀ:• ίʔυΛཧ͢Δ͜ͱͰόάΛগͳ͘͢Δ͜ͱ͕Ͱ͖ͨ3. ϏδωεαΠυɺσϕϩούʔɺར༻ऀ͕3ํྑ͠Ͱ͋Δ͜ͱ
ݱ࣮ੈքͰLaravelΛߟ͑ͯΈΔ
େاۀʹ͓٬͞Μ͕དྷͨʢϦϑΝΫλલʣड͓٬͞Μ ސ٬ใ
େاۀʹ͓٬͞Μ͕དྷͨʢϦϑΝΫλޙʣड Ӧۀ෦͓٬͞Μ ސ٬ใ
LaravelͷׂͰ໊લΛ͚ͭΔͱ͜Μͳײ͡$POUSPMMFS 4FSWJDF$MBTT)5513FRVFTU &MPRVFOU
ॴײ• σβΠϯύλʔϯ͚ͩΛͨͩೖΕΔͷΊΑ͏• దʹྫ֎ॲཧΛೖΕΔͷΊΑ͏• Πϝʔδ͕͔ͭͳ͍ਓݱ࣮ੈքͷॲཧʹམͱ͠ࠐΜͰߟ͑ͯΈΑ͏
ࢀߟॻ੶ɾ͓͢͢Ίॻ੶
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠