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

新卒向けDDD(+ 要件定義/分析)研修資料

74ec5d7df9b927db48d2309f56cbf914?s=47 s10myk4
September 20, 2018
260

新卒向けDDD(+ 要件定義/分析)研修資料

74ec5d7df9b927db48d2309f56cbf914?s=128

s10myk4

September 20, 2018
Tweet

Transcript

  1. ৽ଔDDDݚम גࣜձࣾηϓςʔχɾΦϦδφϧ Լଜ๎೭ 2018/06/15

  2. ΞδΣϯμ ▸ υϝΠϯۦಈઃܭ(DDD)ͱ͸ʁ ▸ ෳࡶͱ͸ʁ ▸ ιϑτ΢ΣΞʹ͓͚Δෳࡶੑ ▸ ͳͥઃܭΛ͢Δͷ͔ʁ ▸

    ιϑτ΢ΣΞͷઃܭͱ͸ʁ ▸ DDD͕ѻ͏ຊ࣭ ▸ ෳࡶ͞ͱཱͪ޲͔͏ಓ۩ͨͪ ▸ ·ͱΊ
  3. લఏ ▸ ϓϩμΫτ։ൃͨ͜͠ͱͳ͍ਓ(ઃܭͷ؍఺͕ͳ͍)͕ɺ
 DDDΛཧղ͢Δͷ͸͓ͦΒ͘ແཧͩͱࢥ͏ɻ ▸ νʔϜͰ։ൃ͢Δ্Ͱ࠷௿ݶඞཁͩͱࢥΘΕΔ஌ࣝΛΠϯϓο τ͢Δ ▸ ਖ਼ղ͸ͳ͍ɺਖ਼ղͷͳ͍ෳࡶͳ໰୊ʹཱͪ޲͔͏ͨΊͷख ஈͰ͋Δ

    ▸ ࠓޙɺઃܭͱ͔ͷษڧ͢Δ্Ͱͷ؍఺Λर͑ͯ΋Β͑ͨΒخ ͍͠
  4. ߨٛͷ໨త ▸ ͳͥDDDΛ͍ͯ͠Δͷ͔Λ໨తཧղ͢Δ
 ۜͷ஄ؙͰ͸ͳ͍ ▸ DDD͕΋ͨΒ͢Ձ஋(ͬ͘͟Γͱ) ▸ ιϑτ΢ΣΞ։ൃʹ͓͍ͯɺઃܭ΍ཁ݅෼ੳ͕
 ͲΕ΄Ͳॏཁ͔Λײͯ͡΋Β͑Ε͹ྑ͍ ▸

    طଘͷνʔϜʹೖΔͷʹ࠷௿ݶඞཁͱࢥΘΕΔ֓೦Λ஌Δ
  5. ·ͣߨٛΛฉ্͘Ͱɺඞ ཁͳ༻ޠΛ஌Δ

  6. ༻ޠ ▸ υϝΠϯ ▸ ίΞυϝΠϯ ▸ αϒυϝΠϯ ▸ ϢϏΩλεݴޠ

  7. υϝΠϯͱ͸ʁ ▸ ޿ٛʹɺ૊৫͕ߦ͏ࣄۀ΍ ͦΕΛऔΓר͘ੈք
 ͦͷࣄۀྖҬʹͯۀ຿ΛਐΊ͍ͯͨ͘Ίͷํ๏ ▸ ޿ࠂӡ༻Λࣄۀͱ͍ͯ͠Ε͹ɺͦͷ޿ࠂӡ༻ͷۀ຿஌ ͕ࣝυϝΠϯ

  8. ίΞυϝΠϯͱαϒυϝΠϯ ▸ υϝΠϯ͸ͦͷࣄۀྖҬશମΛදͨ͠ΓɺҰ෦Λදͨ͠Γ༷ʑ ͳͷͰɺ ۩ମతʹίΞυϝΠϯɺαϒυϝΠϯͱ෼͚ͯݺ ΜͩΓ͢Δ ▸ ૊৫શମͷυϝΠϯ͸ෳ਺ͷαϒυϝΠϯΛ૊Έ߹Θͤͯɺ
 ࣮ݱ͞ΕΔΠϝʔδ

  9. ίΞυϝΠϯͱαϒυϝΠϯͱ͔

  10. ϢϏΩλεݴޠ ▸ νʔϜͰڞ༗͢Δݴޠ ▸ ΤϯδχΞಉ࢜Ͱ ςετ ͱݴͬͨΒɺςετίʔυͱ ͍͏ಉ͡ೝ͕ࣝͰ͖Δ ▸ ߴߍੜಉ࢜Ͱ

    ςετ ͱݴͬͨΒɺظ຤ςετͳͲͷಉ ͡ೝ͕ࣝͰ͖Δ
  11. υϝΠϯۦಈઃܭͱ͸ʁ ▸ ιϑτ΢ΣΞͷઃܭख๏ ▸ ίΞͱͳΔϏδωείϯηϓτͷৗʹਐԽ͢ΔϞσϧʹର͠ ࣮ͯ૷Λਂ݁͘ͼ͚ͭΔ͜ͱʹΑͬͯɺ
 ෳࡶͳཁٻʹରԠ͢Διϑτ΢ΣΞΛ։ൃ

  12. ͋Μ·Γϐϯͱདྷͳ͍ʁ

  13. ͦ΋ͦ΋ɺෳࡶͱ͸Կʁ

  14. ΫωϏϯϑϨʔϜϫʔΫ ▸ ෆ҆ఆੑɺෆ࣮֬ੑɺෳࡶੑɺᐆດੑ ͷ૿ͨ͠ੈքʹ͓͍ ͯɺ࣮ࡍͷੈքΛͲͷΑ͏ʹͱΒ͑ͯɺͲͷΑ͏ʹߟ͑ͯߦ ಈͨ͠Β͍͍͔Λମܥ͚ͮͨ΋ͷ

  15. ෳࡶͱ͸ɺਖ਼ղΛಘΔ͜ ͱ͕Θ͔Βͳ͍ঢ়گ

  16. ୯७͔ʁෳࡶ͔ʁ ▸ ൑அ͢Δํ๏͸େ·͔ʹ2ͭ ▸ ݁ՌతʹෳࡶͩͬͨͱΘ͔Δ ▸ ෼ੳ΍ݕূΛ͢Δ

  17. ෳࡶͳঢ়گ ▸ ·ͣ͸ઐ໳Ո͕࣮ݧͰਫ਼ࠪͯ͠ɺͦͷޙɺײ஌ͯ͠ରԠ͢Δ ͜ͱ͕ٻΊΒΕΔ ▸ YouTube΋͜ͷྫͰ౰ॳ͸ࠓͷ࢖ΘΕํΛ૝ఆͯ͠ͳ͔ͬͨ ▸ ࣮ੈք͸΄ͱΜͲ͕͜ͷΑ͏ͳෳࡶͳυϝΠϯ ▸ ࠓقͷചΓ্͛ݮগͷݪҼɺܦӦਞͷ࡮৽ͷҙࢥܾఆ

    etc ▸ Ϗδωεࢢ৔΍ΧελϚʔͳͲ༷ʑͳཁૉʹΑͬͯ෺ࣄͷ ଊ͑ํ͸ҟͳΔͷͰ͢ɻ
  18. ϏδωεؚΊɺେମ৭Μ ͳ΋ͷ͸ͦΕͳΓʹෳࡶ

  19. ୯७ʹ͢ΔͨΊʹ͸ɺ୯७ Խ͢ΔͨΊͷ౒ྗ͕ඞཁ

  20. ෳࡶ͞ͷதͷཁૉΛ෼ղ ͯ͠ɺ୯७ͳཁૉʹͯ͠ ͍͘͜ͱ͕ඞཁʹͳΔ

  21. ιϑτ΢ΣΞ։ൃͰ͸ɺ େ·͔ʹઃܭ͕ͦͷ໾ׂ ΛՌͨ͢

  22. ઃܭͱ͸ʁ ▸ ࡞Δલʹɺސ٬ͷཁٻ΍੍໿৚݅Λ۩ମԽ͠ɺ
 ͲͷΑ͏ͳ΋ͷΛ࡞Δ͔ͷܭըΛ۩ମԽ͠ɺސ٬ͷཁٻΛຬ ͔ͨ͢Λݕ౼͢Δ͜ͱ

  23. ΋͠ઃܭΛ͠ͳ͔ͬͨΒʁ ▸ ՈΛ৽͘͠ݐͯΔ৔߹ͷྫ͑

  24. ιϑτ΢ΣΞΛઃܭ͢Δ্Ͱߟྀ͢΂͖؍఺(Ұ෦) ▸ ֦ுੑ - ج൫ͱͳΔΞʔΩςΫνϟʹେ͖ͳมߋΛՃ͑Δ͜ͱͳ͘ɺ৽ͨͳػೳΛ௥ՃͰ͖Δ͜ͱɻ ▸ ؤ݈ੑ - ߴෛՙঢ়ଶ΍ෆਖ਼ͳೖྗ͕͋ͬͯ΋ಈ࡞͢Δ͜ͱɻྫ͑͹ɺ࢖༻ՄೳͳϝϞϦྔ͕গͳͯ͘΋ಈ ࡞͢ΔΑ͏ઃܭ͢Δɻ

    ▸ ৴པੑ - ͋ΔҰఆظؒ·Ͱɺಛఆͷࠔ೉ͳঢ়ଶʹͳͬͯ΋ɺػೳ͢Δ͜ͱɻ ▸ ଱ো֐ੑ - ίϯϙʔωϯτͷো֐͕ൃੜͯ͠΋ɺͦΕʹ଱͑ͨΓɺճ෮ͤͨ͞ΓͰ͖Δ͜ͱɻ ▸ ηΩϡϦςΟ - ѱҙ͋Δߦҝʹରͯ͠଱ੑ͕͋Δ͜ͱɻ ▸ อकੑ - ͋ΔҰఆ࣌ؒͰɺಛఆͷঢ়ଶʹ෮ؼͰ͖Δ͜ͱɻྫ͑͹ɺΞϯν΢ΠϧειϑτͷΑ͏ʹɺఆظ తͳߋ৽͕ՄೳͰ͋ΔͳͲɻ ▸ ޓ׵ੑ - ଞͷ੡඼ͱ૬ޓʹ΍ΓͱΓͰ͖Δ͜ͱɻ͋Δ͍͸ɺաڈͷ୅ସ͢΂͖੡඼ͱޓ׵Ͱ͋Δ͜ͱɻ ▸ Ϟδϡʔϧੑ - ϞδϡʔϧੑΛߟྀͨ͠ઃܭɻͦΕʹΑͬͯอकੑ΋޲্͢Δɻ։ൃʹ͓͍ͯ΋ίϯϙʔ ωϯτ୯ҐͰ࣮૷͠ςετՄೳͳͲͷར఺͕͋Δɻ·ͨɺ։ൃ࡞ۀͷ෼ׂ͕༰қʹͳΔɻ ▸ ࠶ར༻ੑ - Ϟδϡʔϧੑ͕Α͚Ε͹ɺݸʑͷίϯϙʔωϯτΛଞͷ৔໘Ͱ࠶ར༻Ͱ͖ΔՄೳੑ͕ੜ͡Δɻ
 (wikiࢀর ιϑτ΢ΣΞઃܭ)
  25. ͜ͷΑ͏ͳࢦඪΛߟྀͯ͠ ઃܭͯ͠Δ

  26. ͲͷΑ͏ʹߟྀͯ͠ઃܭ͍ͯ͠Δ͔ʁ ▸ ιϑτ΢ΣΞ͕࣮ݱ͢ΔϏδωεͷಛੑɺࢢ৔ಛੑɺސ٬ ͷཁ๬ͳͲͷཁૉʹΑͬͯɺ
 ࣗ෼͕ͨͪ࡞Διϑτ΢ΣΞʹ͓͍ͯ`Կ͕ΑΓॏཁͳͷ͔` Λߟྀ͢Δ

  27. ྫ1 ▸ ࢢ৔͕ٸܹʹ੒௕͍ͯ͠ΔͷͰɺࣗ෼ͨͪͷϏδωε΋ٸܹ ʹ੒௕͢Δ͔΋͠Εͳ͍Մೳੑ͕ߴ͍ 
 
 -> ιϑτ΢ΣΞͷ`֦ுੑ` `Ϟδϡʔϧੑ` ͕ߴ͍ઃܭΛద༻

    ͍ͨ͠
  28. ྫ2 ▸ ۚમͷ΍ΓऔΓ΍ݸਓ৘ใΛѻ͏αʔϏεͷͨΊɺαʔϏ εʹର͢Δ৴པ΍҆৺Λอͭ͜ͱ͕ॏཁͰ͋Δ
 
 -> `ηΩϡϦςΟ` `อकੑ` `଱ো֐ੑ` ʹର͢Δߴ͍ιϦϡʔ

    γϣϯΛιϑτ΢ΣΞͷઃܭʹద༻͍ͨ͠
  29. ઃܭʹ͓͚Δ2ͭͷ؍఺ ▸ γεςϜશମઃܭ(ΞʔΩςΫνϟ)
 ର৅ͱͳΔϏδωευϝΠϯͷಛੑΛଊ͑ͯɺιϑτ΢ΣΞΛશମΛઃܭ͢Δ ▸ ػೳͷઃܭ(ཁ݅ఆٛ) ▸ ֓೦ઃܭ(ͲΜͳ΋ͷΛ࡞Δ͔۩ମԽ͢Δ)
 ࣮ݱ͍ͨ͠ػೳͷᐆດ͞ΛऔΓআ͘ɺͦͷதͷ۩ମతͳ֓೦Λ໌֬ʹ͢Δ
 ಛఆͷٕज़ʹґଘͤͣʹɺγεςϜ͕ػೳཁٻΛͲͷΑ͏ʹ࣮ݱ͢Δ͔Λ໌֬ʹ͢Δ

    ▸ ৄࡉઃܭ(ͲͷΑ͏ʹ࡞Δ͔) 
 ֓೦ઃܭʹΑ֤ͬͯʑͷ֓೦͕ͲͷΑ͏ʹؔ࿈ͯ͠ɺػೳ͕࣮ݱ͞ΕΔͷ͔͕Θ͔ͬ ͨͷͰɺͦΕΛٕज़తʹͲͷΑ͏ͳํ๏Ͱߦ͏͔Λ۩ମతʹ͢Δ

  30. γεςϜશମͷઃܭ ͱ ཁ݅ఆٛ ͦΕͧΕͰDDD͕Ձ஋Λ΋ͨΒ͢

  31. γεςϜશମͷઃܭʹDDD͕΋ͨΒ͢Ձ஋ ▸ ཁٻ ͱ ࣮૷ͱͷؒͷᐆດ͞Λղফ͢Δ ▸ ֓೦ઃܭʹΑͬͯɺཁٻ͕ͲͷΑ͏ʹ࣮ݱ͞ΕΔͷ͔Λ۩ ମԽ͢Δ͜ͱͰɺཁٻΛ࣮ݱ͢ΔͨΊʹඞཁͳυϝΠϯ஌ ࣝ΍֓೦Λཧղ͢Δ ▸

    ۀ຿Λߦͳ͍ͬͯΔਓͷϝϯλϧϞσϧΛଊ͑ͯɺͦΕΛ࣮ ૷ʹམͱ͠ࠐΉ͜ͱͰɺ ▸ ςετ͕͠΍͍͢ɺΤϥʔ͕ൃੜ͠ʹ͍͘ɺٻΊΒΕΔ඼ ࣭Λຬͨ͢(SLA)
  32. ཁ݅ఆٛʹDDD͕΋ͨΒ͢Ձ஋ ▸ Ϗδωεͷಛੑ΍ɺ࣮ݱ͍ͨ͠Ձ஋ΛΤϯδχΞ͕ղऍ͢Δ͜ͱͰɺ ޮ཰తͳશମઃܭΛ࣮ݱ͢Δ
 (ओʹඇػೳཁٻɺอकੑɺηΩϡϦςΟɺύϑΥʔϚϯεɺ֦ுੑ etc) ▸ த௕ظతͳϏδωεͷมԽɺ੒௕ʹରͯ͠ɺγεςϜ΋૬ରతʹ௿ ͍ίετͰػೳͷ௥Ճɾมߋɾ֦ுΛ࣮ݱ͢Δ
 (υϝΠϯϞσϧΛίʔυམͱ͠ࠐΉͨΊ)

    ▸ Ϗδωεͷ੒௕ʹରͯ͠ɺγεςϜ΋ಉ༷ʹεέʔϧ͢Δ͜ͱΛ௿ ͍ίετͰ࣮ݱ͢Δ
 (γεςϜ͕εέʔϧ͢Δʹ͸ɺεέʔϧͰ͖ΔΑ͏ʹߟྀͯ͠ઃܭ ͍ͨ͠ͱͰ͖ͳ͍)
  33. DDD͕ѻ͏ຊ࣭ ▸ ࠷΋ॏཁͳෳࡶ͞͸ɺυϝΠϯ(Ϣʔβʔ׆ಈɺϏδωε)ͦ ͷ΋ͷ ▸ ͦΕʹରͯ͠ମܥతʹཱͪ޲͔͏खஈ ▸ ෳࡶͳυϝΠϯΛ࣮ݱ͢ΔͨΊͷɺٕज़తͳෳࡶ͞ʹରͯ͠ ΋ιϦϡʔγϣϯΛ༩͑Δ
 ઓུతઃܭπʔϧͱઓज़తઃܭπʔϧ

  34. HOWʹ͸ઓज़తઃܭπʔϧ ▸ DDD͸ͲͷΑ͏ʹ࡞Δ͔(How)ʹ΋ɺπʔϧ΋ఏڙ ▸ ΤϯςΟςΟ ▸ ஋ΦϒδΣΫτ ▸ ू໿ ▸

    ϦϙδτϦ ▸ αʔϏε ▸ ϑΝΫτϦ ▸ ΞʔΩςΫνϟ …etc
  35. ͜͜·Ͱͷ࣭ٙԠ౴

  36. ࣄલʹ࢕ͬͨݱঢ়ͷ՝୊ ▸ model͕ͨͩͷσʔλͷೖΕ෺ʹͳͬͯ͠·͍ͬͯͨͷͰɺclassʹৼΔ෣͍͕ͳ ͍ঢ়ଶɻ ▸ ίϯτϩʔϥʔͷϝιου͕େ͖͘ͳ͍ͬͯΔɻ ▸ ·ͨίϯτϩʔϥʔपΓͰͷvalidation͕௕͍ɻ ▸ DTO΍DAOΛͲ͜ʹ࡞Ε͹ྑ͍͔

    ▸ modelͰ͸ͳ͘ɺinfra૚΍application૚ͰඞཁʹͳΔDTO΍DAO͸ͦΕͧΕඞཁ ʹͳΔInfra૚ɺapplication૚Ͱ࡞͍ͬͯΔ͕ɺԿ͔ΞυόΠε͕͋Ε͹ཉ͍͠ɻ ▸ ύοέʔδ෼͚ΛͲͷΑ͏ʹߦ͑͹ྑ͍͔ ▸ ໊લ͚ͭ ▸ ཁ๬Λ͖͍ͯཁ݅ʹམͱ͠ࠐΉ࡞ۀ͕͏·͘ߦ͍͑ͯͳ͍
  37. DTOɺDAOͬͯԿʁ ▸ modelͰ͸ͳ͘ɺinfra૚΍application૚ͰඞཁʹͳΔDTO ΍DAO͸ͦΕͧΕඞཁʹͳΔInfra૚ɺapplication૚Ͱ࡞ͬ ͍ͯΔ͕ɺԿ͔ΞυόΠε͕͋Ε͹ཉ͍͠ɻ ▸ ʓʓ૚΍DTOɺDAOͦΕͧΕͷ໾ׂʹ͍ͭͯߟ͑ͯΈΑ ͏

  38. େ͖ͳίϯτϩʔϥʔ໰୊ ▸ ίϯτϩʔϥʔͷϝιου͕େ͖͘ͳ͍ͬͯΔɻ ▸ ·ͨίϯτϩʔϥʔपΓͰͷvalidation͕௕͍ɻ ▸ model͕ͨͩͷσʔλͷೖΕ෺ʹͳͬͯ͠·͍ͬͯͨͷͰɺ classʹৼΔ෣͍͕ͳ͍ঢ়ଶɻ ▸ ࣮ࡍͷίʔυΛݟͯΈΑ͏

    ▸ ͜͜Ͱɺ͖ͬ͞ߟ͑ͨͦΕͧΕͷ໾ׂͷ࿩͕໾ཱͭͷͰ͸ʁ
  39. ͦͷଞ ▸ ύοέʔδ෼͚ΛͲͷΑ͏ʹߦ͑͹ྑ͍͔ ▸ ͳΜͷͨΊʹύοέʔδΛ෼͚Δͷ͔Λߟ͑ͯΈΔ ▸ ໊લ͚ͭ ▸ ϦʔμʔϒϧίʔυΛಡΈ·͠ΐ͏

  40. ཁ๬Λ͖͍ͯཁ݅ʹམͱ͠ࠐΉ࡞ۀ͕͏·͘ߦ͍͑ͯͳ͍ ▸ ࣮ࡍͷϢʔβʔετʔϦʔΛऔΓ্͛ͯҰॹʹཁٻ෼ੳɺ ༧උઃܭ·ͰΛߦ͏ ▸ Ұॹʹ΍ͬͯΈΑ͏ ▸ 2H࢖ͬͯϫʔΫ͠·͢

  41. ऴΘΓ