Save 37% off PRO during our Black Friday Sale! »

ドメインモデリングの始め方

 ドメインモデリングの始め方

ドメイン駆動設計の考え方は書籍を読むとわかりますが、いざモデリングを実践しようとすると、どこから手を付けていいかわからない、ドメインモデリングの始め方がよくわからないという意見を聞きます。
このスライド資料では、そんな悩みを持つ皆さんに向けて「ドメインモデルを見つけ出し・実装に落とし・改善していく」方法を、できるだけわかりやすく解説します。

933291444e456bfb511a66a2fa9c6929?s=128

かとじゅん

October 31, 2018
Tweet

Transcript

  1. υϝΠϯϞσϦϯάͷ࢝Ίํ AWS Dev Day Tokyo 2018 Ճ౻५Ұ

  2. ࣗݾ঺հ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork Ճ౻५Ұ ๏ ίΞςΫϊϩδʔ։ൃࣨ ๏ ΞʔΩςΫτ୲౰ ๏

    4DBMBυϝΠϯۦಈઃܭ0"VUI
  3. ൃදͷલఏ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏͜ͷൃදͰڍ͛Δख๏Λͦͷ··ద༻͢ΔͱΑ͍ͱ͍͏ओுͰ͋Γ·ͤΜ ๏ରԠ͢Δॻ੶ΛಡΜͰ͍͖ͨͩɺօ༷ͷ؀ڥʹԠͯ͡ɺ࠷దԽ͍ͯͨͩ͘͠ඞཁ͕͋Γ·͢

  4. υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ύʔτ1 υϝΠϯΦϒδΣΫτͷݟ͚ͭํ ύʔτ2 υϝΠϯΦϒδΣΫτͷ࡞Γํ ύʔτ3 υϝΠϯΦϒδΣΫτͷҭͯํ

  5. υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork υϝΠϯΦϒδΣΫτͷݟ͚ͭํ ύʔτ1

  6. %%%ʹ͓͚ΔυϝΠϯͷֶͼํ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork DDD ୈ̍ষɹ஌ࣝΛ͔Έࡅ͘ ୈ̏ষɹϞσϧͱ࣮૷Λ݁ͼ͚ͭΔ ୈ̎ষɹίϛϡχέʔγϣϯͱݴޠͷ࢖͍ํ

  7. ஌ࣝͷטΈࡅ͖ͷલʹ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ΤϦοΫຊͰ͸ɺ͍͖ͳΓυϝΠϯϞσϧͷٞ࿦͔ΒೖΔ ๏υϝΠϯϞσϧʹḷΓͭͨ͘Ίʹɺ΄͔ʹ஌Δ΂͖ର৅͸ͳ͍ͩΖ͏͔ʁ

  8. υϝΠϯϞσϧͷલʹߟ͑Δ͜ͱ͕͋Δ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏υϝΠϯϞσϧΛར༻͢ΔϢʔεέʔε͸ͲͷΑ͏ͳ΋ͷ͔ʁ ๏Ϣʔεέʔε͸ɺͲΜͳۀ຿ϑϩʔ/ར༻γʔϯͰ୭͕ར༻͢Δ͔ʁ ๏ཁٻΛ࣋ͭར֐ؔ܎ऀͷॴଐ΍୲౰͸Կ͔ʁ ๏࿈ܞ͢Δ֎෦γεςϜ͸͋Δͷ͔ʁ ๏υϝΠϯϞσϧΛݟ͚ͭΔʹ͸ɺ͜͏͍ͬͨཁ݅ʹؔ܎͢ΔཁૉΛମܥతʹ੔ ཧ͠၆ᛌͰ͖ΔΑ͏ʹͨ͠ํ͕Α͍ͷͰ͸ͳ͍͔

    ໰୊ҙࣝ
  9. %%%ຊҎ֎ʹ΋ಡΉͱΑ͍ ͔΋͠Εͳ͍ ຊ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏υϝΠϯɺυϝΠϯϞσϧʹؔ܎͢Δຊ͸̏̔छ΋͋Δ… ๏Qittaʹ·ͱΊͯ͋Γ·͢ ๏໨తΛ࣋ͬͯಡΜͩํ͕Α͍ |[ΦϒδΣΫτࢦ޲ํ๏ংઆʪج൫ฤʫ](https://amzn.to/2SkM2Jw)|δΣʔϜζ

    Ϛʔνϯ|1995/10|487P|̋υϝΠϯͱ͍͏දه͕͋Δʂ|| |[࣮ફUML ύλʔϯʹΑΔ౷ҰϓϩηεΨΠυ ୈ̎൛](https://amzn.to/2OQnbPI)|ΫϨʔάɾϥʔϚϯ|1998/12/31|647P|̋໰୊ྖҬ(domain)Ϟσϧͱ͍͏දه|ϞσϦϯά͕ओମ| |[ϦϑΝΫλϦϯά ϓϩάϥϛϯάͷମ࣭վળςΫχοΫ](https://amzn.to/2RdpOHS)|ϚʔνϯɾϑΝ΢ϥʔ|2000/5/25|423P|̋|[৽૷൛](https://amzn.to/2PSyjrH)͋Γ| |[ιϑτ΢ΣΞΞʔΩςΫνϟ―ιϑτ΢ΣΞ։ൃͷͨΊͷύλʔϯମܥ](https://amzn.to/2Sp2g4j)|F. ϒογϡϚϯ ଞ|2000/12|454P|υϝΠϯ΍υϝΠϯϨΠϠʔͱ͍͏දه͕͋Δ|| |[Ϣʔεέʔεೖ໳―ϢʔβϚχϡΞϧ͔ΒϓϩάϥϜΛ࡞Δ](https://amzn.to/2PWgmbQ)|μάɾϩʔθϯόʔά/έϯυʔϧɾείοτ|2001/11/10|137P|̋|ཁٻ෼ੳͱϞσϦϯά͕ओ ମ| |[ϚϧνύϥμΠϜσβΠϯ](https://amzn.to/2ORRw0g)|δΣʔϜζɾO.ίϓϦϯ|2001/12|291P|̋υϝΠϯͱ͍͏දه͋Γ|[৽૷൛](https://amzn.to/2Rgj4Jf)͋ΓɻϞσϦϯά͕ओମ| |[ΞφϦγεύλʔϯ―࠶ར༻ՄೳͳΦϒδΣΫτϞσϧ](https://amzn.to/2Sk7IVZ)|ϚʔνϯɾϑΝ΢ϥʔ|2002/04|̏̒̌P|υϝΠϯΤΩεύʔτͱ͍͏༻ޠ͕ొ৔͢Δ|| |[ετϦʔϜϥΠϯΦϒδΣΫτϞσϦϯά](https://amzn.to/2PWR25B)|δϧɾχίϥɾଞ|̎̌̌̎/12/20|355P|υϝΠϯͱ͍͏༻ޠ͸ొ৔͢Δ|| |[ΞδϟΠϧϞσϦϯά―XPͱ౷ҰϓϩηεΛิ׬͢ΔϓϥΫςΟε](https://amzn.to/2PZnh3O)|είοτɾWɽΞϯϒϥʔ|2003/8/6|473P|̋υϝΠϯɺυϝΠϯϞσϧɺυϝΠϯί ϯϙʔωϯτͱ͍͏දه|| |[σʔλϕʔεઃܭͷͨΊͷUML](https://amzn.to/2Riadqu)|ΤϦοΫɾJ. φΠόʔάɺ ϩόʔτɾA. ϚΫγϜνϟοΫ|2003/9/13|312P|खݩͷͳ͍ͷͰෆ໌|| |[ΤϯλʔϓϥΠζΞϓϦέʔγϣϯΞʔΩςΫνϟύλʔϯ](https://amzn.to/2PXHuab)|ϚʔνϯɾϑΝ΢ϥʔ|2005/4/20||̋|| |[ΦϒδΣΫτ։ൃͷਆ਷ UML 2.0Λ࢖ͬͨΞδϟΠϧϞσϧۦಈ։ൃͷ͢΂ͯ](https://amzn.to/2OSAU8N)|είοτɾΞϯϒϥʔ|2005/7/25|571P|̋|| |[ϏδωεύλʔϯʹΑΔϞσϧۦಈઃܭ](https://amzn.to/2RhKvmi)|ύϕϧϑϧʔϏʔ/Τεύʔ Ωʔϯ/ΫϦενϟϯɾόΠϒγΣϥʔ|2007/8/9|408P|̋|| |[ΦϒδΣΫτσβΠϯ](https://amzn.to/2OPMTnl)|ϨϕοΧɾϫʔϑεϒϥοΫ|2007/9/13|488P|̋|| |[Ϣʔεέʔεۦಈ։ൃ࣮ફΨΠυ](https://amzn.to/2PTSsO0)|μάɾϩʔθϯόʔά/ϚοτɾεςϑΝϯ|2007/10/6|512P|̋|ཁٻ෼ੳͱϞσϦϯά͕ओମ| |[δΣωϨʔςΟϒϓϩάϥϛϯά](https://amzn.to/2OOQzFL)|ΫγγϡτϑɾνϟϧωοΩ|2008/4/21|776P|̋|| |[ΞδϟΠϧιϑτ΢ΣΞ։ൃͷԞٛ ୈ2൛ ΦϒδΣΫτࢦ޲։ൃͷਆ਷ͱঊͷٕ](https://amzn.to/2OQCho7)|ϩόʔτɾC. Ϛʔνϯ|2008/7/1|712P|υϝΠϯΫϥε|| |[ThoughtWorksΞϯιϩδʔ――ΞδϟΠϧͱΦϒδΣΫτࢦ޲ʹΑΔιϑτ΢ΣΞΠϊϕʔγϣϯ](https://amzn.to/2OTzQl2)|ThoughtWorks|2008/12/27|276P|̋|| |[ΞʔτɾΦϒɾΞδϟΠϧ σϕϩοϓϝϯτ ―૊৫Λ੒ޭʹಋ͘ΤΫετϦʔϜϓϩάϥϛϯά](https://amzn.to/2Rl6etz)|δΣʔϜεɾγϣΞɺ ΫϩϚνοΫ|2009/2/18|464P|◦ϢϏ Ωλεݴޠ΋ొ৔͢Δ|| |[ΞʔΩςΫτͷ৹ඒ؟](https://amzn.to/2SgHPqa)|ഡݪ ਖ਼ٛ|2009/3/3|240P|̋|| |[Clean Code ΞδϟΠϧιϑτ΢ΣΞୡਓͷٕ](https://amzn.to/2EPRRvF)|ϩόʔτɾC. Ϛʔνϯ|2009/5/28|528P|̋υϝΠϯɺDSLͱ͍͏දه͕͋Δ|[৽૷൛ʁ](https://amzn.to/ 2yDTzL5)͕͋Δ| |[Domain Driven DesignʢυϝΠϯۦಈઃܭʣ Quickly ೔ຊޠ൛](https://www.infoq.com/jp/minibooks/domain-driven-design-quickly)|Abel Avram ࢯͱ Floyd Marinescu ࢯ|̎̌̌̕/6/7|| ̋|ϞσϦϯά͕ओମ |[ϨΨγʔίʔυվળΨΠυ](https://amzn.to/2Sj1GF4)|ϚΠέϧɾCɽϑΣβʔζ|2009/7/14|472P|υϝΠϯΫϥεͱ͍͏දݱ|| |[ΤϦοΫɾΤϰΝϯεͷυϝΠϯۦಈઃܭ](https://amzn.to/2RhJWJc)|ΤϦοΫɾΤϰΝϯε|2011/4/8|576P|̋|ϞσϦϯά͕ओମ| |[UMLϞσϦϯάͷຊ࣭ ୈ2൛](https://amzn.to/2Rf3bTk)|ࣇۄ ެ৴|2011/5/26|296P|υϝΠϯϞσϦϯάͱؔ࿈͕͋Δ|| |[αʔϏεσβΠϯύλʔϯ SOAP/WSDLͱRESTful WebαʔϏεͷجຊతͳઃܭιϦϡʔγϣϯ](https://amzn.to/2yArHHM)|Robert Daigneau|2012/8/24|320P|खݩʹͳ͍ͷͰෆ໌|| |[૊৫ύλʔϯ](https://amzn.to/2RgnsYJ)|δΣʔϜζɾO.ίϓϦϯ|2013/8/6|583P|υϝΠϯͱ͍͏༻ޠ͸ొ৔͢Δ|| |[Ϟσϧϕʔεཁ݅ఆٛςΫχοΫ](https://amzn.to/2ReTDIc)|ਆ࡚ ળ࢘|2013/9/24|415P|̋|ϞσϧΛ࢖ͬͨཁ݅ఆ͕ٛओମ| |[࣮ફυϝΠϯۦಈઃܭ](https://amzn.to/2ReMTKo)|ϰΝʔϯɾϰΝʔϊϯ|2015/3/17|616P|̋|ϞσϧΛ࣮૷ʹ൓ө͢Δ͜ͱ͕ओମ| |[ɽ̣̩̚ͷΤϯλʔϓϥΠζΞϓϦέʔγϣϯΞʔΩςΫνϟɹୈ̎൛](https://amzn.to/2Sjkrs7)|ΞϯυϨΞαϧλϨϩ/σΟϊΤεϙγτ|2015/6/4|432P|̋|ϞσϧΛ࣮૷ʹ൓ө͢Δ ͜ͱ͕ओମ| |[ϏϤϯυ ιϑτ΢ΣΞ ΞʔΩςΫνϟ](https://amzn.to/2RdlQiz)|ϧʔΫɾϗϑϚϯ/Ԭᖒ ༟ೋ|2015/10/2|368P|̋|| |[ϚΠΫϩαʔϏεΞʔΩςΫνϟ](https://amzn.to/2OR4VFC)|αϜχϡʔϚϯ|2016/2/26|344P|දه͸ಛʹͳ͍͕ɺDDDͱͷ໌֬ͳؔ࿈͕͋Δ|| |[ϓϦϯγϓϧ Φϒ ϓϩάϥϛϯά3೥໨·Ͱʹ਎ʹ͚͍ͭͨҰੜ໾ཱͭ101ͷݪཧݪଇ](https://amzn.to/2EQtIoS)|্ా ܄|2016/3/23|304P|̋υϝΠϯۦಈઃܭͱؔ࿈͢ΔίϥϜ͋Γ|| |[Functional and Reactive Domain Modeling](https://amzn.to/2EJuHY4)|Debasish Ghosh|2016/10/24|320P|◦|| |[ϨΨγʔιϑτ΢ΣΞվળΨΠυ](https://amzn.to/2Rez52E)|ΫϦεɾόʔνϟϧ|2016/11/11|264P|̋|| |[Θ͔ΔʂυϝΠϯۦಈઃܭ ʙ΋ͪͪ͜ΌΜͷେ๯ݥʙʲC91৽ץʳ](https://booth.pm/ja/items/392260)|͋Μ͍͟Ώ͖,ͻͭ͡|̎̌̍̒/̍̎/̎̕||̋|ϞσϦϯά͕ओମ| |[ݱ৔Ͱ໾ཱͭγεςϜઃܭͷݪଇ ʙมߋΛָͰ҆શʹ͢ΔΦϒδΣΫτࢦ޲ͷ࣮ફٕ๏](https://amzn.to/2SkJlI2)|૿ా ྃ|2017/7/5|422P|̋|ϞσϦϯά͕ओମ| |[ΞϓϦέʔγϣϯΞʔΩςΫνϟઃܭύλʔϯ](https://amzn.to/2ONirKC)|੪౻ݡ࠸|2017/10/12|893P|̋υϝΠϯΦϒδΣΫτͱ͍͏දهͷํ͕ଟ͍|| |[Clean Architecture ୡਓʹֶͿιϑτ΢ΣΞͷߏ଄ͱઃܭ](https://amzn.to/2RhNr2i)|ϩόʔτɾC. Ϛʔνϯ|2018/7/27|469P|̋υϝΠϯΦϒδΣΫτͱ͍͏දهͷํ͕ଟ͍|| FYI
  10. ϦϨʔγϣϯγοϓཁ݅ۦಈ෼ੳ 3%3" υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ໢ཏతͰ੔߹ੑͷ͋Δཁ݅ఆٛΛUMLͷදݱྗΛ ࢖ͬͯɺཁ݅ఆٛͱͯ͠·ͱΊΔख๏ΛϦϨʔγϣ ϯγοϓۦಈཁ݅෼ੳ(RDRA)ͱ͍͏ ๏

    ໢ཏత ๏ ੔߹ੑ ๏ දݱྗ RDRA
  11. ཁ݅ఆٛͷཁૉγεςϜΛޠΔͷʹෆՄܽͳཁૉ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork RDRA γεςϜՁ஋ γεςϜ֎෦؀ڥ γεςϜڥք γεςϜ

  12. ཁ݅ఆٛͱઃܭͷཁૉ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork      

                     /  RDRA
  13. υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork γεςϜՁ஋ RDRA

  14. ίϯςΩετϞσϧ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ γεςϜ΁ͷཁٻΛൃੜͤ͞ΔݩͱͳΔར֐ؔ܎ऀɾ ֎෦γεςϜΛચ͍ग़ͨ͢ΊʹίϯςΩετϞσϧ Λ࡞੒͢Δ γεςϜՁ஋ RDRA

  15. ཁٻϞσϧ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ֤ΞΫλʔ͕͍࣋ͬͯΔɺػೳཁٻɾඇػೳཁٻΛચ ͍ग़͢ ๏ ։ൃऀ͸ػೳʹؔ৺͕޲͔͍͕ͪɻػೳͷࠜݯͱͳ ΔཁٻΛ੔ཧ͢Δ͜ͱ͸੔߹ੑͷऔΕͨγεςϜΛ࡞

    ΔͨΊʹඞཁ γεςϜՁ஋ RDRA
  16. υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork γεςϜ֎෦؀ڥ RDRA

  17. ར༻γʔϯ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ൚༻తʹར༻͞ΕΔπʔϧ΍αʔϏεͳͲͷఏڙΛ໨తʹ͢Δ৔߹͸ɺར༻γʔϯΛར֐ؔ܎ऀผʹ੔ཧ͢ Δ(ಛఆͷۀ຿͕ର৅Ͱ͋Ε͹ɺۀ຿ϑϩʔ)ɻ ๏ γεςϜ͕ͲͷΑ͏ͳ৔໘Ͱར༻͞ΕɺͲͷΑ͏ͳՁ஋ΛੜΈग़͔͢Λଊ͑Δ γεςϜ֎෦؀ڥ

    RDRA
  18. ֓೦Ϟσϧ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ର৅ͱͳΔۀ຿΍ར༻γʔϯͰͲΜͳ༻ޠ΍֓೦͕࢖Θ Ε͍ͯΔ͔੔ཧ͢Δ γεςϜ֎෦؀ڥ RDRA

  19. υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork γεςϜڥք RDRA

  20. ϢʔεέʔεϞσϧ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ γεςϜԽ͢Δൣғ͸Ͳ͜·Ͱ͔ɻ ๏ γεςϜͱͷ઀఺͸ͲͷΑ͏ʹͳΔͷ͔Λ໌֬ ʹ͢ΔͨΊʹɺϢʔεέʔεϞσϧΛ࡞੒͢Δ γεςϜڥք

    RDRA
  21. ϢʔβʔετʔϦϚοϐϯά υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ࣌ܥྻʹϢʔβߦಈΛચ͍ग़͠ɺߦಈʹج͍ͮͯཁٻΛݟཱͯΔख๏ɻ ๏ ؔ܎ऀ͕ू·Γɺ෇ᝦ΍໛଄ࢴΛ༻͍ͯϫʔΫγϣοϓΛߦ͏ɻ ๏ ࢀՃऀͷ஌ݟΛੜ͔ͯ͠ɺཁٻΛൃݟɾચ͍ग़͢ɻ·ͨɺ༏ઌ౓෇͚Λߦ͏͜ͱͰείʔϓ(ػೳൣғ)Λ୹࣌ؒ

    Ͱಛఆ͢Δ͜ͱ΋Ͱ͖Δɻ ৔໘ ΞΫλʔ ετʔϦ ༏ઌ౓ߴ ༏ઌ౓௿ .71 όοΫϘʔϯ FYI
  22. ΋ͬͱϥΠτ΢ΣΠτʹ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ཁٻϞσϧʹUSMͷόοΫϘʔϯ ๏ ར༻γʔϯ/ۀ຿ϑϩʔ=USMͷ৔໘ ๏ ϢʔεέʔεϞσϧʹUSMͷετʔϦ

    ๏ Ծઆ ๏ ʮίϯςΩετϞσϧʴϢʔβετʔϦϚοϐϯάʴ֓೦Ϟσϧʯ Ͱ΋ಉ͡Α͏ͳ੒Ռ͕ಘΒ ΕΔͷͰ͸ͳ͍͔ɻ͔ͳΓϥΠτ΢ΣΠτʹͳΓͦ͏ͳؾ͕͠·͢ɻ ๏ ίϛϡχέʔγϣϯͱͯ͠͸USMͰे෼ʹ୅༻Ͱ͖Δ͕ɺֆਤͱͯ͠࢒͢ͱͳΔͱซ༻͢ΔՄ ೳੑ͋Γ ఏҊ
  23. υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork γεςϜ RDRA

  24. υϝΠϯϞσϧ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ γεςϜԽର৅ྖҬͷ֓೦(஌ࣝ)Λιϑτ΢ΣΞ ߏ଄ʹϚοϐϯά͠ɺͦͷ֓೦ߏ଄ΛγεςϜ্ ʹ࠶ݱ͢Δ͜ͱ͕໨త ๏ ਅΛಥ͘υϝΠϯϞσϧʹ͸࠷ॳ͔Β౸ୡ͠ͳ͍ɻ

    ·ͣ͸ɺ஌ࣝͷ͔Έࡅ͖ͷϓϩηε͕ඞཁ γεςϜ֎෦؀ڥ RDRA
  25. υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork υϝΠϯΦϒδΣΫτͷ࡞Γํ ύʔτ2

  26. υϝΠϯ஌ࣝΛͲ͏࣮૷ʹ൓ө͢Δ͔ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ RDRAͷΑ͏ͳཁٻ෼ੳͷϓϩηεΛར༻͢Ε͹ɺυϝΠϯϞσϧͷࠜڌΛٻΊΔ ͜ͱ͕Ͱ͖Δ͕ɺݟ͚ͭͨυϝΠϯ஌ࣝΛ࣮૷ʹ൓өͰ͖ͳ͚Ε͹ҙຯ͕ͳ͍ ๏ ߹ཧతʹυϝΠϯϞσϧශ݂঱ΛճආͰ͖Δํ๏࿦͸ͳ͍͔ʁ ICONIX

    ໰୊ҙࣝ
  27. υϝΠϯΦϒδΣΫτͷ࡞Γํ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork υϝΠϯ஌ࣝΛίʔυʹ൓ө͢Δ ৼΔ෣͍ͷׂΓ౰ͯํ υϝΠϯ૚Λִ཭͢Δ

  28. υϝΠϯΛִ཭͢Δ  υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ੹຿ͷҟͳΔɺUI΍σʔλϕʔε͔Β υϝΠϯΛִ཭͢Δ Ϣʔεέʔε૚ (ΞϓϦέʔγϣϯ

    αʔϏε૚) ΠϯλʔϑΣΠε૚(UI/API) ΠϯϑϥετϥΫνϟ૚ (DB, RPC) υϝΠϯ૚ DDD
  29. υϝΠϯΛִ཭͢Δ  υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ΫϦʔϯΞʔΩςΫνϟͰ͋ͬͯ΋ɺ υϝΠϯ૚͕Ͳͷ૚͔Β΋ಠཱ͍ͯ͠ Δ͜ͱ υϝΠϯ૚

    Ϣʔεέʔε૚ ΠϯλʔϑΣΠε૚ API Repository OutputPort Member UseCase MemberUseCase InputPort RepositoryImpl Event DDD
  30. υϝΠϯ஌ࣝΛίʔυͰදݱ͢Δ  υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ υϝΠϯ஌ࣝͷ࣮ମ͸جຊσʔλʹର͢Δ൑ அɾՃ޻ɾܭࢉϩδοΫ(by ΪϧυϫʔΫε ૿ా͞Μ)

    ๏ Getter/SetterͰ͸ͳ͍͜ͱʹ஫ҙ υϝΠϯɾΦϒδΣΫτ จࣈྻ ਺஋ ೔෇ ൑அ Ճ޻ ܭࢉ ΫϥΠΞϯτ
  31. υϝΠϯ஌ࣝΛίʔυͰදݱ͢Δ  υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ͓ۚΛந৅σʔλܕͱͯ͠දݱ͢Δྫ ๏ ͓ۚ಺෦ͷجຊσʔλΛ๫࿐͠ͳ͍Ͱɺૢ࡞͚ͩΛެ։͢Δ ๏

    ΫϥΠΞϯτ͕ཉ͍͠΋ͷ͸ɺ಺෦σʔλͦͷ΋ͷͰ͸ͳ͍
  32. υϝΠϯ஌ࣝΛίʔυͰදݱ͢Δ  υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ͓ۚ͸਺஋Ͱ͸ͳ͍ɻ͓ۚͷྔͱ௨՟୯Ґʹ ؔ࿈͢ΔυϝΠϯ஌ࣝ ๏ ಺෦ͷଐੑΛ؆୯ʹ๫࿐͍ͯͯ͠͸ɺଘࡏҙ

    ͕ٛബΕΔ ๏ ൑அɾՃ޻ɾܭࢉ͢ΔৼΔ෣͍Λఏڙ͢Δ ๏ Getter/SetterͷཏྻͰ͸υϝΠϯ஌ࣝΛڽू Ͱ͖ͳ͍ɻ͜͏͍͏ৼΔ෣͍͸Ͳ͏΍ͬͯந ग़͢Δͷ͔ʁ
  33. υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ৼΔ෣͍ͷׂΓ౰ͯํ ICONIX

  34. *$0/*9 υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ RUP, XPͳͲͷΞδϟΠϧιϑτ΢ΣΞ։ൃΑΓ΋ લ͔Βଘࡏ͢Διϑτ΢ΣΞ։ൃํ๏࿦ͷҰͭɻ RUPΑΓܰྔɻ̐ͭͷϚΠϧετʔϯ͕͋Δ ICONIX

    ๏ ཁٻఆٛ ๏ ෼ੳ/֓೦ઃܭ/ςΫχΧϧΞʔΩςΫνϟ ๏ ઃܭ/ίʔσΟϯά ๏ ςετ/ཁٻͷ௥੻
  35. ϢʔεέʔεͱυϝΠϯΦϒδΣΫτͷؔ࿈͚ͮ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ϢʔεέʔεΛυϝΠϯΦϒδΣΫτʹؔ࿈͚ͮΔͨΊʹɺϩόετωε෼ੳΛߦ͏ ๏ ϩόετωε෼ੳͰ͸ɺϢʔεέʔεهड़Λ෼ੳ͠ɺ࠷ॳͷΦϒδΣΫτ܈(ό΢ϯμϦɺυϝΠϯΦϒ δΣΫτɺίϯτϩʔϧͷࡾछྨ)Λਪఆ͢Δɻ 

       ICONIX ෼ੳ/ઃܭ Ϣʔεέʔε γʔέϯεਤ
  36. Ϣʔεέʔεهड़Λ#$&ʹ෼ྨ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ BCEεςϨΦλΠϓΛϢʔεέʔεهड़্ͷީิ༻ޠʹৼ͓ͬͯ͘(Ճ౻ಠࣗͷํ๏) ๏ ʮγεςϜ͸ɺΠϕϯτΧςΰϦ(E)ʹجͮ͘ΠϕϯτϦετ(E)ΛؚΉΠϕϯτҰཡϖʔδ(B) Λදࣔ͢Δ(C)ʯ ๏

    ʮγεςϜ͸ɺࢀՃऀ(E)ͱͯ͠ݱࡏͷϩάΠϯதͷϢʔβ(E)ΛΠϕϯτ(E)ʹ௥Ճ͢Δ(C)ʯ  (   )   ( ) "&(   ) !&(%) $ # ICONIX ෼ੳ/ઃܭ
  37. ϩόετωε෼ੳ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ৄࡉઃܭͷͨΊͷ༧උઃܭɻγʔέ ϯεਤ΍Ϋϥεਤͷ࡞੒Λޮ཰Խ͢ Δ ๏ ໊ࢺʔಈࢺʔ໊ࢺͷܗࣜͰϢʔε

    έʔεهड़ΛύλʔϯԽ͢Δ ๏ Ϣʔεέʔεهड़ͷෆ଍Λൃݟ ๏ ࢓༷ͷൈ͚࿙ΕΛൃݟ ๏ ୅ସίʔεͷݕূ ๏ Ϣʔεέʔεهड़΁ͷϑΟʔυόο Ϋ ICONIX ෼ੳ/ઃܭ
  38. γʔέϯεਤ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ੹຿Λج४ʹɺίϯτϩʔϧΛͲͷΤϯςΟςΟʹׂΓ౰ͯΔ͔Λߟ͑Δ ๏ ͦͷΤϯςΟςΟͱ͔Կ͔ ๏ ͦͷίϯτϩʔϧ͸ɺͲͷΤϯςΟςΟͷ੹຿(൑அ/Ճ޻/ܭࢉɻӬଓԽҎ֎)ͱͳΔ΂͖͔ʁ

    ϩόετωε෼ੳͰಘΒΕͨཁૉΛ഑ஔ ࠷ऴతͳ෼ੳ݁Ռ ICONIX ෼ੳ/ઃܭ ๏ ׳ΕΕ͹CRUDҎ֎ͷίϯτϩʔϧΛݟ͚ͭग़ ͠ɺͦΕʹؔ࿈͢ΔɺυϝΠϯΦϒδΣΫτΛ ΠϝʔδͰ͖ΔΑ͏ʹͳΔ
  39. &WFOU4UPSNJOH υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ࠷ۙ࿩୊ͷυϝΠϯ෼ੳͷख๏ɻEric͞ Μ΋ڧྗͳํ๏ͩͱೝΊ͍ͯΔ ๏ ू໿ͱͦͷৼΔ෣͍Λݟ͚ͭΔϓϩηε ๏

    υϝΠϯΠϕϯτΛ࡞Δ ๏ υϝΠϯΠϕϯτΛൃੜͤ͞ΔίϚϯ υΛ௥Ճ͢Δ ๏ ίϚϯυΛૹ৴͢ΔΞΫλʔΛ௥Ճ͢ Δ ๏ ͜ΕΒͷ৚݅ʹ;͞Θ͍͠ू໿Λߟ͑ Δ ๏ λΠϜϥΠϯΛ࡞ͬͯ෼ੳ͢Δɻ ๏ ॻ੶(ࣥචத) Alberto Brandolini ๏ https://leanpub.com/ introducing_eventstorming λΠϜϥΠϯ FYI
  40. υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork υϝΠϯΦϒδΣΫτͷҭͯํ ύʔτ3

  41. υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ୈ෦ΑΓਂ͍ಎ࡯΁޲͔͏ϦϑΝΫλϦϯά ୈষ͠ͳ΍͔ͳઃܭ DDD ෼ੳ/ઃܭ

  42. ͠ͳ΍͔ઃܭͱ͸ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork DDD ҙਤͷ໌֬ͳΠϯλʔϑΣΠε ද໌ ෭࡞༻ͷͳ͍ؔ਺ ๏ ϞσϧΛվྑ͢Δ͜ͱͰɺιϑτ΢ΣΞͷ֦ு΍มߋʹ଱͑ΒΕΔΑ͏ʹ͠ɺੜ࢈ੑΛ޲্ͤ͞Δ͜ͱ͕

    Ͱ͖Δઃܭ ֓೦ͷྠֲ ดͨ͡ૢ࡞ ಠཱͨ͠Ϋϥε ઃܭΛ༧ଌՄೳʹ ઃܭΛߴ͍ڽूੑʹ ෼ੳ/ઃܭ ๏ ࣌ؒͷ౎߹ͰɺશͯΛ঺հͰ͖ͳ͍ͷͰɺҰ͚ͭͣͭͩ঺հ͠·͢
  43. ෭࡞༻ͷͳ͍ؔ਺ύλʔϯ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork DDD ๏ mixInϝιουͰ͸ɺֆͷ۩(PaintΫϥε)ͱֆͷ ۩Λࠞͥ͋Θͤ·͢ ๏ ֆͷ۩ͷྔ(volume)ͱɺֆͷ۩ͷ৭Ͱ͋Δإྉ

    (red,yellow,blue)Λߋ৽͠·͢ɻ෭࡞༻͕൐͏ ๏ ͜Ε͸͋ΔҙຯɺSetterͱ͍͑Δɻ
  44. ෭࡞༻ͱ͸ʁ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork DDD ๏ DDDΑΓ ๏ ී௨ͷݴ༿Ͱ෭࡞༻(side-effect)ͱ͍͑͹ɺҙਤ͠ͳ͍݁ՌΛҙຯ͢Δ͕ɺίϯϐϡʔλՊֶͰ͸ɺγες Ϝͷঢ়ଶʹରͯ͠༩͑ΒΕΔɺ͋ΒΏΔӨڹΛҙຯ͢Δɻ

    ๏ ؆୯ʹ͍͏ͱ ๏ কདྷͷૢ࡞ʹӨڹΛٴ΅͢Ͱ͋Ζ͏ɺγεςϜͷঢ়ଶʹؔ͢Δ͋ΒΏΔมߋ ๏ mixInͷ࣮ߦ͸ɺকདྷͷmixInͷ࣮ߦʹӨڹΛ༩͑Δɻ
  45. إྉͷ෭࡞༻ΛہॴԽͨ͠ྫ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork DDD

  46. ෭࡞༻ͷͳ͍ؔ਺ύλʔϯͷޮՌ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork DDD ๏ ෭࡞༻͕൐͏ϩδοΫΛɺ෭࡞༻͕൐Θͳ͍(໰߹ͤͱͯ͠ͷ)ؔ਺ͱɺ෭࡞༻Λ൐͏໋ྩΛ෼͚ͯ༻͍Δ͜ ͱͰɺ෭࡞༻Λ҆શʹہॴԽ͢Δ͜ͱ͕Ͱ͖Δ ๏ ҎԼʹࣔ͢Α͏ͳಋೖͷޮՌ͕͋Δ(DDDҾ༻)

    ๏ ৽ͨʹಋೖ͞ΕͨPigment Color͸ʮ෭࡞༻ͷͳ͍ؔ਺ʯΛఏڙ͠ɺͦͷ݁Ռ͸ཧղ͠΍͘͢ɺςετ͠ ΍͘͢ɺ҆શʹ࢖͏͜ͱ͕Ͱ͖ɺଞͷૢ࡞ͱ૊Έ߹Θͤ΍͍͢Α͏ʹͳ͍ͬͯΔɻ ๏ ৭ͷ߹੒ʹؔ͢ΔෳࡶͳϩδοΫ͸׬શʹΧϓηϧԽ͞Ε͓ͯΓɺ։ൃऀ͕͜ͷΫϥεΛ࢖͏ࡍʹ͸࣮૷ Λཧղ͢Δඞཁ΋ͳ͍ɻ
  47. ดͨ͡ૢ࡞ $-0463&0'01&3"5*0/4 υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork DDD ๏ Ճࢉ(1 + 1

    = 2)͸ɺ࣮਺ͷू߹ͷԼͰ”ด͍ͯ͡ Δ” ๏ Ϟδϡʔϧͷڽू౓ΛߴΊΔ͜ͱ͕Ͱ͖Δ ๏ ͜ͷύλʔϯ͸ɺ਺ֶతͳੑ࣭Λར༻͍ͯ͠Δ ๏ Ͳ͏͢Δ͔ʁ ๏ ໭Γ஋ͷܕ͕ɺҾ਺ͷܕͱಉ͡ʹ͢Δ
  48. υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ

  49. υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork http://corp.chatwork.com/ja/recruit/ We’re Hiring!!