Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Laravel×DDDやってみた

Avatar for Jo Hattori Jo Hattori
May 30, 2023
28

 Laravel×DDDやってみた

共同主催した総勢50名以上の下記イベントでのLT登壇資料

https://web-creator-meetup-in-kansai.connpass.com/event/250410/

Avatar for Jo Hattori

Jo Hattori

May 30, 2023
Tweet

Transcript

  1. ࣗݾ঺հ (Twitter: @sr_jooo) • େࡕੜ·Εɺେࡕҭͪ • ߴߍଔۀޙɺߤۭػܥ੡଄ϝʔΧʔʹͯண཮૷ஔͷ։ൃɾࢼݧ • 21ࡀͰITۀքˠSIerͰమಓγεςϜͷ։ൃ΁ˠେࡕͰCTI։ൃ •

    PHP,Python,TypeScript,Laravel,Vue2,3,C,C#,Java.. • DDDྺ൒೥ɺΤϰΝϯεຊະಡɺDDDͰ0͔ΒઃܭʙϦϦʔεܦݧ༗Γɻ ΦχΦϯΞʔΩςΫνϟɺϔΩαΰφϧΞʔΩςΫνϟͰͷ։ൃܦݧ • झຯ 
 όΠΫ,Ϩʔε,ొࢁ,Ξ΢τυΞ,Ξχϝ..etc
  2. DDD(Domain Driven Design) υϝΠϯۦಈઃܭ • DDD(υϝΠϯۦಈઃܭ) 
 υϝΠϯΤΩεύʔτؚΊɺۀ຿ΛϞσϦϯάͦ͠ΕΒΛEntity,Value Object, Domain

    Service,UsecaseͳͲΛ׆༻ͨ͠۩ମతͳυϝΠϯ(ۀ຿஌ࣝ)ͷ 
 දݱɾ։ൃख๏ • ΫϦʔϯΞʔΩςΫνϟ 
 SOLIDݪଇ(୯Ұ੹೚ɾΦʔϓϯΫϩʔζυɾϦείϑͷஔ׵ɾΠϯλʔϑΣʔε෼཭ɾґଘ ੑٯస)Λຬͨͨ͠ઃܭࢥ૝ • ΫϦʔϯΞʔΩςΫνϟ !== DDD(υϝΠϯۦಈઃܭ) 
 DDDͰ։ൃΛ͢Δ্ͰΫϦʔϯΞʔΩςΫνϟͷख๏ΛऔΓೖΕΔΈ͍ͨͳ
  3. Domain Object(Value Object, Entity) • Entity͸ίϯετϥΫλΛprivateʹͯ͠ɺඞͣϑΝΫτϦϝιουΛ௨ͯ͠ ੜ੒͢Δ 
 →VOಉ࢜Λ࢖ͬͨϩδοΫͳͲ͕ੜ·ΕΔҝɺ୯७ʹnewͤ͞ͳ͍ •

    ϦϙδτϦ͔Βੜ੒͢ΔϑΝΫτϦ΋෼͚Δ 
 ॳظੜ੒࣌ͱϦϙδτϦ͔ΒฦΔ࣌Ͱ͸ɺϩδοΫ͕ҧ͏͜ͱ͕ଟ͍(ࣝผ ࢠ༗ແͳͲ) • Setter͸༻ҙ͠ͳ͍(ྫ֎͋Γ)
  4. Domain Service • υϝΠϯΦϒδΣΫτࣗମ͕࣋ͭϩδοΫͱͯ͠͸ҧ࿨ײ͕͋ΔɺυϝΠϯϧʔϧΛදݱ ͢Δ • Laravelจ຺ͰͷαʔϏεΫϥεͱ͸શ͘ҧ͏ ྫ) • ॏෳνΣοΫ

    • ෳ਺৚݅ʹΑͬͯ࡟আՄೳ͔Ͳ͏͔൑ఆ͢Δ৔߹ͳͲ • CRUDͱಉ࣌ʹߦΘΕΔॲཧ 
 (ϩΪϯάɺ֎෦αʔϏε΁ͷ௨஌)