関西Javaエンジニアの会(関ジャバ) '17 10月度 - connpass https://kanjava.connpass.com/event/68169/
での発表資料です。
DDDࣦഊஊΛֶͯ͠Μͩ͜ͱAbe Asami
View Slide
ࣗݾհ"CF"TBNJl͖ͷࢠz େࡕͷϑϦʔϥϯεϓϩάϥϚIUUQOPDPOPOFU!BBUI4DBMBɺ"OESPJE +BWB,PUMJO
ࠓͷ༰• ͱ͋ΔϓϩδΣΫτΛDDDͰΔͧʂͱҙؾࠐΜͰ͡ΊͨͷͷԿ͔͏·͍͔͘ͳ͔ͬͨ• ͱ͍͏ΛScalaMatsuri(2017/02)ͷΞϯΧϯϑΝϨϯεͰͬͨͱ͜Ζ৭ΜͳҙݟΛΒͬͨͷͰɺͦΕΛ͍·͞Β·ͱΊͯΈ·ͨ͠
ϓϩδΣΫτ֓ཁ
ΫϥΠΞϯτ͞Μ͔Βͷཁ• AirB̋bΈ͍ͨͳͭΛ࡞ͬͯ΄͍͠
ิࣄ߲• ΫϥΠΞϯτ͞ΜITʹৄ͘͠ͳ͍• ·ͣʮ࠷ݶʯͷػೳͰβ൛ΛϦϦʔε͠ɺ৭ΜͳਓʹҙݟΛฉ͖ͳ͕Βվળ͍ͯ͜͠͏ͱ͍͏ํ• ͍ͣΕେ͖͍αʔϏεʹ͍͖͍ͯͨ͠• ظؒ3ϲ݄ఔɻͷͭΓͩͬͨ• 1ϲ݄͙Β͍Φʔόʔ͠·͕ͨ͠ɺҰԠແࣄೲ͠·ͨ͠• PlayFramework2+ScalaͰ࣮• ࣮ऀࢲ1ਓ
ϓϩδΣΫτ։࢝࣌ͷࢲ ʮΑʔ͠DDDͰΔͧʂʯ
ओͳཧ༝
ͬͯΈ͔ͨͬͨ• ࢲͷDDDཧղϨϕϧ• ʮϢʔβʔઢͰͷࢥߟͱ࣮ࡍͷίʔυͷဃΛۃྗͳ͘͢ʯͷ͕తͱ͍͏ཧղ• աڈʹ࡞ͨ͠ࢿྉʮDDDͬͯͳΜͩΖ͏ʁʯ• https://speakerdeck.com/sammy7th/dddtutenandarou• ΤϦοΫɾΤϰΝϯεͷຊະಡ
ཧ༝ɾͦͷଞ• ༷ͱίʔυͷണΛগͳ͘Ͱ͖ΔͳΒͦͷํ͕Α͍ͱ͓ͬͨɻ• DDDͷϓϩδΣΫτͷ͓ख͍Λͨ͠ܦݧ͕͋ͬͨ• ಉ͡Α͏ͳߏ(ΫϦʔϯΞʔΩςΫνϟ)ͰΕ͍͚Δͱ͓ͬͨ
͔ͯ͘͠Play2+DDDͰ։ൃ͕։࢝͞Εͨʂ
ͦͯ͠ ͏·͍͔͘ͳ͔ͬͨʂʂʂ
Ͳ͏͍͏͜ͱʁ• ࣮ίετ͕ߴ͘ɺ3िؒఔͰํస
Before
After
αʔϏεͰ༻͢Δݴ༿͕શવܾ·Βͣɺίʔυͱͷണൃੜ͠·͘Γ• ྫ) ෦Λି͠ग़͢ਓΛԿͱݺͿ͔ͳͲ͕ͳ͔ͳ͔ܾ·Βͳ͍ɻܾ·ͬͯมΘΔɻ• ϢϏΩλεݴޠࣙయ͕શવػೳ͠ͳ͔ͬͨɾɾɾ
ͱ͍͏ΛScalaMatsuri(2017/02)ͷΞϯΧϯϑΝϨϯεͰ൸࿐ͨ͠ͱ͜Ζ৭ΜͳҙݟΛ͍͖ͨͩ·ͨ͠
ɹ͍ͨҙݟʢൈਮʣ
ͦͦɺ៉ྷʹϞσϦϯά͔ͨͬͨ͠ͷʁΫϦʔϯΞʔΩςΫνϟͰ࡞Γ͔ͨͬͨͷʁʁ• ࢲ͕Γ͍ͨͷɺࠓޙͷ͜ͱߟ͑ͯػೳ֦ு͍͢͠ݟ௨͠ͷ͍͍ίʔυΛ͔͘͜ͱ• ͦͷͨΊʹΫϦʔϯΞʔΩςΫνϟͰͭ͘Γ͔ͨͬͨ• ͦͷͨΊʹϞσϦϯά͕ඞཁͩͱ͓ͬͨ
࠷ॳ͔Β͖Ε͍ͳϞσϦϯάΛ͠Α͏ͱͨ͠ͷ͕ѱ͔ͬͨͷͰʁ• Ϟσϧগͣͭ͠ਐา͍ͯ͘͠ͷ• εέʔϧͷ͜ͱ࠷ॳΕ͍͍ͯΜ͡Όͳ͍ʁ• Ϟσϧ୳ٻӔר͖
ϞσϦϯάʹࣝͷטΈࡅ͖ͷϑΣʔζ͕ඞཁ• 1ਓͰͰ͖Δ͜ͱͰͳ͍• ͪΌΜͱΫϥΠΞϯτ͞Μͷதʹ͍͍ͬͯͬͯɺ͔ͬ͠ΓΛ͠ͳ͍ͱμϝ• ΫϥΠΞϯτ͞Μ͕ཧղͰ͖ΔΑ͏ʹɺֆʹ͢ΔͳͲͯ͠ͱʹ͔͘טΈࡅ͘• ΞΠίχοΫϓϩηεͱ͍͏ͷ͕͋ΔΑ
ೲظίετͩͱݫ͍͠ͷͰ• ͪΌΜͱϞσϦϯά͢Δͷ͕͔͔࣌ؒΔ• ϞσϦϯά͚ͩͰԿϲ݄ͬͪΌ͏• ͓٬͞ΜͱϞσϧΛͭΊΔͷ͍͠• DDD͡Όͳͯ͘୯७ͳCRUDʹམͱ͠ࠐΜͩํ͕͍͍߹͋Δ
DDD༷ͱίʔυ͡Όͳͯ͘ɺ಄ͷதͱίʔυΛҰகͤ͞Δͱ͍͏͜ͱͰʁ• ͳΔ΄Ͳʂ
Βͬͨҙݟ͔Β Θ͔ͬͨ͜ͱ
DDDΛ࣮ફ͢Δ͜ͱͱΫϦʔϯΞʔΩςΫνϟͰ࡞Δ͜ͱΛͬͪ͝Όʹ͍ͯͨ͠• DDDΛ࣮ફ͢ΔͱΫϦʔϯΞʔΩςΫνϟͰ࡞Δ͜ͱʹͳΔͱ͍͏ࢥ͍ࠐΈ͕͋ͬͯɺͦΕ͕ͦͦצҧ͍ͩͬͨ
ΫϥΠΞϯτ͞Μͱͷͷ٧Ίํ͕ѹతʹ͔ͬͨ• ఆظMTGߦ͍͕ͬͯͨɺMTGͰܾ·Βͳ͍ࣄ߲ʹ͍ͭͯʮܾΊ͓͍͍ͯͯͩ͘͞ʯͱ͛ͯ͠·͍ͬͯͨ• PJཧπʔϧνϟοτπʔϧͰͷΦϯϥΠϯͰͷΓͱΓ͕͏·͘ػೳͤͣɺີͳΓͱΓ͕Ͱ͖͍ͯͳ͔ͬͨ• ૣ͍ஈ֊ͰΦϑϥΠϯͰͷΓͱΓΛ૿͖ͩͬͨ͢
࣍ʹྨࣅͷҊ͕݅͋Ε ࣮ફ͍ͨ͜͠ͱ
DDD͕͍͍ͯΔ͔Ͳ͏͔ݕ౼͢Δ• Ҋ݅ͷنظؒతʹίετʹݟ߹͏͔Ͳ͏͔• ϞσϦϯάͷίετ• ࣮ίετ
DDDΛ࣮ફ͢Δ߹ɺຊ࣭ΛݟޡΒͳ͍Α͏ʹ͍ͨ͠• ៉ྷͳઃܭͰ࡞ΔͨΊʹDDDͰΔ• ϢʔβʔઢͰͷࢥߟͱ࣮ࡍͷίʔυͷဃΛۃྗͳͨ͘͢ΊʹDDDͰΔ• υϝΠϯʹ͍ͭͯ͠߹͏͜ͱʹΑΓ։ൃऀҎ֎ͷਓ։ൃʹר͖ࠐΉ• ΫϥΠΞϯτ͞Μͷதʹ͍ͬͯɺͪΌΜͱҰॹʹ͠߹͏• ؔऀͷೝࣝΛυϝΠϯʹམͱ͠ࠐΈɺͦΕΛίʔυʹམͱ͠ࠐΉ• ಄ͷதͱίʔυΛҰகͤ͞Δ• ↑͜͜·ͰͰ͖Δͷ͕ཧͰ͋Δ͕ɺظؒతʹ͍͠߹ଥڠඞཁ
࠷ॳ͔Β͖Ε͍ͳͷΛ࡞Δ͜ͱʹͩ͜ΘΓ͗͢ͳ͍Α͏ʹ͢Δ• ࣗͷѱ͍บͩͱ͓͏
·ͱΊ• ॳɺ͕ࣗແ͗ͯؕͬͨ͢᠘͔ͱࢥ͍ͬͯͨͷͰ͕͢ҙ֎ͱ͋Γ͕ͪͷΑ͏Ͱ͢• ΈΜͳ͖Λ͚ͭͯʂ
͝੩ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠