Slide 1

Slide 1 text

© DMM.com !LHNZTIJO 'MVUUFS.FFUVQ5PLZP #-P$

Slide 2

Slide 2 text

© DMM.com w LHNZTIJOఝٶ ͗͘Έ΍ w "OESPJEΤϯδχΞ w %..DPNϥϘ$50ࣨॴଐ w ೥݄͔Β ࣗݾ঺հ

Slide 3

Slide 3 text

© DMM.com BHFOEB

Slide 4

Slide 4 text

© DMM.com w #-P$ͱ͸ w #-P$ͷΨΠυϥΠϯ w #-P$ͱ6* w #-P$ͷྫ w 'MVUUFSͰͷ࢖͍ํ w ·ͱΊ BHFOEB

Slide 5

Slide 5 text

© DMM.com #-P$ͱ͸

Slide 6

Slide 6 text

© DMM.com #-P$ͱ͸ Business Logic Component

Slide 7

Slide 7 text

© DMM.com #-P$ͱ͸ ࣗ෼͕஌ͬͨͷ͸(PPHMF*0ͰͷԼهͷηογϣϯ Build reactive mobile apps with Flutter IUUQTXXXZPVUVCFDPNXBUDI W34H#&Q0*

Slide 8

Slide 8 text

© DMM.com #-P$ͱ͸ ࣮ࡍ͸೥݄ʹ%BSU$POGͷ ԼهͷηογϣϯͰൃද͞Ε͍ͯΔ Flutter / AngularDart – Code sharing, better together IUUQTXXXZPVUVCFDPNXBUDI W1-)MOX)H1&

Slide 9

Slide 9 text

© DMM.com #-P$ͱ͸ ϏδωεϩδοΫΛ UI΍ϓϥοτϑΥʔϜ͔Β ෼཭͢ΔͨΊͷ ઃܭύλʔϯͷҰͭ ҰݴͰݴ͏ͱ Ͱ͋Δ

Slide 10

Slide 10 text

© DMM.com #-P$ͷϞνϕʔγϣϯ 6* .PEFM *OGSB ͜͏͍͏ঢ়ଶΛ .PEFM .PEFM .PEFM

Slide 11

Slide 11 text

© DMM.com #-P$ͷϞνϕʔγϣϯ 6* .PEFM *OGSB ͜͏͍ͨ͠ 91MBUGPSN"EBQUFS

Slide 12

Slide 12 text

© DMM.com #-P$ͷΨΠυϥΠϯ

Slide 13

Slide 13 text

© DMM.com #-P$ͷΨΠυϥΠϯ JOQVUTBOEPVUQVUTBSFTJNQMF4USFBNT4JOLTPOMZ %FQFOEFODJFTNVTUCFJOKFDUBCMFBOEQMBUGPSN BHOPTUJD /PQMBUGPSNCSBODIJOHBMMPXFE *NQMFNFOUBUJPODBOCFXIBUFWFSZPVXBOUJGZPV GPMMPXUIFQSFWJPVTSVMFT " #VUNBZ*TVHHFTUSFBDUJWFQSPHSBNNJOH

Slide 14

Slide 14 text

© DMM.com #-P$ͷΨΠυϥΠϯ JOQVU͸4JOLɺPVUQVU͸4USFBNͰ࣮૷͢Δ ґଘΦϒδΣΫτ͸֎͔Β஫ೖՄೳͰɺϓϥοτ ϑΥʔϜʹґଘ͠ͳ͍΋ͷͰ͋Δ͜ͱ ϓϥοτϑΥʔϜͷ෼ذ͸μϝ dΛकͬͯΕ͹ɺ࣮૷͸ͳΜͰ΋͍͍Α ͨͩ͠ɺ3FBDUJWF1SPHSBNNJOHͰ૊Ήͷ͕͓͢͢ΊͩΑ

Slide 15

Slide 15 text

© DMM.com #-P$ͱ6*ͷܨ͗

Slide 16

Slide 16 text

© DMM.com #-P$ͱ6*ͷܨ͗ &BDIDPNQMFYFOPVHIDPNQPOFOUIBTB DPSSFTQPOEJOH#-P$ $PNQPOFOUTTIPVMETFOEJOQVUTBTJTz $PNQPOFOUTTIPVMETIPXPVUQVUTBTDMPTFBT QPTTJCMFUPBTJTz "MMCSBODIJOHTIPVMECFCBTFEPOTJNQMF#-P$ CPPMFBOPVUQVUT

Slide 17

Slide 17 text

© DMM.com #-P$ͷΨΠυϥΠϯ ͦΕͧΕͷzे෼ʹෳࡶͳzίϯϙʔωϯτʹ͸#-P$ ͕Ұͭ͋Δʢzे෼ʹෳࡶͳzͷ౓߹͍͸֤ࣗͰ൑அʣ JOQVUʹૹΔσʔλ͸BTJTͰ PVUQVUʹྲྀ͢ετϦʔϜ΋Ͱ͖Δ͚ͩlBTJTzͰ ͢΂ͯͷ෼ذ͸#-P$ʹΑΔ#PPMFBOͳΞ΢τϓοτ ʹجͮ͘΂͖Ͱ͋Δ

Slide 18

Slide 18 text

© DMM.com #-P$ͷྫ

Slide 19

Slide 19 text

© DMM.com #-P$ͷྫ class CartBLoC { Sink addition; Stream itemCount; Stream totalCost; Stream> items; }

Slide 20

Slide 20 text

© DMM.com #-P$ͷྫ class CartBLoC { Sink addition; Stream itemCount; Stream totalCost; Stream> items; } 1SPEVDU͕௥Ճ͞ΕΔͱ

Slide 21

Slide 21 text

© DMM.com #-P$ͷྫ class CartBLoC { Sink addition; Stream itemCount; Stream totalCost; Stream> items; } ͦΕͧΕͷ4USFBN͔Β݁Ռ͕ྲྀΕΔ

Slide 22

Slide 22 text

© DMM.com 'MVUUFSͰͷ࢖͍ํ

Slide 23

Slide 23 text

© DMM.com JOQVU΁ͷܨ͛ํ TextField( onChanged: bloc.sink.add, decoration: InputDecoration( border: OutlineInputBorder(), ɹɹɹ hintText: “hint"), )

Slide 24

Slide 24 text

© DMM.com JOQVU΁ͷܨ͛ํ TextField( onChanged: bloc.sink.add, decoration: InputDecoration( border: OutlineInputBorder(), ɹɹɹ hintText: “hint"), ) ΠϕϯτͱTJOLBEEΛόΠϯυ͢Δ͚ͩ

Slide 25

Slide 25 text

© DMM.com PVUQVUΛ6*ʹͭͳ͛Δํ๏ StreamBuilder( stream: bloc.stream, builder: (context, snapshot) => Container( child: Text(snapshot?.data ?? ""), ), )

Slide 26

Slide 26 text

© DMM.com PVUQVUΛ6*ʹͭͳ͛Δํ๏ StreamBuilder( stream: bloc.stream, builder: (context, snapshot) => Container( child: Text(snapshot?.data ?? ""), ), ) 4USFBN#VJMEFS࢖͏͚ͩ

Slide 27

Slide 27 text

© DMM.com ·ͱΊ

Slide 28

Slide 28 text

© DMM.com w #-P$͸6*ͱ.PEFMͱ*OGSBΛ෼͚Δ͜ͱͱɺΫϩε ϓϥοτϑΥʔϜͷίʔυγΣΞΛϞνϕʔγϣϯ ʹੜ·Εͨ w कΔ΂͖ΨΠυϥΠϯ͕͋Δ w 'MVUUFSͰ͸ w JOQVUΛૹΔͱ͜ΖͰ͸TJOLBEEΛόΠϯυ͢Δ w PVUQVUΛTVCTDSJCF͢Δʹ͸4USFBN#VJMEFSΛ࢖͏ ·ͱΊ