Slide 1

Slide 1 text

!TV[VLJ ;ΜΘΓ࢖͏1MBOU6.- 1)1FS,BJHJ

Slide 2

Slide 2 text

࿩͢͜ͱ w ʮ;ΜΘΓ࢖͏ʯͷఆٛ w 1MBOU6.-ͷ࢖͍ํɾֶͼํ w Θͨ͠ͷ࢖͍ํ w ͓·͚

Slide 3

Slide 3 text

࿩͞ͳ͍͜ͱ w 6.-ͦͷ΋ͷʹ͍ͭͯͷৄࡉ w ଞͷπʔϧͱͷൺֱ

Slide 4

Slide 4 text

"CPVUNF

Slide 5

Slide 5 text

!TV[VLJ IUUQTUXJUUFSDPNTV[VLJ IUUQTHJUIVCDPNTV[VLJ IUUQTTQFBLFSEFDLDPNTV[VLJ

Slide 6

Slide 6 text

$VSSFOUMZXPSLFEBU3"#0 *OD IUUQTSBCPDBU

Slide 7

Slide 7 text

1MBOU6.-Λʮ;ΜΘΓ࢖͏ʯ

Slide 8

Slide 8 text

w ςΩετͰهड़͠ɺਤΛඳͨ͘Ίͷπʔϧ w 6.-Λத৺ͱͨ͠ଟ࠼ͳਤΛαϙʔτ w ςΩετϑΝΠϧͳͷͰཤྺ؅ཧָ͕ 1MBOU6.-ͱ͸ IUUQTQMBOUVNMDPN

Slide 9

Slide 9 text

౷ҰϞσϦϯάݴޠ lΦϒδΣΫτࢦ޲ͷΤοηϯεΛத৺ʹɺ ඪ४తͳਤͷॻ͖ํΛܾΊͯɺͭ·Βͳ͍ ޡղΛආ͚ΔΑ͏ʹͨ͠ͷ͕6.- ʢ6OJ fi FE.PEFMJOH-BOHVBHFʣͰ͢z 
 ൈਮ ͪΐ͏ͥͭιϑτ΢ΣΞઃܭೖ໳ᴷᴷ 1)1Ͱཧղ͢ΔΦϒδΣΫτࢦ޲ͷ׆༻ 6.-

Slide 10

Slide 10 text

ͭ·Βͳ͍ޡղͳ͘఻͑Δᶃ ਖ਼͍͠จষͰ දݱ͢Δ ͭ·Βͳ͍ޡղͳ͘఻͑Δ 👍

Slide 11

Slide 11 text

ͭ·Βͳ͍ޡղͳ͘఻͑Δᶄ ਖ਼͍͠จষͱ ਖ਼͍͠6.-Ͱ දݱ͢Δ ਖ਼͍͠จষͰ දݱ͢Δ ͭ·Βͳ͍ޡղͳ͘఻͑Δ ˠ 👍 💯

Slide 12

Slide 12 text

UML *NBHFDSFBUFECZ4UBCMF%J ff VTJPO0OMJOFIUUQTTUBCMFEJ ff VTJPOXFCDPN

Slide 13

Slide 13 text

ͭ·Βͳ͍ޡղͳ͘఻͑Δᶅ ਖ਼͍͠จষͱ ਖ਼͍͠6.-Ͱ දݱ͢Δ ਖ਼͍͠จষͰ දݱ͢Δ ਖ਼͍͠จষͱ ਤͰ දݱ͢Δ ͭ·Βͳ͍ޡղͳ͘఻͑Δ ˠ ˠ 👍 💯 🎉

Slide 14

Slide 14 text

·ͣ͸ਤͱͯ͠ඳ͘

Slide 15

Slide 15 text

6.-ͱͯ͠ͷਖ਼͠͞͸ ޙ͔Β෇͍ͯ͘Δ

Slide 16

Slide 16 text

͜Ε͕ʮ;ΜΘΓ࢖͏ʯ

Slide 17

Slide 17 text

1MBOU6.-ͷجຊॻࣜ

Slide 18

Slide 18 text

ॻࣜͷجຊ @startuml ཁૉAͷఆٛ
 ཁૉBͷఆٛ ཁૉAͱཁૉBͷؔ࿈ @enduml

Slide 19

Slide 19 text

γʔέϯεਤ @startuml participant Alice participant Bob Alice -> Bob @enduml

Slide 20

Slide 20 text

Ϋϥεਤ @startuml class Alice class Bob Alice -> Bob @enduml

Slide 21

Slide 21 text

Ϣʔεέʔεਤ @startuml usecase Alice usecase Bob Alice -> Bob @enduml

Slide 22

Slide 22 text

Ϣʔεέʔεਤ @startuml (Alice) -> (Bob) @enduml Ϣʔεέʔε͸ؙׅހͰғΜͰ࢖͍·͢ ؙׅހͷର͸ପԁʹࣅ͍ͯΔ͔ΒͰ͢ 
 IUUQTQMBOUVNMDPNKBVTFDBTFEJBHSBN

Slide 23

Slide 23 text

ཁૉҎ্ͷؔ࿈ͷॻ͖ํ @startuml usecase Alice usecase Bob usecase Carol Alice -> Bob -> Carol @enduml ❌

Slide 24

Slide 24 text

ཁૉҎ্ͷؔ࿈Ͱ΋ཁૉͣͭॻ͘ @startuml usecase Alice usecase Bob usecase Carol Alice -> Bob Bob -> Carol @enduml ⭕

Slide 25

Slide 25 text

͜ͷه๏Ҏ֎Ͱ ཁૉؒͷؔ࿈Λඳ͘ਤ΋͋Δ +40/ͱ͔:".-ͱ͔ ϚΠϯυϚοϓͱ͔

Slide 26

Slide 26 text

1MBOU6.-ͰਤΛඳը͢Δ

Slide 27

Slide 27 text

ίϚϯυϥΠϯͰϑΝΠϧΛม׵ $ java -jar plantuml.jar file.puml -t png %PXOMPBEGSPNQMBOUVNMDPN PS CSFXJOTUBMMQMBOUVNM

Slide 28

Slide 28 text

ެࣜαΠτͷ0OMJOF4FSWFSͰม׵ 0OMJOF4FSWFSϝχϡʔ͔Β࢖͏

Slide 29

Slide 29 text

%PDLFSDPOUBJOFSQMBOUVNMTFSWFS $ docker run -d -p 8080:8080 \
 plantuml/plantuml-server http://localhost:8080/

Slide 30

Slide 30 text

ςΩετΤσΟλ΍*%&ͱͷ࿈ܞ ࿈ܞํ๏͸KBSϑΝΠϧͩͬͨΓ 0OMJOF4FSWFSʢ"1*4FSWFSʣͩ ͬͨΓ ΤσΟλ࿈ܞ https://plantuml.com/ja/running

Slide 31

Slide 31 text

8FCαʔϏεΛ࢖͏ w 1MBOU6.-ରԠͷ8FCαʔϏεͷྫ w )BDL.% IUUQTIBDLNEJP w FTB IUUQTFTBJP

Slide 32

Slide 32 text

ʲ஫ҙʳ ଞਓ͕؅ཧ͍ͯ͠Δ0OMJOF4FSWFSʹ͸ ൿີ৘ใΛهࡌ͠ͳ͍

Slide 33

Slide 33 text

QBUIΛσίʔυ͢Δͱɺ ݩͷίʔυʹͳΔ

Slide 34

Slide 34 text

ࠓ೔͜͜ͰαϯϓϧΛࢼ͚ͩ͢ͳΒ )BDL.%͕͓ख͔ܰ΋ ηοτΞοϓෆཁ 
 ϑϦʔϓϥϯ͋Γ

Slide 35

Slide 35 text

Θͨ͠ͷར༻๏

Slide 36

Slide 36 text

Θͨ͠ͷར༻๏ w ઃܭϑΣʔζͰͷ಄ͷ੔ཧ w ։ൃ࣌ͷιʔείʔυɾϦʔσΟϯά w ӡ༻υΩϡϝϯτͰͷิ଍આ໌

Slide 37

Slide 37 text

ઃܭϑΣʔζͰͷ࢖͍ํ w ΞʔΩςΫνϟͷ੔ཧ w σʔλߏ଄ͷ੔ཧ w γʔέϯεਤ͔Βڞ௨ॲཧΛ୳Δ w ίʔυΛॻ͍͔ͯΒؾ෇͘ͱख໭Γ͕ൃੜ͢Δ৔߹͕͋Δ

Slide 38

Slide 38 text

ΞʔΩςΫνϟਤͷྫᶃ @startuml (User) -> (API) (API) -> (DB) ' Queue (API) --> (Queue) (Queue) <-- (Subscriber) (Subscriber) -> (MTA) @enduml

Slide 39

Slide 39 text

ΞʔΩςΫνϟਤͷྫᶄ @startuml actor User queue Queue database DB (User) -> (API): POST /register (API) -> (DB): Save ' Queue (API) --> (Queue): Publish Message (Queue) <-- (Subscriber): Subscribe Message (Subscriber) -> (MTA): Email @enduml

Slide 40

Slide 40 text

ΞʔΩςΫνϟਤͷྫᶅ @startuml !include !include !include !include !include !include Users(User, "User", "tech") Aurora(DB, "DB", "tech") SimpleQueueService("Queue", "Queue", "tech") SimpleEmailService("MTA", "MTA", "tech") (User) -> (API): POST /register (API) -> (DB): Save ' Queue (API) --> (Queue): Publish Message (Queue) <-- (Subscriber): Subscribe Message (Subscriber) -> (MTA): Email @enduml

Slide 41

Slide 41 text

γʔέϯεਤͷྫᶃ @startuml User -> API: POST /save API -> API: Create Message API -> Queue: Publish Message API <-- Queue: OK User <-- API: OK == Subscriber Process == Queue <- Subscriber: Fetch Message Queue --> Subscriber: Message Subscriber -> DB: Save Subscriber <-- DB: OK @enduml

Slide 42

Slide 42 text

;ΜΘΓ࢖͏ͱ͖ͷϙΠϯτ w ਤ͸ͻͱͭ͡Όͳͯ͘΋ྑ͍ w ཻ౓Λม͑ͨෳ਺ͷਤ w શମ֓ཁͱॲཧৄࡉ w ʮԿ΋͔΋ਖ਼֬ʹඳ͔ͳΕ͹ʂʯΈ͍ͨͳ࢖໋ײ͸๨ΕΔ w ͍͕ͭΜ͹Γͨ͘ͳΔ͕ɺ͕Μ͹Βͳ͍

Slide 43

Slide 43 text

ιʔείʔυɾϦʔσΟϯάͰͷར༻ w ʮ೺Ѳ͖͠Ε͍ͯͳ͍ػೳͷमਖ਼ʯͳͲͷͱ͖ʹ࢖͏ w ΤσΟλͷػೳͰॲཧͷࢀরݩΛ௥͍ͬͯ͘ w ϝιου୯ҐͳͲͰϓϩοτ͠ɺؔ࿈෇͚͍ͯ͘ w Ͳͷ෦෼ʹमਖ਼ΛՃ͑Δͷ͕Ұ൪εδ͕ྑͦ͞͏͔Λ୳Δ

Slide 44

Slide 44 text

ιʔείʔυɾϦʔσΟϯάͷྫ @startuml skinparam usecase<> { backgroundColor #fcc } skinparam usecase<> { backgroundColor #cfc } ' command ܥ rectangle "terminate Command" as terminateCommand usecase "TerminationService::exec()" as terminateService ' admin ܥ rectangle "POST /admin/delete API" as adminDeleteApi usecase "Admin\DeleteService::delete()" as adminDeleteService ' ࡟আຊମ usecase "Deprecated\DeleteService::delete()" as deleteServiceDeprecated <> usecase "DeleteService::delete()" as deleteService <> usecase "෇Ճ৘ใͷ࡟আॲཧ" as deleteInfo <> ' unregister ܥ rectangle "POST /unregister API" as unregisterApi usecase "UnregisterService::unregister()" as unregisterService ' command ܥ (terminateCommand) --> (terminateService) (terminateService) --> (deleteServiceDeprecated) ' admin ܥ (adminDeleteApi) --> (adminDeleteService) (adminDeleteService) --> (deleteServiceDeprecated) (deleteServiceDeprecated) --> (deleteService) ' unregister ܥ (unregisterApi) ---> (unregisterService) (unregisterService) --> (deleteService) ' RENEW (deleteService) --> (deleteInfo) @enduml

Slide 45

Slide 45 text

;ΜΘΓ࢖͏ͱ͖ͷϙΠϯτ w શ෦Λඳ͜͏ͱ͕Μ͹Βͳ͍ w ඳ͘ͷ͕໨తͰ͸ͳ͘ɺඳ͍ͨ݁ՌͰॲཧΛ೺Ѳ͢Δͷ͕໨త w ඞཁͳՕॴ͸QSJWBUFϝιουͷॲཧͰ΋ϓϩοτ͢Δ w ࣗ෼Ͱ೺Ѳ͠΍͚͢Ε͹ɺଟগཻ౓͕ϒϨͯ΋ؾʹ͠ͳ͍

Slide 46

Slide 46 text

1MBOU6.-ͷֶͼํ

Slide 47

Slide 47 text

w ඳ͚Δਤͷ಺༰͕໢ཏ͞Ε͍ͯΔ w ߏ଄ཱ͕ମతͰͪΐͬͱ௥͍ʹ͍͘ w ʢ޿ࠂαΠζ΋ͪΐͬͱେ͖Ίʣ ඞཁͳ৘ใ͸ެࣜαΠτʹ͋Δ IUUQTQMBOUVNMDPN

Slide 48

Slide 48 text

ެࣜαΠτͷ௥͍ํ IUUQTQMBOUVNMDPN ਤ͝ͱͷϦϯΫ 
 ʢ⾢ͰεΫϩʔϧʣ ֤ϖʔδ 
 ڞ௨ϝχϡʔ ݴޠ੾ସ ϖʔδ֊૚ߏ଄ ೥݄ݱࡏ

Slide 49

Slide 49 text

ϦϑΝϨϯεΨΠυʢ1%'ΨΠυʣ IUUQTQMBOUVNMDPNKBHVJEF

Slide 50

Slide 50 text

ϦϑΝϨϯεΨΠυͷΦεεϝϙΠϯτ IUUQTQMBOUVNMDPNKBHVJEF w ͦΕͧΕͷਤ͝ͱʹষཱͯ w ॻ͖͍ͨਤͷ৘ใΛ௥͍΍͍͢ w ʢ޿ࠂ͕ͳ͍ʣ

Slide 51

Slide 51 text

w (JU)VC4QPOTPST w 1BUSFPO w -JCFSBQBZ w 1BZ1BM 1MBOU6.-͕༗༻ͩͱࢥͬͨΒεϙϯαʔʹ IUUQTQMBOUVNMDPNKB

Slide 52

Slide 52 text

εϙϯαʔಛయͱͯ͠BEGSFF൛ͷ XFCTJUFΛ࢖͑Δ εϙϯαʔಛయ IUUQTQMBOUVNMDPNQBUSFPOKB

Slide 53

Slide 53 text

·ͱΊ

Slide 54

Slide 54 text

ਤΛ;Θͬͱඳ͜͏

Slide 55

Slide 55 text

;Θͬͱ͍ͯͯ͠΋ ޡղͳ͘఻ΘΔ֬཰͸্͕Δ

Slide 56

Slide 56 text

ਖ਼֬͞͸ޙ͔Β෇͍ͯ͘Δ

Slide 57

Slide 57 text

"QQFOEJY

Slide 58

Slide 58 text

ཁૉͷϨΠΞ΢τௐ੔ w ϨΠΞ΢τ͸1MBOU6.-ʹ೚ͤΔͷ͕جຊ w ϨΠΞ΢τΛ׬ᘳʹ੔͍͑ͨͳΒผͷπʔϧΛ࢖ͬͨ΄͏͕͍͍ w ͋Δఔ౓ͷௐ੔͸ޮ͘ w ϥΠϯͷ௕͞ w ໼ҹͷํ޲Λௐ੔ w άϧʔϐϯά w ఆٛॱ

Slide 59

Slide 59 text

ϥΠϯͷ௕͞ @startuml (A) - (B) (A) -- (C) (A) --- (D) (A) ---- (E) @enduml

Slide 60

Slide 60 text

໼ҹͷํ޲Λௐ੔ @startuml (A) -r-> (B) (A) -d-> (C) (A) -l-> (D) (A) -u-> (E) @enduml SJHIUMFGU EPXOVQ

Slide 61

Slide 61 text

άϧʔϐϯά @startuml rectangle Group { (B) (C) } (A) -> (B) (A) -> (C) @enduml

Slide 62

Slide 62 text

άϧʔϐϯάͱIJEEFOϥΠϯ @startuml rectangle Group { (B) (C) (B) -d[hidden]- (C) } (A) -> (B) (A) -> (C) @enduml E͸EPXOͷ͜ͱ ଞͷํ޲ࢦఆ΋Ͱ͖Δ

Slide 63

Slide 63 text

ཁૉͷఆٛॱ @startuml (A) -> (B) @enduml @startuml (B) <- (A) @enduml

Slide 64

Slide 64 text

ݟͨ໨ͷมߋ w ςʔϚʢUIFNFʣΛ࢖͏ w ϥΠϒϥϦΛ࢖͏ w TLJOQBSBNΛ࢖͏

Slide 65

Slide 65 text

ςʔϚʢTQBDFMBCʣ @startuml !theme spacelab (A) -- (B) (A) -- (C) @enduml ૊ΈࠐΈͷςʔϚͷҰཡ͸ 
 IUUQTQMBOUVNMDPNKBUIFNF

Slide 66

Slide 66 text

ϥΠϒϥϦΛ࢖͏ @startuml !include !include !include !include !include Users(A, "A", "tech") DynamoDB(B, "B", "tech") Aurora(C, "C", "tech") (A) -- (B) (A) -- (C) @enduml ૊ΈࠐΈͷϥΠϒϥϦͷҰཡ͸ 
 IUUQTQMBOUVNMDPNKBTUEMJC

Slide 67

Slide 67 text

৭Λม͑ͯݟ΍͘͢͢Δ @startuml skinparam usecase { backgroundColor #fcc } (A) -- (B) (A) -- (C) @enduml શͯͷVTFDBTF͕ର৅

Slide 68

Slide 68 text

৭Λม͑ͯݟ΍͘͢͢ΔʢಛఆͷཁૉͷΈʣ @startuml skinparam usecase<> { backgroundColor #fcc } usecase A <> (A) -- (B) (A) -- (C) @enduml 41&$*"-ͷϥϕϧ͕෇͍ͨ VTFDBTFͷΈ͕ର৅

Slide 69

Slide 69 text

TLJOQBSBNͷݕࡧ IUUQTQMBOUVNMEPDVNFOUBUJPOSFBEUIFEPDTJPFOMBUFTUGPSNBUUJOHBMMTLJOQBSBNTIUNM "TIMFZT1MBOU6.-%PD ࢦఆՄೳͳTLJOQBSBNΛݕࡧ

Slide 70

Slide 70 text

3FGFSFODFT

Slide 71

Slide 71 text

3FGFSFODFT w 1MBOU6.- w IUUQTQMBOUVNMDPN w "TIMFZT1MBOU6.-%PD w IUUQTQMBOUVNMEPDVNFOUBUJPOSFBEUIFEPDTJPFOMBUFTU GPSNBUUJOHBMMTLJOQBSBNTIUNM w ͪΐ͏ͥͭιϑτ΢ΣΞઃܭೖ໳ w IUUQTHJIZPKQCPPL

Slide 72

Slide 72 text

3FGFSFODFT w 4UBCMF%J ff VTJPO0OMJOF w IUUQTTUBCMFEJ ff VTJPOXFCDPN w "NBOJTMPPLJOHVQBUBIJHIXBMM5IFXBMMJTNBEFPGCSJDLT5IF XBMMJTNFUFSTIJHI