Share
Embed
ドメインモデリングの始め方
ドメイン駆動設計の考え方は書籍を読むとわかりますが、いざモデリングを実践しようとすると、どこから手を付けていいかわからない、ドメインモデリングの始め方がよくわからないという意見を聞きます。
このスライド資料では、そんな悩みを持つ皆さんに向けて「ドメインモデルを見つけ出し・実装に落とし・改善していく」方法を、できるだけわかりやすく解説します。
かとじゅん
October 31, 2018
Transcript
49 slides
-
ࣗݾհ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork Ճ౻५Ұ ๏ ίΞςΫϊϩδʔ։ൃࣨ ๏ ΞʔΩςΫτ୲ ๏
4DBMBυϝΠϯۦಈઃܭ0"VUI -
%%%ຊҎ֎ʹಡΉͱΑ͍ ͔͠Εͳ͍ ຊ υϝΠϯϞσϦϯάͷ࢝Ίํ © 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 -
ϢʔβʔετʔϦϚοϐϯά υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ࣌ܥྻʹϢʔβߦಈΛચ͍ग़͠ɺߦಈʹج͍ͮͯཁٻΛݟཱͯΔख๏ɻ ๏ ؔऀ͕ू·ΓɺᝦࢴΛ༻͍ͯϫʔΫγϣοϓΛߦ͏ɻ ๏ ࢀՃऀͷݟΛੜ͔ͯ͠ɺཁٻΛൃݟɾચ͍ग़͢ɻ·ͨɺ༏ઌ͚Λߦ͏͜ͱͰείʔϓ(ػೳൣғ)Λ࣌ؒ
Ͱಛఆ͢Δ͜ͱͰ͖Δɻ ໘ ΞΫλʔ ετʔϦ ༏ઌߴ ༏ઌ .71 όοΫϘʔϯ FYI -
ͬͱϥΠτΣΠτʹ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ཁٻϞσϧʹUSMͷόοΫϘʔϯ ๏ ར༻γʔϯ/ۀϑϩʔ=USMͷ໘ ๏ ϢʔεέʔεϞσϧʹUSMͷετʔϦ
๏ Ծઆ ๏ ʮίϯςΩετϞσϧʴϢʔβετʔϦϚοϐϯάʴ֓೦Ϟσϧʯ Ͱಉ͡Α͏ͳՌ͕ಘΒ ΕΔͷͰͳ͍͔ɻ͔ͳΓϥΠτΣΠτʹͳΓͦ͏ͳؾ͕͠·͢ɻ ๏ ίϛϡχέʔγϣϯͱͯ͠USMͰेʹ༻Ͱ͖Δ͕ɺֆਤͱͯ͢͠ͱͳΔͱซ༻͢ΔՄ ೳੑ͋Γ ఏҊ -
υϝΠϯϞσϧ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ γεςϜԽରྖҬͷ֓೦(ࣝ)ΛιϑτΣΞ ߏʹϚοϐϯά͠ɺͦͷ֓೦ߏΛγεςϜ্ ʹ࠶ݱ͢Δ͜ͱ͕త ๏ ਅΛಥ͘υϝΠϯϞσϧʹ࠷ॳ͔Β౸ୡ͠ͳ͍ɻ
·ͣɺࣝͷ͔Έࡅ͖ͷϓϩηε͕ඞཁ γεςϜ֎෦ڥ RDRA -
υϝΠϯΛִ͢Δ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ͷҟͳΔɺUIσʔλϕʔε͔Β υϝΠϯΛִ͢Δ Ϣʔεέʔε (ΞϓϦέʔγϣϯ
αʔϏε) ΠϯλʔϑΣΠε(UI/API) ΠϯϑϥετϥΫνϟ (DB, RPC) υϝΠϯ DDD -
υϝΠϯΛִ͢Δ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ΫϦʔϯΞʔΩςΫνϟͰ͋ͬͯɺ υϝΠϯ͕Ͳͷ͔Βಠཱ͍ͯ͠ Δ͜ͱ υϝΠϯ
Ϣʔεέʔε ΠϯλʔϑΣΠε API Repository OutputPort Member UseCase MemberUseCase InputPort RepositoryImpl Event DDD -
υϝΠϯࣝΛίʔυͰදݱ͢Δ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ υϝΠϯࣝͷ࣮ମجຊσʔλʹର͢Δ அɾՃɾܭࢉϩδοΫ(by ΪϧυϫʔΫε ૿ా͞Μ)
๏ Getter/SetterͰͳ͍͜ͱʹҙ υϝΠϯɾΦϒδΣΫτ จࣈྻ அ Ճ ܭࢉ ΫϥΠΞϯτ -
υϝΠϯࣝΛίʔυͰදݱ͢Δ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ͓ۚΛநσʔλܕͱͯ͠දݱ͢Δྫ ๏ ͓ۚ෦ͷجຊσʔλΛ࿐͠ͳ͍Ͱɺૢ࡞͚ͩΛެ։͢Δ ๏
ΫϥΠΞϯτ͕ཉ͍͠ͷɺ෦σʔλͦͷͷͰͳ͍ -
υϝΠϯࣝΛίʔυͰදݱ͢Δ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ͓ۚͰͳ͍ɻ͓ۚͷྔͱ௨՟୯Ґʹ ؔ࿈͢ΔυϝΠϯࣝ ๏ ෦ͷଐੑΛ؆୯ʹ࿐͍ͯͯ͠ɺଘࡏҙ
͕ٛബΕΔ ๏ அɾՃɾܭࢉ͢ΔৼΔ͍Λఏڙ͢Δ ๏ Getter/SetterͷཏྻͰυϝΠϯࣝΛڽू Ͱ͖ͳ͍ɻ͜͏͍͏ৼΔ͍Ͳ͏ͬͯந ग़͢Δͷ͔ʁ -
*$0/*9 υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ RUP, XPͳͲͷΞδϟΠϧιϑτΣΞ։ൃΑΓ લ͔Βଘࡏ͢ΔιϑτΣΞ։ൃํ๏ͷҰͭɻ RUPΑΓܰྔɻ̐ͭͷϚΠϧετʔϯ͕͋Δ ICONIX
๏ ཁٻఆٛ ๏ ੳ/֓೦ઃܭ/ςΫχΧϧΞʔΩςΫνϟ ๏ ઃܭ/ίʔσΟϯά ๏ ςετ/ཁٻͷ -
Ϣʔεέʔεهड़Λ#$&ʹྨ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ BCEεςϨΦλΠϓΛϢʔεέʔεهड़্ͷީิ༻ޠʹৼ͓ͬͯ͘(Ճ౻ಠࣗͷํ๏) ๏ ʮγεςϜɺΠϕϯτΧςΰϦ(E)ʹجͮ͘ΠϕϯτϦετ(E)ΛؚΉΠϕϯτҰཡϖʔδ(B) Λදࣔ͢Δ(C)ʯ ๏
ʮγεςϜɺࢀՃऀ(E)ͱͯ͠ݱࡏͷϩάΠϯதͷϢʔβ(E)ΛΠϕϯτ(E)ʹՃ͢Δ(C)ʯ ( ) ( ) "&( ) !&(%) $ # ICONIX ੳ/ઃܭ -
ϩόετωεੳ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ৄࡉઃܭͷͨΊͷ༧උઃܭɻγʔέ ϯεਤΫϥεਤͷ࡞ΛޮԽ͢ Δ ๏ ໊ࢺʔಈࢺʔ໊ࢺͷܗࣜͰϢʔε
έʔεهड़ΛύλʔϯԽ͢Δ ๏ Ϣʔεέʔεهड़ͷෆΛൃݟ ๏ ༷ͷൈ͚࿙ΕΛൃݟ ๏ ସίʔεͷݕূ ๏ Ϣʔεέʔεهड़ͷϑΟʔυόο Ϋ ICONIX ੳ/ઃܭ -
γʔέϯεਤ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ Λج४ʹɺίϯτϩʔϧΛͲͷΤϯςΟςΟʹׂΓͯΔ͔Λߟ͑Δ ๏ ͦͷΤϯςΟςΟͱ͔Կ͔ ๏ ͦͷίϯτϩʔϧɺͲͷΤϯςΟςΟͷ(அ/Ճ/ܭࢉɻӬଓԽҎ֎)ͱͳΔ͖͔ʁ
ϩόετωεੳͰಘΒΕͨཁૉΛஔ ࠷ऴతͳੳ݁Ռ ICONIX ੳ/ઃܭ ๏ ׳ΕΕCRUDҎ֎ͷίϯτϩʔϧΛݟ͚ͭग़ ͠ɺͦΕʹؔ࿈͢ΔɺυϝΠϯΦϒδΣΫτΛ ΠϝʔδͰ͖ΔΑ͏ʹͳΔ -
&WFOU4UPSNJOH υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork ๏ ࠷ۙͷυϝΠϯੳͷख๏ɻEric͞ Μڧྗͳํ๏ͩͱೝΊ͍ͯΔ ๏ ूͱͦͷৼΔ͍Λݟ͚ͭΔϓϩηε ๏
υϝΠϯΠϕϯτΛ࡞Δ ๏ υϝΠϯΠϕϯτΛൃੜͤ͞ΔίϚϯ υΛՃ͢Δ ๏ ίϚϯυΛૹ৴͢ΔΞΫλʔΛՃ͢ Δ ๏ ͜ΕΒͷ݅ʹ;͞Θ͍͠ूΛߟ͑ Δ ๏ λΠϜϥΠϯΛ࡞ͬͯੳ͢Δɻ ๏ ॻ੶(ࣥචத) Alberto Brandolini ๏ https://leanpub.com/ introducing_eventstorming λΠϜϥΠϯ FYI -
͠ͳ͔ઃܭͱ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork DDD ҙਤͷ໌֬ͳΠϯλʔϑΣΠε ද໌ ෭࡞༻ͷͳ͍ؔ ๏ ϞσϧΛվྑ͢Δ͜ͱͰɺιϑτΣΞͷ֦ுมߋʹ͑ΒΕΔΑ͏ʹ͠ɺੜ࢈ੑΛ্ͤ͞Δ͜ͱ͕
Ͱ͖Δઃܭ ֓೦ͷྠֲ ดͨ͡ૢ࡞ ಠཱͨ͠Ϋϥε ઃܭΛ༧ଌՄೳʹ ઃܭΛߴ͍ڽूੑʹ ੳ/ઃܭ ๏ ࣌ؒͷ߹ͰɺશͯΛհͰ͖ͳ͍ͷͰɺҰ͚ͭͣͭͩհ͠·͢ -
෭࡞༻ͷͳ͍ؔύλʔϯ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork DDD ๏ mixInϝιουͰɺֆͷ۩(PaintΫϥε)ͱֆͷ ۩Λࠞͥ͋Θͤ·͢ ๏ ֆͷ۩ͷྔ(volume)ͱɺֆͷ۩ͷ৭Ͱ͋Δإྉ
(red,yellow,blue)Λߋ৽͠·͢ɻ෭࡞༻͕͏ ๏ ͜Ε͋ΔҙຯɺSetterͱ͍͑Δɻ -
෭࡞༻ͱʁ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork DDD ๏ DDDΑΓ ๏ ී௨ͷݴ༿Ͱ෭࡞༻(side-effect)ͱ͍͑ɺҙਤ͠ͳ͍݁ՌΛҙຯ͢Δ͕ɺίϯϐϡʔλՊֶͰɺγες Ϝͷঢ়ଶʹରͯ͠༩͑ΒΕΔɺ͋ΒΏΔӨڹΛҙຯ͢Δɻ
๏ ؆୯ʹ͍͏ͱ ๏ কདྷͷૢ࡞ʹӨڹΛٴ΅͢Ͱ͋Ζ͏ɺγεςϜͷঢ়ଶʹؔ͢Δ͋ΒΏΔมߋ ๏ mixInͷ࣮ߦɺকདྷͷmixInͷ࣮ߦʹӨڹΛ༩͑Δɻ -
෭࡞༻ͷͳ͍ؔύλʔϯͷޮՌ υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork DDD ๏ ෭࡞༻͕͏ϩδοΫΛɺ෭࡞༻͕Θͳ͍(߹ͤͱͯ͠ͷ)ؔͱɺ෭࡞༻Λ͏໋ྩΛ͚ͯ༻͍Δ͜ ͱͰɺ෭࡞༻Λ҆શʹہॴԽ͢Δ͜ͱ͕Ͱ͖Δ ๏ ҎԼʹࣔ͢Α͏ͳಋೖͷޮՌ͕͋Δ(DDDҾ༻)
๏ ৽ͨʹಋೖ͞ΕͨPigment Colorʮ෭࡞༻ͷͳ͍ؔʯΛఏڙ͠ɺͦͷ݁Ռཧղ͘͢͠ɺςετ͠ ͘͢ɺ҆શʹ͏͜ͱ͕Ͱ͖ɺଞͷૢ࡞ͱΈ߹Θ͍ͤ͢Α͏ʹͳ͍ͬͯΔɻ ๏ ৭ͷ߹ʹؔ͢ΔෳࡶͳϩδοΫશʹΧϓηϧԽ͞Ε͓ͯΓɺ։ൃऀ͕͜ͷΫϥεΛ͏ࡍʹ࣮ Λཧղ͢Δඞཁͳ͍ɻ -
ดͨ͡ૢ࡞ $-0463&0'01&3"5*0/4 υϝΠϯϞσϦϯάͷ࢝Ίํ © ChatWork DDD ๏ Ճࢉ(1 + 1
= 2)ɺ࣮ͷू߹ͷԼͰ”ด͍ͯ͡ Δ” ๏ ϞδϡʔϧͷڽूΛߴΊΔ͜ͱ͕Ͱ͖Δ ๏ ͜ͷύλʔϯɺֶతͳੑ࣭Λར༻͍ͯ͠Δ ๏ Ͳ͏͢Δ͔ʁ ๏ Γͷܕ͕ɺҾͷܕͱಉ͡ʹ͢Δ