Slide 1

Slide 1 text

ϏδωεΛ ιϑτ΢ΣΞ Ϟσϧۦಈܕ։ൃ ʹΑΔ ΍Γํ ̍ ͭ ʹམ͠ࠐΉ ͷ

Slide 2

Slide 2 text

増田流 派 %%% ア ク テ ィ ア

Slide 3

Slide 3 text

޻ۀత Ͱ͸ͳ͘ɺ

Slide 4

Slide 4 text

޻ܳత

Slide 5

Slide 5 text

υϝΠϯ஌ࣝ ਖ਼ ૷ ਪ͠ͷϢχϑΥʔϜΛ ணͯొஃ͢Δ͜ͱ

Slide 6

Slide 6 text

ߴ ࡚ ݈ ଠ ࿠ גࣜձࣾΞΫςΟΞɹ$00 %%%"MMJBODFओ࠵ ঊक़ɹक़௕ Ϟσϧϕʔειϑτ΢ΣΞ։ൃίϛϡχςΟओ࠵ Α͜͸·Ϋϥ΢υษڧձओ࠵ ,FOUBSP5","4",* ̘ 0 ̤

Slide 7

Slide 7 text

ɹഎܠ ɹݴ༿Λڞ༗ ɹශ݂ͱͷઓ͍

Slide 8

Slide 8 text

背景

Slide 9

Slide 9 text

υϝΠϯͷഎܠΛ஌Δ

Slide 10

Slide 10 text

A c t i e r A c t i e r גࣜձࣾΞΫςΟΞ ॴࡏ஍ɹɹɹɿɹ౦ژ౎தԝ۠೔ຊڮງཹொ ઃཱɹɹɹɹɿɹ೥ɹ݄ ϗʔϜϖʔδɿɹIUUQXXXBDUJFSDPKQ ैۀһ਺ɹɹɿɹ໊ʢऔక໾ؚΉʣ ΍ͬͯΔ͜ͱɿɹϞσϧۦಈܕ։ൃ΍%%%Λ׆͔ͨ͠ ιϑτ΢ΣΞ։ൃ

Slide 11

Slide 11 text

A c t i e r A c t i e r גࣜձࣾΞΫςΟΞ +BWB✕%%% ͷೱ͍؀ڥ ࣾһืूதʂ

Slide 12

Slide 12 text

世 界 大炎上

Slide 13

Slide 13 text

ͳͥɺ ϓϩδΣΫτ ͸ Ԍ্͢Δͷ͔ʁ

Slide 14

Slide 14 text

૊৫΍ਓ Ϛωδϝϯτͷࣦഊ ϓϩηε ϦεΫίϯτϩʔϧͷܽ೗ ιϑτ΢ΣΞͷෳࡶੑ มԽ΁ͷରԠ ʲ༷ʑͳཧ༝ʳ FUD

Slide 15

Slide 15 text

ෳࡶ ʲٕज़తʹରԠͰ͖ΔॴΛɺ෼͔Γ΍͘͢ʳ γϯϓϧ

Slide 16

Slide 16 text

ʲϞσϦϯάʳ ސ٬ ސ٬*%
 ސ٬໊ ஫จ ஫จ*%
 ஫จ೔ ܾࡋ ΫϨδοτΧʔυ ݱۚ ͋Δ෺ମ΍ࣄ৅ʹ͍ͭͯண໨͍ͯ͠Δಛ௃΍ɺಉछͷෳ਺ͷର৅ʹڞ௨͢Δੑ࣭Λநग़͠ɺ ࠣ຤ͳࡉ෦Λ؆ུԽͨ͠ந৅తͳ໛ܕʢϞσϧʣΛ࡞੒͢Δ͜ͱɹʢF8PSETΑΓʣ Ϋϥεਤ ϞσϧΛ࡞Δ͜ͱͰ෼͔Γ΍͘͢͢Δ

Slide 17

Slide 17 text

ʲ৭ʑͳϞσϦϯάʳ ϦϨʔγϣϯۦಈཁ݅ఆٛʢ3%3" &3ਤ ϏδωεϞσϧɾΩϟϯόε

Slide 18

Slide 18 text

Ϗδωε
 ཁٻ ʢυϝΠϯʣ ʲϏδωεͱιϑτ΢ΣΞͷဃ཭ʳ ιϑτ΢ΣΞ ʢιʔείʔυʣ Ϣʔβͷཁٻͱίʔυͷ ڑ཭͸ඇৗʹԕ͍ɻ ΤϯυϢʔβʹίʔυ͸ཧղͰ͖ͳ͍ Ϗδωε
 ཁٻ ʢυϝΠϯʣ ιϑτ΢ΣΞ ʢιʔείʔυʣ தؒ ੒Ռ෺ தؒ੒Ռ෺͕͋ΔͱϢʔβ΋ཧղ͠΍͘͢ ࠷ऴతͳΠϝʔδΛڞ༗͠΍͍͢

Slide 19

Slide 19 text

ʲϏδωε͔Βܨ͕ͬͨ։ൃΛʳ

Slide 20

Slide 20 text

υϝΠϯ༻ޠΛཧղ͢Δ

Slide 21

Slide 21 text

ʲϞσϧۦಈܕ։ൃ .%" ஌ͬͯ·͢ʁʳ .%"

Slide 22

Slide 22 text

Ϟσϧۦಈܕ։ൃ .%" ͱ͸ʁ ɾϞσϦϯάݴޠΛ୯ͳΔσβΠϯͰ͸ͳ͘ɺϓϩάϥϛϯάݴޠʹ͍ۙܗͰ࢖͏ ɾϞσϧத৺Ͱ։ൃ͢Δ͜ͱͰɺੜ࢈ੑ޲্ɺ඼࣭޲্ɺઃܭͷ࠶ར༻ͱ͍ͬͨ͜ͱʹ
 ɹΞϓϩʔν͢Δख๏ $*.
 $PNQVUBUJPO*OEFQFOEFOU.PEFM
 1*.
 1MBUGPSN*OEFQFOEFOU.PEFM 14.
 1MBUGPSN4QFDJpD.PEFM
 14.
 1MBUGPSN4QFDJpD.PEFM
 $0%& $0%& $*. ίϯϐϡʔλγεςϜ͔Βಠཱͨ͠Ϟσϧɻ ϏδωεϞσϧ΍ސ٬ཁٻͳͲͷϞσϧɻ 1*. ϓϥοτϑΥʔϜಠཱϞσϧɻ $*.ΛγεςϜͱ࣮ͯ͠ݱ͢ΔͨΊʹ෼ੳ΍ઃܭ ΛߦͬͨϞσϧɻ 14. ϓϥοτϑΥʔϜݻ༗Ϟσϧɻ 1*.ʹϓϩάϥϛϯάݴޠɺϛυϧ΢ΣΞͳͲʹ ಛԽͨ͠ઃܭɺ࣮૷ʹ͍ۙཁૉΛೖΕͨϞσϧɻ $0%& ࣮ߦ͞ΕΔϓϩάϥϛϯάɻ package jp.co.actier.mars.concept.m2m.d3.acceleo.lib; import org.eclipse.emf.common.util.BasicEList;
 import org.eclipse.emf.common.util.EList; public class Uml2Util { public EList attributeAll(Class clazz) { EList attributes = new BasicEList(); if (clazz.getSuperClasses() != null) for (Class parent : clazz.getSuperClasses()) attributes.addAll(attributeAll(parent)); attributes.addAll(clazz.getOwnedAttributes()); return attributes; } } Ϟ
 σ
 ϧ
 ʹ
 ू
 த ࣗ ಈ Խ ʹ Α Δ ิ ॿ ΞΧ΢ϯτ σΟϥʔ 受付୲౰ 企ը୲౰

Slide 23

Slide 23 text

ʲݴޠͷྺ࢙͸ந৅౓্͕͕͍ͬͯΔʳ ࣌ؒͱϓϥοτϑΥʔϜ ந
 ৅
 ౓ Ϛγϯޠ
 ͱͷූ߸ ΞηϯϒϦݴޠ
 Ξηϯϒϥ ୈੈ୅ݴޠ
 $0#0-
 $
 ΦϒδΣΫτࢦ޲
 ୈੈ୅ݴޠ
 +BWBɹ$
 3VCZɹ1ZUIPO
 Ϟσϧۦಈ։ൃ
 ϝΠϯϑϨʔϜͷ࣌୅ 1$ͷ࣌୅ Πϯλʔωοτͷ࣌୅ Ϋϥ΢υͷ࣌୅ ɾΑΓίϯϐϡʔλ͔Βਓؒܥ΁ ɾϓϥοτϑΥʔϜ͕ෳࡶʹͳΔதɺϓϥοτϑΥʔϜͱͷ෼཭͕ඞཁ

Slide 24

Slide 24 text

ʲۜͷ஄ؙ͸ͳ͍ʂʳ υϝΠϯۦಈઃܭͩͬͯ ͦ͏ 1IPUPDSFEJUNPOFZNFUBMTPO7JTVBMIVOU$$#:

Slide 25

Slide 25 text

ഇΕΔ 1IPUPDSFEJUTBUHVSVPO7JTVBMIVOU$$#:

Slide 26

Slide 26 text

ʲͳͥɺഇΕͨʳ ࢓༷͕ϑϫοͱ͍ͯͨ͠ ཧ૝తա͗ͯϑϫοͱ͍ͯͨ͠ 
 ֤ϕϯμʔ͝ͱͰ࣮૷͕ϑϫο ͱ͍ͯͨ͠

Slide 27

Slide 27 text

े೥ Ұੲ

Slide 28

Slide 28 text

ʲ"*ͷϒʔϜ΋Կճ͔ʳ ୈҰ࣍"*ϒʔϜ ʢਪ࿦ɾ୳ࡧʣ ୈೋ࣍"*ϒʔϜ ʢ஌ࣝ޻ֶʣ ୈࡾ࣍"*ϒʔϜ ʢػցֶशɾදݱֶशʣ &-*;" %FFQ#MVF "MQIB(P 4JSJ %FFQ.JOE 8BUTPO σΟʔϓϥʔχϯά ػցֶश Ϗοάσʔλ ΢Σϒ ΤΩεύʔτγεςϜ .ZDJO %FOESBM ϒʔϜͷͨͼʹਐԽ͍ͯ͠Δ

Slide 29

Slide 29 text

υϝΠϯۦಈઃܭ΍ΦϒδΣΫτࢦ޲͕ ࠶ͼ΍͖͍ͬͯͯΔʁ 6.- ϒʔϜ υϝΠϯۦಈઃܭϒʔϜ དྷͯΔͰ͠ΐʂʂ #14UVEZ ʙ%%% %PNBJO%SJWFO%FTJHO ɹ࣮ફͷݱ৔ ໊௒͑Ͱ ձ৔มߋʂ

Slide 30

Slide 30 text

ʲϞσϧۦಈܕ։ൃͷ͍͍ͱ͜Ζʳ Ϗδωεཁ݅ͱϓϩάϥϜͷ෼཭ ϓϩάϥϜͷۉ࣭Խ 
 ࣗಈੜ੒ʹΑΔੜ࢈ੑ޲্

Slide 31

Slide 31 text

NBST ਓྨ͕࣍ʹ౸ୡ͢ΔͰ͋Ζ͏੕

Slide 32

Slide 32 text

ʲΞΫςΟΞ೥දʳ ˒ ೥݄ ΞΫςΟΞ஀ੜ A c t i e r A c t i e r ˒ ೥݄ ߴ࡚ࢀը ઌۦऀͱͷܨ͕ΓΛ ͔͚Δ͘ΜʹͯυϝΠϯۦಈઃܭ࣮ݧ %%%"MMJBODFओ࠵ ˒ ೥݄ࠒ ૿ా͞Μͱܨ͕Δ NBSTΛ࢖͍֤छҊ݅ͰɺεϞʔϧΦϒδΣΫτઃܭ΍υϝΠϯۦಈઃܭͱϞσϧۦಈΛ׆༻ Ϟσϧϕʔειϑτ΢ΣΞ։ൃίϛϡχςΟओ࠵

Slide 33

Slide 33 text

৭ʑͳϊ΢ϋ΢΍ߟ͑ํΛ Ϟσϧۦಈ։ൃͷதʹ औΓࠐΜͰ͍ͬͨ ·ͨɺͭͳ͕Γ΋Ͱ͖ͨ ʲઌۦऀͱܨ͕ΔதͰֶͼΛʳ

Slide 34

Slide 34 text

ʲ౰ॳऔ૊ΜͰ͍ͨϞσϧۦಈ։ൃʳ ސ٬ ސ٬*%
 ސ٬໊ ஫จ ஫จ*%
 ஫จ೔ ܾࡋ ΫϨδοτΧʔυ ݱۚ 6.-Ϋϥεਤ ࣗಈੜ੒ ιʔείʔυ ɾάϥϑΟΧϧͩͱύοͱݟͰ෼͔Γ΍͍͕͢ɺࠩ෼؅ཧ͕೉͍͠ ɾ੩తߏ଄͸දݱ͠΍͍͕͢ɺಈతߏ଄ʢৼΔ෣͍ʣ͕දݱ͠ʹ͍͘

Slide 35

Slide 35 text

͍͍ ઃܭ ͬͯɺͳΜͩΖ͏ʁ ʲϑϫοͱͤ͞ͳ͍ͨΊʹʳ

Slide 36

Slide 36 text

ʲϞσϧۦಈܕ։ൃͷ࣮ݱੑΛߴΊΔʳ औΓೖΕͨυϝΠϯۦಈઃܭ

Slide 37

Slide 37 text

ʲ෼ੳɾઃܭͷτϨʔχϯάΛఏڙʳ $ $ %! $ $ $ %! $ "# A c t i e r A c t i e r ૿ా͞Μͱڞʹʲ෼ੳɾઃܭʳΛ௥ٻ

Slide 38

Slide 38 text

ʲ͍͍ઃܭʳ ਐԽͱ ੒௕Λଓ͚ΒΕΔ มߋ͕ ָͰ ҆શ ෳࡶ͞ ʹཱͪ޲͔͑Δ

Slide 39

Slide 39 text

ʲݱஈ֊ͷNBSTʳ ϓϨθϯςʔγϣϯ૚ ΞϓϦέʔγϣϯ૚ σʔλιʔε૚ υϝΠϯ૚ ɾ%4-ͱͯ͠ϞσϧΛهड़ ɾυϝΠϯʹϑΥʔΧε࣮ͯ͠૷ ɾ%4-͔ΒυΩϡϝϯτ΋ੜ੒ ɾ+BWBɺTQSJOHͰͷੜ੒ ɾ֊૚͸௨ৗϓϩάϥϛϯά ˰কདྷతͳτϥΠϙΠϯτ

Slide 40

Slide 40 text

ʲ%4-Πϝʔδʳ /** * ঎඼(ࢴ) */ package jp.xx.xxx.xxx.domain.model.item.paper /** ঎඼ʢࢴʣ */ listType PaperItems /** ࢴ঎඼ϦϏδϣϯ */ longType Revision /** ࢴ঎඼ */ object PaperItem { ItemCode itemCode ChartType chartType {required} ItemDescription itemDescription Revision revision Publication publication SalesUnitPrice salesUnitPrice StockControl stockControl def ItemCode itemCode(){ return itemCode } def SalesUnitPrice salesUnitPrice() { salesUnitPrice } %4- ύοέʔδߏ੒΍ιʔε ϘΠϥʔςϯϓϨʔτͳ ίʔυΛҙࣝͤͣʹࡁΉ ʢίϐϖΛແ͘͠ਓతϛεΛݮΒ͢ʣ 
 Α͋͘Δࣗಈੜ੒ܥͱͷࠩผԽͱͯ͠ Մಡੑͷ͋Διʔεʹ߆Δ ϞσϦϯάͱͯ͠ ਓ͕஫ྗ͢΂͖ͱ͜Ζ͚ͩ ࣗಈੜ੒

Slide 41

Slide 41 text

ʲυΩϡϝϯτΠϝʔδʳ ϢʔεέʔεͷҰཡʹΑΓ ͲΜͳػೳ͕͋Δͷ͔ɺ ͲΜͳϝιου΍ґଘؔ܎͕෼͔Δ͜ͱͰ ၆ᛌͯ͠ػೳΛ೺ѲͰ͖Δ VTFDBTFɺSFQPTJUPSZͱ͍ͬͨ
 ΩʔϫʔυʹΑͬͯΫϥεͷ໾ׂΛ໌֬ʹ͢Δͱ ڞʹΞϊςʔγϣϯͳͲͷ ϘΠϥʔςϯϓϨʔτͳίʔυ͸ࣗಈੜ੒ Ϟσϧʢ%4-ʣ͔Β ੜ੒͞ΕΔ͜ͱͰ ௠෗Խ͠ͳ͍ usecase repository

Slide 42

Slide 42 text

言葉 を 共有

Slide 43

Slide 43 text

௨͡ͳ͍ࢥ͍

Slide 44

Slide 44 text

ϢϏΩλεݴޠ ίϯςΩετϚοϓ ஋ΦϒδΣΫτ ίΞυϝΠϯ ڥք͚ͮΒΕͨίϯςΩετ ू໿ ɾɾɾ ϦϙδτϦ ʲ%%%΋ݴ༿͕ͨ͘͞Μʳ

Slide 45

Slide 45 text

ʲݴ༿ͷဃ཭ʳ Ϗδωε υϝΠϯ ιϑτ΢ΣΞ ʢιʔείʔυʣ Ϟσϧ υϝΠϯΤΩεύʔτ͸ɺ ιϑτ΢ΣΞ։ൃʹ͓͚Δٕज़తͳઐ໳༻ޠͷ͜ͱ͸෦෼తʹ͔͠ཧղͤͣɺ ୅ΘΓʹࣗ෼ͷಘҙ෼໺ͷઐ໳༻ޠΛ࢖༻͢Δ υϝΠϯ ΤΩεύʔτ ։ൃऀ͸ɺ γεςϜΛཧղͯٞ͠࿦͢Δࡍʹɺػೳʹؔ͢Δઆ໌తͳ༻ޠΛ༻͍Δ͔΋͠ Εͳ͍͕ɺ͜͏ͨ͠༻ޠ͸υϝΠϯΤΩεύʔτͷݴޠ͕͍࣋ͬͯͨҙຯΛܽ ͍ͯ͠·͍ͬͯΔɻ͋Δ͍͸ɺ։ൃऀʹΑΔந৅Խ͸ɺࣗ෼ͨͪͷઃܭΛࢧ͑ ͯ͸͍ͯ΋ɺυϝΠϯΤΩεύʔτʹ͸ཧղ͞Εͳ͍͔΋͠Εͳ͍ ։ൃऀ ݴ༿ͷؒʹ͸ʲஅઈʳ͕͋Δ

Slide 46

Slide 46 text

ʲஅઈ͕͋Δ͜ͱͰͷฐ֐ʳ Ϗδωε υϝΠϯ ιϑτ΢ΣΞ ʢιʔείʔυʣ Ϟσϧ υϝΠϯ ΤΩεύʔτ ։ൃऀ ݴ༿͕௨༷ͨ͡Ͱ௨͍ͯ͡ͳ͍ ٞ࿦ͷ༻ޠͱίʔυͷ༻ޠ͕Ұக͠ͳ͍ 
 ௨༁͢Δͷʹ༨෼ͳ࿑ྗ͕͋Δ

Slide 47

Slide 47 text

ʲϢϏΩλεݴޠʳ Ϗδωε υϝΠϯ ιϑτ΢ΣΞ ʢιʔείʔυʣ Ϟσϧ υϝΠϯ ΤΩεύʔτ ։ൃऀ ϞσϧΛݴޠͷࠎ֨ͱ͢Δ ͢΂ͯͷίϛϡχέʔγϣϯͱίʔυʹɺͦͷݴޠΛ ݫ֨ʹ༻͍Δ 
 ݴޠʹ໰୊͕͋Ε͹୅ΘΓͱͳΔݴ༿Λ୳͠ɺϞσϧ Λ৽ͯ͘͠͠ίʔυΛϦϑΝΫλϦϯά͢Δ ݴޠʢݴ༿ʣ Ұ؏ͨ͠ݴޠʢݴ༿ʣͰڞ༗

Slide 48

Slide 48 text

ʲΑ͘ߟ͑Δͱʳ ϢϏΩλεݴޠ ༻ޠू ʺ

Slide 49

Slide 49 text

ʲ࣮ྫʳ ϢϏΩλεݴޠ ΍Β͔ͪ͠·ͬͨ ͋Δ͋Δ

Slide 50

Slide 50 text

༻ޠूʹͯ͠ ϝϯς ͞Εͣɻɻɻ ʲ࣮ྫᶃʳ

Slide 51

Slide 51 text

ʲ࣮ྫᶄʳɹνʔϜߏ੒ όοννʔϜ ը໘νʔϜ ސ٬

Slide 52

Slide 52 text

όοννʔϜ ը໘νʔϜ ސ٬ υϝΠϯ ʲυϝΠϯΛूΊͯڞ༗͍ͨ͠ʳ

Slide 53

Slide 53 text

ʲนҰ໘ͷϢϏΩλεݴޠʁʳ http://www.flickr.com/photos/vfsdigitaldesign/5396094193 ˞ࣸਅ͸ΠϝʔδͰ͢ ϝϯς ͞Εͣɻɻɻ

Slide 54

Slide 54 text

υϝΠϯΤΩεύʔτ΍
 νʔϜϝϯόͱͷ ର࿩ʹΑΓ Λ࢈Έग़͢ ϢϏΩλεݴޠ

Slide 55

Slide 55 text

ର࿩ͰϢϏΩλεݴޠ

Slide 56

Slide 56 text

ʲର࿩Λ͢ΔͨΊʹʳ ۀछͦͷ΋ͷΛֶͿ ސ٬ͷυϝΠϯΛֶͿ Ұൠۀ຿஌ࣝΛֶͿ

Slide 57

Slide 57 text

ൢച؅ཧ

Slide 58

Slide 58 text

ʲ෼͔Βͳ͍ݴ༿Λ੔ཧʳ Ұൠۀ຿஌ࣝΛֶͿ 8FCͰௐ΂Δ ຊ

Slide 59

Slide 59 text

"7$4 ച্ ిࢠւਤ ݟੵ ೲೖઌ &/$ ɾɾɾ "%1 ʲݴ༿͕ͨ͘͞Μʳ ધओ ધ۩঎ ધഫ؅ཧձࣾ 6,)0 $IBSU$P ࢴւਤ ॻ੶ ਫ࿏௨ใ

Slide 60

Slide 60 text

ʲ෼͔Βͳ͍ݴ༿Λ੔ཧʳ ۀछͦͷ΋ͷΛֶͿ 8FCͰௐ΂Δ ࣮෺Λ௖͍ͯ೺Ѳ͢Δ

Slide 61

Slide 61 text

ʲ෼͔Βͳ͍ݴ༿Λ੔ཧʳ Ϗδωεͷ֎؍Λଊ͑Δ ۀ຿Λ੔ཧ͢Δ ސ٬ͷυϝΠϯΛֶͿ

Slide 62

Slide 62 text

ʲۀ຿Λ੔ཧ͢Δ࣌ͷख๏ʳ

Slide 63

Slide 63 text

ʲݴ༿Λ੔ཧ͢ΔதͰؾΛ͚ͭͨϙΠϯτʳ ɾʮݴ༿ʯʹ߆Δ ɾ൪߸΍໊લͱ͍ͬͨΞΠσϯςΟςΟͷൃݟ ɾ࣠ʢίΞʣͱͳΔ΋ͷͷީิͷൃݟ ɾίϨΫγϣϯͷൃݟ ɾ۠෼ͷൃݟ ɾҰ඼෺Λ࡞Δ

Slide 64

Slide 64 text

ʲ࣮ྫɿ۠෼Λൃݟʳ ݴޠ*% +1ɺ+#ɺ64ɺ*.ɺ,3ɺ05ɺ $.ɺ&/$ɺ"7$4ɺ"%1ɺ F/1ɺ$$ɺɾɾɾ

Slide 65

Slide 65 text

ʲ࣮ྫɿ۠෼Λൃݟʳ ݴޠ*% +1ɺ+#ɺ64ɺ*.ɺ,3ɺ05ɺ $.ɺ&/$ɺ"7$4ɺ"%1ɺ F/1ɺ$$ɺɾɾɾ ࠃʁ ঎඼ʁ ࢓ೖઌʁ

Slide 66

Slide 66 text

ʲ݁Ռɿ۠෼Λൃݟʳ ݴޠ*% +1ɺ+#ɺ64ɺ*.ɺ,3ɺ05ɺ $.ɺ&/$ɺ"7$4ɺ"%1ɺ F/1ɺ$$ɺɾɾɾ Ϗδωε υϝΠϯ ιϑτ΢ΣΞ ʢιʔείʔυʣ Ϟσϧ υϝΠϯ ΤΩεύʔτ ։ൃऀ ݴޠ*% ϢϏΩλεݴޠ ͱͳͬͨ

Slide 67

Slide 67 text

ʲ࣮ྫɿϢϏΩλεݴޠͷબ୒ϛεʳ ސ٬ ધओ Photo credit: ukCWCS on VisualHunt.com / CC BY Photo on VisualHunt.com ધ ʁ ʁ

Slide 68

Slide 68 text

ʲ࣮ྫɿϢϏΩλεݴޠͷબ୒ϛεʳ ސ٬ ધओ Photo credit: ukCWCS on VisualHunt.com / CC BY Photo on VisualHunt.com ધ

Slide 69

Slide 69 text

ʲ࣮ྫɿϢϏΩλεݴޠͷબ୒ϛεʳ ސ٬ ધओ Photo credit: ukCWCS on VisualHunt.com / CC BY Photo on VisualHunt.com ધ

Slide 70

Slide 70 text

ʲ஋ΦϒδΣΫτʳ ͋ΔϞσϧཁૉʹ͍ͭͯɺͦͷଐੑ͔ؔ͠৺ͷର৅ͱͳΒͳ͍ͷͰ͋Ε͹ɺ
 ͦͷཁૉΛ஋ΦϒδΣΫτͱͯ͠෼ྨ͢Δ͜ͱ ϢϏΩλεݴޠ͸ɺ
 ஋ΦϒδΣΫτʹͳΔ ࣗ෼͕఻͑ΔଐੑͷҙຯΛදݱͤ͞ɺؔ܎ͨ͠ػೳΛ༩͑Δ͜ͱ ෆมͳ΋ͷͱͯ͠ѻ͏͜ͱ ಉҰੑΛ༩͑ͣɺΤϯςΟςΟΛҡ࣋͢ΔͨΊʹඞཁͱͳΔෳࡶͳઃܭΛ ආ͚Δ͜ͱ

Slide 71

Slide 71 text

ʲNBSTͰ஋ΦϒδΣΫτʳ longType integerType decimalType stringType enum enumType stringType CustomerId ܕ αϯϓϧ integerType SignedAmount { max: 100 min: -100 } enum Lang(String label) { JA("Japanese") EN('English') } enumType LangType { def boolean isJapanese() { this.value == Lang.JA } def boolean isEnglish() { this.value == Lang.EN } } listType ϑΝʔετΫϥείϨΫγϣϯΛؚΊ ஋ΦϒδΣΫτΛύλʔϯԽ object dateType dateType QuotationDate { format: 'yyyy-MM-dd' def static QuotationDate ofThreeMonthAgo(){ new QuotationDate(LocalDate.now.minusMonths(3)) } }

Slide 72

Slide 72 text

/** ݴޠʢͨͩ͠ɺʮݴޠʯ͸௨ৗͷݴ༿ͱ͍͏ҙຯͰ͸ແ͍ͷͰ஫ҙɻࠃ΍঎඼෼ྨΛ૯শͨ͠΋ͷʣ */ package jp.xx.xxx.xxx.domain.model.classification.language /** ݴޠID༻ͷྻڍࢠ */ enum LanguageIdValue(঎඼छྨࣝผࢠ identifier, String description) { JP(঎඼छྨࣝผࢠ.ࢴ, "೔ຊ൛ͷࢴւਤɾॻ੶ʢൃߦݩɿ೔ຊਫ࿏ڠձ/ւ্อ҆ி/ւ্อ҆ڠձʣ") JB(঎඼छྨࣝผࢠ.ࢴ, "೔ຊ൛ͷࢴւਤɾॻ੶ʢൃߦݩɿJPҎ֎ʣ") US(঎඼छྨࣝผࢠ.ࢴ, "ถࠃ൛ͷࢴւਤɾॻ੶") IM(঎඼छྨࣝผࢠ.ࢴ, "IMOͷࢴւਤɾॻ੶ɾిࢠ") KR(঎඼छྨࣝผࢠ.ࢴ, "ؖࠃ൛ͷࢴւਤɾॻ੶") OT(঎඼छྨࣝผࢠ.ࢴ, "ͦͷଞͷࢴւਤɾॻ੶") CM(঎඼छྨࣝผࢠ.σδλϧ, “C-MAPిࢠւਤ") ENC(঎඼छྨࣝผࢠ.σδλϧ, "೔ຊ൛ిࢠւਤ") AVCS(঎඼छྨࣝผࢠ.σδλϧ, "UKHOిࢠւਤ") ADP(঎඼छྨࣝผࢠ.σδλϧ, "UKHOిࢠॻ੶") eNP(঎඼छྨࣝผࢠ.σδλϧ, "UKHOిࢠॻ੶") CC(঎඼छྨࣝผࢠ.σδλϧ, "ChartCo঎඼") def boolean isPaper() { this.identifier == ঎඼छྨࣝผࢠ.ࢴ } def boolean isDigital() { this.identifier == ঎඼छྨࣝผࢠ.σδλϧ } def boolean isAvcs() { this == AVCS } def boolean isAdp() { this == ADP } def boolean isEnp() { this == eNP } } /** ݴޠID */ enumType LanguageId { def boolean isPaper() { value.isPaper() } def boolean isDigital() { value.isDigital() } def boolean isAvcs() { if (value === null) return false value.isAvcs } def boolean isAdp() { if (value === null) return false value.isAdp } def String name() { value.name } } listType LanguageIds { def static LanguageIds values() { var list = Arrays.asList(LanguageIdValue.values) var languageIds = list.map[id | new LanguageId(id)] new LanguageIds(languageIds) } def LanguageIds paper() { if (empty) return new LanguageIds var newList = list.filter[isPaper].toList new LanguageIds(newList) } def LanguageIds digital() { if (empty) return new LanguageIds var newList = list.filter[isDigital].toList new LanguageIds(newList) } ʲ࣮ྫɿݴޠ*%ΛNBSTͰදݱʳ Ϗδωε υϝΠϯ ιϑτ΢ΣΞ ʢιʔείʔυʣ Ϟσϧ υϝΠϯ ΤΩεύʔτ ։ൃऀ ݴޠ*%

Slide 73

Slide 73 text

ʲϢϏΩλεݴޠΛදݱ͢Δ͜ͱͰʳ ֓೦΍༻ޠ͕ιʔεʹͳΓ
 ސ٬ͱΤϯδχΞͷؒͰ࿩͕௨͡΍͘͢ͳͬͨ ୯Ұ੹೚ʹͳΓ΍͘͢ιʔείʔυ͕؆ૉԽ͞ΕΔ ސ٬ͱର࿩͕ີʹͳΔ͜ͱͰɺސ٬ͷ৴པੑ΋޲্͠ ϓϩδΣΫτӡӦʹ΋͍͍ӨڹΛ༩͑ͨ ΈΜͳ͕ݴ༿ʹ߆ΔΑ͏ʹͳͬͨ

Slide 74

Slide 74 text

貧血 との 戦い

Slide 75

Slide 75 text

ൈ͚ΒΕͳ͍છΈ͍ͭͨ΍Γํ

Slide 76

Slide 76 text

ʲ࣮ྫʳ υϝΠϯϞσϧ ΍Β͔ͪ͠·ͬͨ ͋Δ͋Δ

Slide 77

Slide 77 text

ʲτϥϯβΫγϣϯεΫϦϓτʹͳΓ͕ͪʳ ϓϨθϯςʔγϣϯ૚ ΞϓϦέʔγϣϯ૚ σʔλιʔε૚ υϝΠϯ૚ ػೳຖʹ εΫϦϓτͷ༷ʹ ೖͬͯ໭ΔྲྀΕΛ ϕʔεʹ࡞ͬͯ͠·͏ ঎඼ొ࿥ ച্ೖྗ ࢓ೖೖྗ ؔ৺ࣄ͕ೖग़ྗʹΑͬͨ
 ݁ՌɺυϝΠϯ૚͸ ͨͩͷೖΕ෺ʹͳΓ͕ͪ

Slide 78

Slide 78 text

ʲσʔλʢςʔϒϧઃܭʣ͔Β΍ͬͯ͘Δͱ
 ɹσʔλͷثʹͳΓ͕ͪʳ ϓϨθϯςʔγϣϯ૚ ΞϓϦέʔγϣϯ૚ σʔλιʔε૚ υϝΠϯ૚ ঎඼*% ঎඼໊ ఆՁ ࡏݿ؅ཧ +1 ೔ຊۙւ ͢Δ +1 ೔ຊԊ؛෦ ͢Δ #" ӳࠃۙւ ͠ͳ͍ #" ӳࠃԊ؛෦ ͠ͳ͍ ঎඼ςʔϒϧ طଘϓϩδΣΫτ͔Βͷ ϦϓϨΠεͩͱ ಛʹةͳ͍

Slide 79

Slide 79 text

ʲ࣮ྫʳ ݁Ռ

Slide 80

Slide 80 text

ʲυϝΠϯϞσϧශ݂঱ʳ ύοͱݟɺυϝΠϯϞσϧʹݟ͑Δ Θ͔ͣͳৼΔ෣͍͔͠ͳ͍
 ɹʹϏδωεϧʔϧ͕ॻ͔Ε͍ͯͳ͍ 
 ΦϒδΣΫτࢦ޲ઃܭͷجຊ֓೦
 ʢσʔλͱॲཧΛҰॹʹ͢Δʣͷਅٯ

Slide 81

Slide 81 text

ʲࣦഊΛྐʹʳ ؕΓͬͺͳ͠͡Ό͍͚ͳ͍͕ɺ ɹɹɹɹɹɹɹɹͦΕ΋௨Δಓ

Slide 82

Slide 82 text

Ϗδωεϧʔϧʹूத͢Δ

Slide 83

Slide 83 text

ʲෳࡶ͞ɾ೉͠͞͸Ϗδωεϧʔϧʹ͋Δʳ ۀ຿ΞϓϦέʔγϣϯ։ൃͷෳࡶ͞ɾ೉͠͞͸ɺϏδωεϧʔϧʹ͋Δɻ ϏδωεՁ஋Λ࣮ݱ͢ΔͨΊʹϛογϣϯ΍ઓུɺ࣮ߦܭըΛܦͯઓज़͔Β
 ࣮ߦ΁ͱམͱ͠ࠐΜͰ͍͘தͰɺߦಈํ਑΍൑அج४ͱͳΔϧʔϧ͕
 ϏδωεϙϦγʔ΍Ϗδωεϧʔϧͱͯ͠Լࢧ͍͑ͯ͠·͢ɻ ͦͷϧʔϧͷൃݟɾ෼ੳɾ࣮૷ʹ࣠Λஔ͘͜ͱͰΞϓϦέʔγϣϯ੔ཧ͕
 ༰қʹͳΓ·͢ɻ ϏδωεϧʔϧΛൃݟɾ෼ੳ͠ɺ υϝΠϯϞσϧͱ࣮ͯ͠૷͍ͯ͘͠

Slide 84

Slide 84 text

ʲҙࣝతʹυϝΠϯʹूதͯ͠ಠཱʳ ϓϨθϯςʔγϣϯ૚ ΞϓϦέʔγϣϯ૚ σʔλιʔε૚ υϝΠϯ૚ υϝΠϯ͚ͩͰ ϏδωεϧʔϧΛ ·ͱΊΔྗΛ͚ͭΔ ෦඼Խ

Slide 85

Slide 85 text

ʲNBSTͰυϝΠϯʹूதʳ ϓϨθϯςʔγϣϯ૚ ΞϓϦέʔγϣϯ૚ σʔλιʔε૚ υϝΠϯ૚ πʔϧɺݴޠ͕ҧ͏͜ͱͰ υϝΠϯΛҙࣝ͠΍͍͢

Slide 86

Slide 86 text

ʲ࣮ྫɿݟੵ఻ථϞσϧʳ ݟੵ໌ࡉϦετ ݟੵ ݟੵ໌ࡉ ఆՁ ਺ྔ ໌ࡉֹۚ

Slide 87

Slide 87 text

ʲ࣮ྫɿ஋Ҿ΍֎՟ʳ ݟੵ໌ࡉϦετ ݟੵ ݟੵ໌ࡉ ఆՁ ਺ྔ ໌ࡉֹۚ ஋Ҿϧʔϧ ஋Ҿ཰ ൢച஋Ҿܖ໿ ҝସϨʔτ ҝସద༻ ൢച༻֎ࠃҝସ ൢച௨՟

Slide 88

Slide 88 text

ʲ࣮ྫɿίΞͳϞσϧͱͯ͠஫ྗʳ

Slide 89

Slide 89 text

ʲ࣮ྫɿίΞͳϞσϧͱͯ͠஫ྗʳ Ϗδωεϧʔϧ͕·ͱ·Γ෼͔Γқ͘ͳΓ
 ࠶ར༻΍มߋ͠΍͍͢ߏ଄ͱͳͬͨ

Slide 90

Slide 90 text

ʲϏδωεϧʔϧΛͲ͕࣋ͭ͜ͷ͔ʁʳ ݟੵ໌ࡉϦετ ݟੵ ݟੵ໌ࡉ ఆՁ ਺ྔ ໌ࡉֹۚ ໌ࡉֹۚʁ

Slide 91

Slide 91 text

ʲ࣮ྫɿ͜͏ϝιουݺͼग़͍ͨ͠͠ʳ ݟੵ໌ࡉϦετ ݟੵ ݟੵ໌ࡉ ఆՁ ਺ྔ ໌ࡉֹۚ ໌ࡉֹۚ ໌ࡉֹۚ߹ܭ ૯߹ܭ

Slide 92

Slide 92 text

ʲ࣮ྫɿ਺ྔ͔ఆՁ͕ϧʔϧΛ࣋ͭʳ ݟੵ໌ࡉϦετ ݟੵ ݟੵ໌ࡉ ໌ࡉֹۚ ໌ࡉֹۚ ਺ྔ ✕ SFUVSO ϏδωεϧʔϧΛ஌͍ͬͯΔͷ͸ ਺ྔͳͷ͔ʁఆՁͳͷ͔ʁ ఆՁ ਺ྔ΍ఆՁ͕໌ࡉֹۚʹ ґଘ͢Δͷ͸Կ͔ඍົ

Slide 93

Slide 93 text

ʲ࣮ྫɿ਺ྔ͔ఆՁ͕ϧʔϧΛ࣋ͭʳ αϯϓϧ /** ݟੵ໌ࡉ */ object PaperQuotationDetail impl Detail { SalesPaperItem item { no-validation } Quantity quantity SalesUnitPrice salesUnitPrice DiscountRate discountRate ɹɹɹɾɾɾ def DetailAmount amount() { return quantity.calculateAmount(salesUnitPrice, voucherForeignExchange.voucherCurrency) } } /** ໌ࡉ਺ྔ */ integerType Quantity { assert("") lessThanMaxQuantity { value < 10000 } def boolean isMinus(){ if(value < 0) return true return false } ɹɹɹɾɾɾ def DetailAmount calculateAmount(SalesUnitPrice salesUnitPrice, SalesCurrency salesCurrency) { new DetailAmount(new BigDecimal(value).multiply(salesUnitPrice.decimalValue())) } } ϏδωεϧʔϧΛ஌͍ͬͯΔͷ͸ ਺ྔͳͷ͔ʁఆՁͳͷ͔ʁ ໌ࡉֹۚ ਺ྔ΍ఆՁ͕໌ࡉֹۚʹ ґଘ͢Δͷ͸Կ͔ඍົ

Slide 94

Slide 94 text

ʲ࣮ྫɿ໌ࡉֹ͕ۚϧʔϧΛ࣋ͭʳ ݟੵ໌ࡉϦετ ݟੵ ݟੵ໌ࡉ ໌ࡉֹۚ ໌ࡉֹۚ ఆՁ ਺ྔ ✕ SFUVSO ໌ࡉֹۚͷίϯετϥΫλͰ ఆՁͱ਺ྔΛ౉ͯ͠ ஋ͷऔಘ࣌ʹܭࢉ ໌ࡉֹۚͷதʹϏδωεϧʔϧΛ
 ؅ཧ͢Δߏ଄ͱͳͬͨ ఆՁͱ਺ྔΛֻ͚Δࡍʹ ͦΕͧΕ͔ΒܭࢉՄೳͳ஋Λ औಘ͢Δඞཁ͕ग़͖ͯͨ

Slide 95

Slide 95 text

ʲ࣮ྫɿ໌ࡉֹ͕ۚϧʔϧΛ࣋ͭʳ /** ݟੵ໌ࡉ */ object PaperQuotationDetail impl Detail { SalesPaperItem item { no-validation } Quantity quantity SalesUnitPrice salesUnitPrice DiscountRate discountRate ɹɹɹɾɾɾ def DetailAmount amount() { return new DetailAmount(quantity, salesUnitPrice, voucherForeignExchange.voucherCurrency) } } /** ݟੵ໌ࡉֹۚ */ object DetailAmount impl ApplicableAmount, ExchangeBaseAmount { Quantity quantity SalesUnitPrice salesUnitPrice SalesCurrency voucherCurrency init(Quantity quantity, SalesUnitPrice salesUnitPrice, SalesCurrency voucherCurrency) { this.quantity = quantity this.salesUnitPrice = salesUnitPrice this.voucherCurrency = voucherCurrency } ɹɹɹɾɾɾ def BigDecimal decimalValue() { if (salesUnitPrice.empty) return BigDecimal.ZERO if (quantity.empty) return salesUnitPrice.decimalValue return salesUnitPrice.decimalValue().multiply(new BigDecimal(quantity.intValue())) } } ໌ࡉֹۚͷதʹϏδωεϧʔϧΛ
 ؅ཧ͢Δߏ଄ͱͳͬͨ ໌ࡉֹۚͷίϯετϥΫλͰ ఆՁͱ਺ྔΛ౉ͯ͠ ஋ͷऔಘ࣌ʹܭࢉ ఆՁͱ਺ྔΛֻ͚Δࡍʹ ͦΕͧΕ͔ΒܭࢉՄೳͳ஋Λ औಘ͢Δඞཁ͕ग़͖ͯͨ ໌ࡉֹۚ αϯϓϧ

Slide 96

Slide 96 text

ʲগͣͭ͠લ΁ɺઓ͍͸ଓ͘ʳ ශ݂ͱ
 Ϗδωεϧʔϧͱ ೔ʑ֨ಆ

Slide 97

Slide 97 text

·ͱΊ

Slide 98

Slide 98 text

ʲϞσϧۦಈܕ։ൃͰͷυϝΠϯۦಈઃܭʳ Ϟσϧۦಈܕ։ൃͰ
 Ϗδωεͱιϑτ΢ΣΞΛܨ͛Δ ϢϏΩλεݴޠͰҰ؏ͨ͠ݴ༿Λ
 ڞ༗͠ͳ͕Βࣗಈੜ੒ΛབྷΊͯ։ൃ ࠷ॳ͸ශ݂Ͱ΋ɺঃʑʹҭͯΔ

Slide 99

Slide 99 text

燃えていいのは ドメイン駆動の
 魂だけだ プロジェクトの炎は 消してやる!

Slide 100

Slide 100 text

A c t i e r A c t i e r גࣜձࣾΞΫςΟΞ +BWB✕%%% ͷೱ͍؀ڥ ࣾһืूதʂ େࣄͳͷͰɺ΋͏Ұ౓

Slide 101

Slide 101 text

׬