Slide 1

Slide 1 text

LaravelͱυϝΠϯϞσϧͱӬଓԽϞσϧ for laraval.osaka #12 2017/11/15 גࣜձࣾNextat தᒇ ݈ೋ

Slide 2

Slide 2 text

Domain Driven Development • DDDͰ࡞ΒΕͨOSSͷྫ͕গͳ͍orͳ͍ • →ͱᷖᮣʹൃݴ͢ΔͱSNS্Ͱͭͬ͜·ΕΔ • → Α͘Ͱ͖ͨOSS͸υϝΠϯϞσϧͷ޷ྫͩɺͱ → λγΧχ • ͕͔ͩ͠͠ɺ࣮͸൴Β͕஌Γ͍ͨͷ͸DDDͷຊ࣭ ͷ෦෼Ͱ͸ͳ͘ɺΫϦʔϯΞʔΩςΫνϟ΍Ϩϙδ τϦύλʔϯͷ࣮૷ྫͷWebΞϓϦͰ͸ʁ

Slide 3

Slide 3 text

ຊ೔ͷ͓࿩ • DDDͷ࿩͸΄΅͠·ͤΜ • LaravelͰυϝΠϯϞσϧʢΤϯςΟ ςΟʣΛͲͷΑ͏ʹ࣮૷͠ӬଓԽ͢Δ͔ɺ ͕য఺ • →RepositoryύλʔϯɺӬଓԽϞσϧ

Slide 4

Slide 4 text

• EloquentʢActiveRecordύλʔϯʣΛ࢖͏ͱDBϑΝʔε τʹͳΓ͕ͪ • ؆୯ͳாථͷCRUDͳΒे෼ • υϝΠϯͷ࢓༷͕ෳࡶͳ৔߹͸ʁ • ӬଓԽΛ෼཭ͯ͠υϝΠϯϞσϧΛத৺ʹߟ͍͑ͨ • Repositoryύλʔϯ • EloquentΛͲ͏࢖͏ʁ 3ύλʔϯΛ঺հ LaravelͱӬଓԽ

Slide 5

Slide 5 text

͓୊ɿTodo؅ཧ ΤϯςΟςΟ

Slide 6

Slide 6 text

͓୊ɿTodo؅ཧ ϨϙδτϦ

Slide 7

Slide 7 text

͓୊ɿTODO؅ཧ όϦϡʔΦϒδΣΫτ • Ұ෦ͷVO͸ڞ༻ ΄΅εΧϥʔΛϥοϓ͚ͨͩ͠

Slide 8

Slide 8 text

͓୊ɿTodo؅ཧ ϨϙδτϦར༻ྫ InterfaceʹͷΈґଘ ←͍ΘΏΔServiceΫϥε

Slide 9

Slide 9 text

Ҏ্ͷ࣮૷Λ3ύλʔϯͰ

Slide 10

Slide 10 text

ύλʔϯ1 Eloquent Model=Entity

Slide 11

Slide 11 text

ύλʔϯ1 Eloquent Model=Entity • هड़ྔతʹ͸΋ͷָ͘͢͝ • EloquentΛ௚ʹ࢖͏ํ๏ͱ΄΅ࠩ͸ͳ͍ • ϨϙδτϦͷ࢓ࣄ΋΄΅ͳ͍ • Eloquent Model͕࿐ग़͢ΔͨΊɺυϝΠϯϞσ ϧͷ੹຿֎ͷίʔυΛॻ͖΍͍͢ • ex) $todoItem->save() ͳͲ ←FXCKING!!!! PhpStorm͞Μ΋͓͜

Slide 12

Slide 12 text

ύλʔϯ2 Entity has Eloquent Model Eloquent Model͸ΤϯςΟςΟͱ͸ผ్࡞੒

Slide 13

Slide 13 text

ύλʔϯ2 Entity has Eloquent Model Eloquent ModelΛதʹ࣋ͭ

Slide 14

Slide 14 text

ύλʔϯ2 Entity has Eloquent Model • Eloquent ModelΛ֎෦͔Β৮Βͤͳ͍ ͷͰ1ΑΓ͸ߗ͍ • Entity಺෦Ͱ͸ґવͱͯ͠ةݥ͕ͩɺ൓ ໘Eloquentͷػೳͷ׆༻͸͠΍͍͢ • Entityͷ࢓༷มߋׂ͕ͱָ

Slide 15

Slide 15 text

ύλʔϯ3 POPO Entity and Eloquent Model όϦϡʔΦϒδΣΫτ͔Β࡞੒

Slide 16

Slide 16 text

ύλʔϯ3 POPO Entity and Eloquent Model ϑΝΫτϦΛ࡞͓ͬͯ͘ͱศར 2ͱಉ͡Eloquent Model

Slide 17

Slide 17 text

ύλʔϯ3 POPO Entity and Eloquent Model ϨϙδτϦ͸͜Μͳײ͡ 2ͱಉ͡Eloquent Model

Slide 18

Slide 18 text

ύλʔϯ3 POPO Entity and Eloquent Model • POPO = Plain Old PHP Object • ΃ͪ͜Μͱ͔ͷൃදͰΑ͘ݟ͔͚Δ • ӬଓԽΛ͸͖ͬΓͱ෼͚Δ • ΤϯςΟςΟͷߏ଄͕Θ͔Γ΍͍͢ • ίʔυͷهड़ྔ͸૿͑·͢

Slide 19

Slide 19 text

ൺֱ • جຊతʹ1→2→3ͷॱʹʢͦͷ৔ͷʣ࣮ ૷ίετ͸্͕Γอकੑ/Ҡ২ੑ΋্͕Δ • Interface͑͞ఆ·Ε͹ɺ1→2→3ͷॱͰ ϦϑΝΫλϦϯά΋Մೳ • υϝΠϯͷෳࡶ͞ʹ߹Θͤͨબ୒Λ

Slide 20

Slide 20 text

ͦͷଞͷબ୒ࢶ • ӬଓԽϞσϧͱͯ͠EloquentҎ֎Λ࠾༻͢Δέʔε • 4. POPO Entity + ΫΤϦϏϧμʔ • →EloquentϞσϧ͕ػೳա৒ؾຯͳͨΊγϯϓϧʹ • 5. POPO Entity + PDO • →4Λಥ͖٧Ίͯ΋͏PDOͰΑ͘Ͷʁͱ͍͏ύλʔϯ • 6. POPO Entity + other DataMapper • → DoctrineͳͲͱࠩ͠ସ͑Δ

Slide 21

Slide 21 text

·ͱΊ • Laravel AppͷӬଓԽͷ࣮૷ύλʔϯ΋͍Ζ͍Ζ͋Δ • ӬଓԽͷམͱ͠ॴΛݟ͚ͭͯυϝΠϯʹूத͠Α͏ • ྫͷ؆୯ͳTodo؅ཧΞϓϦʹؒ઀૚Λ૿΍͗͢͠Δ ͷ͸ΦʔόʔΤϯδχΞϦϯάؾຯɻඞཁʹԠͯ͡ • GitHubʹHTTP૚·ͰؚΊͨαϯϓϧίʔυUP༧ఆ • → https://github.com/n1215/lara-todo-persistence

Slide 22

Slide 22 text

ࢀߟจݙ • Domain Models - atlashphp.io (http:// atlasphp.io/mapper/2.x/ domain.html#1-1-10) • ↑Atlas͍͍ΑAtlas