$30 off During Our Annual Pro Sale. View Details »

【Flutter】StateNotifier, Riverpodを利用し、
MVCでアプリを作っている話

Muttsu
December 22, 2020

【Flutter】StateNotifier, Riverpodを利用し、
MVCでアプリを作っている話

Muttsu

December 22, 2020
Tweet

More Decks by Muttsu

Other Decks in Programming

Transcript

  1. © 2 0 2 0 A t r a e , I n c .
    |
    1
    ʲ'MVUUFSʳ4UBUF/PUJpFS 3JWFSQPEΛར༻͠ɺ
    .7$ͰΞϓϦΛ࡞͍ͬͯΔ࿩
    !NVUUTV@
    Mutsumi Sato
    ࠤ౻ເੵ

    View Slide

  2. © 2 0 2 0 A t r a e , I n c .
    |
    2
    4BUP.VUTVNJ
    ࠤ౻ເੵ
    ೥৽ଔͰגࣜձࣾΞτϥΤೖࣾɻ
    "OESPJE LPUMJO
    ΤϯδχΞͱͯ͠ɺZFOUBͷϑϧεΫϥονϦχϡʔΞϧɺւ֎ల
    ։ͷରԠΛߦ͍·ͨ͠ɻͨ·ʹ8FCϑϩϯτ΍J04΋ॻ͍ͨΓ͠·͢ɻ
    ೥݄ΑΓZFOUBͱ݉೚ͯ͠ɺస৬αΠτ(SFFOͷ"OESPJEΞϓϦΛ'MVUUFSͰ
    ։ൃ͍ͯ͠·͢ɻ
    ϦϦʔεޙɺطग़ͷJ04ΞϓϦ΋'MVUUFS΁Ҡߦ༧ఆͰ͢ɻʢͨͿΜʣ
    ੈ ք த ͷ ਓ ʑ Λ ັ ྃ ͢ Δ ձ ࣾ Λ ૑ Δ
    !NVUUTV@
    ࣗݾ঺հ

    View Slide

  3. © 2 0 2 0 A t r a e , I n c .
    |
    ςΫϊϩδʔʹΑͬͯਓͷՄೳੑΛ֦͛ΔࣄۀΛ૑଄
    3 | ੈ ք த ͷ ਓ ʑ Λ ັ ྃ ͢ Δ ձ ࣾ Λ ૑ Δ
    גࣜձࣾΞτϥΤ
    େ੾ͳਓʹތΕΔձࣾͰ͋Γଓ͚Δ
    ౦ূϚβʔζ্৔
    ೥݄
    ೥݄ ౦ূҰ෦ʹࢢ৔มߋ
    ΞτϥΤઃཱ
    ೥݄
    ੈքதͷਓʑΛັྃ͢ΔձࣾΛ૑Δ
    ԯ ສԁ ໊
    People Tech Company
    Vision
    Philosophy
    ࢿຊۚ ࣾһ਺
    Ԋֵ
    Business Concept
    "*ϏδωεϚονϯάΞϓϦ
    Τϯήʔδϝϯτղੳπʔϧ
    ੒ޭใुܕٻਓϝσΟΞ
    ਓࡐͷྲྀಈԽͱదਖ਼഑ஔ
    ࣾҎ্ར༻
    ਓͱ૊৫ͷ׆ੑԽ
    ϏδωεΛՃ଎ͤ͞Δग़ձ͍
    ສ݅Ҏ্Ϛονϯά੒ཱ
    ࣾҎ্ར༻

    View Slide

  4. © 2 0 2 0 A t r a e , I n c .
    |
    4
    ໾৬ͷແ͍
    ࣗ཯෼ࢄܕ૊৫
    5 ˋ ˞ ௚ ۙ ೥ ฏ ۉ
    ΤϯήʔδϝϯτείΞ
    Great Place to Work
    ˞(SFBU1MBDFUP8PSLš*OTUJUVUF+BQBO࣮ࢪɹɹ ैۀһʙ໊ͷ෦ʣ
    ੈ ք த ͷ ਓ ʑ Λ ັ ྃ ͢ Δ ձ ࣾ Λ ૑ Δ
    WJTJPOQIJMPTPQIZ
    No.1
    No.1
    ೥ฏۉ
    ཭৬ऀ਺
    ࠃ಺ϥϯΩϯά
    ૊৫ͷಛ௃ ૊৫తͳ࣮੷
    ച্ߴ Ӧۀརӹ ࣾһҰਓ౰ͨΓച্ߴ
    FY2019
    FY2011 FY2015
    FY2019
    FY2011 FY2015
    FY2019
    FY2011 FY2015
    ʢඦສԁʣ
    60
    40
    20
    ʢඦສԁʣ
    600
    400
    200
    3000
    2000
    1000
    ʢඦສԁʣ

    View Slide

  5. © 2 0 2 0 A t r a e , I n c .
    |
    5
    ࠓ೔͓࿩͢͠Δ͜ͱ
    4UBUF/PUJpFSͱ͸
    3JWFSQPEͱ͸
    ࣮ࡍͷΞʔΩςΫνϟ
    .77.ͱ໋໊͠ͳ͔ͬͨཧ༝
    ·ͱΊ

    View Slide

  6. © 2 0 2 0 A t r a e , I n c .
    |
    6
    ࠓ೔͓࿩͢͠Δ͜ͱ
    4UBUF/PUJpFSͱ͸
    3JWFSQPEͱ͸
    ࣮ࡍͷΞʔΩςΫνϟ
    .77.ͱ໋໊͠ͳ͔ͬͨཧ༝
    ·ͱΊ
    ͍ͩͿ؆ૉͳͷͰɺৄࡉʹ͓ฉ͖͍ͨ͠ํ͸
    !NVUUTV@·Ͱ

    View Slide

  7. © 2 0 2 0 A t r a e , I n c .
    |
    7
    ࠓ೔͓࿩͢͠Δ͜ͱ
    4UBUF/PUJpFSͱ͸
    3JWFSQPEͱ͸
    ࣮ࡍͷΞʔΩςΫνϟ
    .77.ͱ໋໊͠ͳ͔ͬͨཧ༝
    ·ͱΊ

    View Slide

  8. © 2 0 2 0 A t r a e , I n c .
    |
    8
    4UBUF/PUJpFSͱ͸
    4UBUF/PUJpFSͱ͸
    w ঢ়ଶ؅ཧϥΠϒϥϦ
    w l4UBUFzͱ͍͏JNVUBCMFͳঢ়ଶΛ؅ཧ͢Δ஋Λ
    ͻͱ͚ͭͩΛอ࣋͢Δɻ
    w 4UBUFͷΠϯελϯε͕มΘͬͨΒɺมߋ͕
    ௨஌͞Εɺ7JFX͕ϦϏϧυ͞ΕΔ

    View Slide

  9. © 2 0 2 0 A t r a e , I n c .
    |
    9
    $IBOHF/PUJpFS
    w ঢ়ଶ؅ཧϥΠϒϥϦ
    w 4UBUF/PUJpFSͱҧ͍ɺෳ਺ͷNVUBCMFͳ஋Λ࣋ͭɻ
    w OPUJGZ-JTUFOFST
    ͱ͍͏ϝιουͰ஋ͷมߋΛ
    7JFXʹ௨஌͢Δ
    #-P$
    w ঢ়ଶ؅ཧϥΠϒϥϦ
    w 3FBDUJWF9ͷ0CTFSWBCMFʹࣅ͍ͯΔ
    w TUSFBN TJOLͱ͍͏΋ͷΛར༻ͯ͠஋ͷมߋɺ
    มߋͷड͚औΓΛߦ͏
    4UBUF/PUJpFSͱ͸

    View Slide

  10. © 2 0 2 0 A t r a e , I n c .
    |
    10
    $IBOHF/PUJpFS
    w OPUJGZ-JTUFOFST
    Λ͚ͭΔͷ͕໘౗
    w NVUBCMFͳͷͰɺͦΕΛ؅ཧ͢ΔϦεΫΛ௥͍ͨ͘ͳ͍ɻ
    w ଵଦͳͷͰJNNVUBCMFͷ΄͏͕γϯϓϧͰ޷͖ɻ
    #-P$
    w TUSFBN TJOLͷ֓೦ཧղ͕ͭΒ͔ͬͨʜɻ
    w Ͱ͖Δਓ͸͍͢͝ͳͱײͨ͡ʜɻ
    4UBUF/PUJpFSͱ͸

    View Slide

  11. © 2 0 2 0 A t r a e , I n c .
    |
    11
    ࠓ೔͓࿩͢͠Δ͜ͱ
    4UBUF/PUJpFSͱ͸
    3JWFSQPEͱ͸
    ࣮ࡍͷΞʔΩςΫνϟ
    .77.ͱ໋໊͠ͳ͔ͬͨཧ༝
    ·ͱΊ

    View Slide

  12. © 2 0 2 0 A t r a e , I n c .
    |
    12
    3JWFSQPEͱ͸
    1SPWJEFSͱ͸
    w 'MVUUFS͕ެࣜͰਪન͍ͯ͠Δ%*ঢ়ଶ؅ཧ
    ϥΠϒϥϦ
    w 1SPWJEFS$IBOHF/PUJpFSΛެࣜ͸͓͢͢Ί
    ͍ͯ͠Δ 4JNQMFBQQTUBUFNBOBHFNFOU

    View Slide

  13. © 2 0 2 0 A t r a e , I n c .
    |
    13
    3JWFSQPEͱ͸
    3JWFSQPEͱ͸
    w 1SPWJEFSͷ࡞ऀ͕৽ͨʹ։ൃͨ͠1SPWJEFS
    w 4UBUF/PUJpFSΛ%*4UBUF͕มߋʹͳͬͨΒ
    7JFXΛϦϏϧυ͢ΔͨΊʹར༻͍ͯ͠Δɻ
    w ϝϦοτ͸͜ͷهࣄʹ͔ͬ͠Γॻ͍ͯ͋Γ·͢
    ͷͰࠓճ͸ࠩ͠߇͑·͢ɻ

    View Slide

  14. © 2 0 2 0 A t r a e , I n c .
    |
    14
    ࠓ೔͓࿩͢͠Δ͜ͱ
    4UBUF/PUJpFSͱ͸
    3JWFSQPEͱ͸
    ࣮ࡍͷΞʔΩςΫνϟ
    .77.ͱ໋໊͠ͳ͔ͬͨཧ༝
    ·ͱΊ

    View Slide

  15. © 2 0 2 0 A t r a e , I n c .
    |
    15
    ࣮ࡍͷΞʔΩςΫνϟ
    MJC
    EJ
    EPNBJO
    JOGSBTUSVDUVSF
    QSFTFOUBUJPO
    TUBUF@DPOUSPMMFS
    TUBUF
    GFBUVSF VJ

    VUJM
    EBP@QSPWJEFST SFQPTJUPSZ@QSPWJEFST DPOUSPMMFS@QSPWJEFST
    &OUJUZ %BP 3FQPTJUPSZ
    )UUQ%BP -PDBM%C%BP 3FQPTJUPSZ*NQM %UPʜ
    7JFX 4UBUF 4UBUF$POUSPMMFS
    4UBUF$POUSPMMFS
    4UBUF
    8JEHFUT 7JFXT

    6UJMT

    View Slide

  16. © 2 0 2 0 A t r a e , I n c .
    |
    3JWFSQPE
    16
    ࣮ࡍͷΞʔΩςΫνϟ
    7JFX
    ɿࢀর͍ͯ͠Δํ޲
    3FQPTJUPSZ %BPʜ
    4UBUF
    4UBUF
    4UBUF$POUSPMMFS
    4UBUF/PUJpFS

    View Slide

  17. © 2 0 2 0 A t r a e , I n c .
    |
    3JWFSQPE
    17
    ࣮ࡍͷΞʔΩςΫνϟ
    7JFX
    ɿࢀর͍ͯ͠Δํ޲
    3FQPTJUPSZ %BPʜ
    4UBUF
    4UBUF
    4UBUF$POUSPMMFS
    4UBUF/PUJpFS

    ᶃϢʔβʔͷ
    ೖྗΛ఻ୡ

    View Slide

  18. © 2 0 2 0 A t r a e , I n c .
    |
    3JWFSQPE
    18
    ࣮ࡍͷΞʔΩςΫνϟ
    7JFX
    ɿࢀর͍ͯ͠Δํ޲
    3FQPTJUPSZ %BPʜ
    4UBUF
    ᶄ"1*௨৴
    4UBUF
    4UBUF$POUSPMMFS
    4UBUF/PUJpFS

    ᶃϢʔβʔͷ
    ೖྗΛ఻ୡ

    View Slide

  19. © 2 0 2 0 A t r a e , I n c .
    |
    3JWFSQPE
    19
    ࣮ࡍͷΞʔΩςΫνϟ
    7JFX
    ɿࢀর͍ͯ͠Δํ޲
    3FQPTJUPSZ %BPʜ
    4UBUF
    ᶄ"1*௨৴
    4UBUF
    4UBUF$POUSPMMFS
    4UBUF/PUJpFS

    ᶅ4UBUF΁৽͍͠
    ɹΠϯελϯεΛ୅ೖ
    ᶃϢʔβʔͷ
    ೖྗΛ఻ୡ

    View Slide

  20. © 2 0 2 0 A t r a e , I n c .
    |
    3JWFSQPE
    20
    ࣮ࡍͷΞʔΩςΫνϟ
    7JFX
    ɿࢀর͍ͯ͠Δํ޲
    3FQPTJUPSZ %BPʜ
    4UBUF
    ᶄ"1*௨৴
    ᶅ4UBUF΁৽͍͠
    ɹΠϯελϯεΛ୅ೖ
    4UBUF
    ᶆ4UBUFͷมߋΛݕ஌͠ɺ
    ɹ7JFXΛ࠶ੜ੒ʢϦϏϧυʣ
    ᶃϢʔβʔͷ
    ೖྗΛ఻ୡ
    4UBUF$POUSPMMFS
    4UBUF/PUJpFS

    View Slide

  21. © 2 0 2 0 A t r a e , I n c .
    |
    21
    ߟ͑ํ
    7JFX͸ 4UBUF
    $POUSPMMFS΁ϢʔβʔͷೖྗΛ఻ୡ
    $POUSPMMFS͸ඞཁʹԠͯ͡3FQPTJUPSZΛܦ༝ͯ͠
    "1*௨৴ %#ͱσʔλͷड͚౉͠Λ͢Δ
    $POUSPMMFS͸ɺ4UBUFͷมߋ͕ඞཁͳ৔߹ɺ
    ৽͍͠4UBUFͷΠϯελϯεΛ࡞੒͠ɺ஋Λม͑Δ
    $POUSPMMFSͷมߋΛ7JFX͕ݕ஌͠ɺ
    ࣗ਎ΛϦϏϧυ͢Δ
    ˞3JWFSQPE͸4UBUF$POUSPMMFSΛ7JFX΁*OKFDUJPO
    ɹ4UBUF$POUSPMMFSͷ4UBUFʹมߋ͕͋ͬͨΒ7JFXΛϦϏϧυ͢Δ
    ࣮ࡍͷΞʔΩςΫνϟ

    View Slide

  22. © 2 0 2 0 A t r a e , I n c .
    |
    22
    ߟ͑ํ
    7JFX͸ 4UBUF
    $POUSPMMFS΁ϢʔβʔͷೖྗΛ఻ୡ
    $POUSPMMFS͸ඞཁʹԠͯ͡3FQPTJUPSZΛܦ༝ͯ͠
    "1*௨৴ %#ͱσʔλͷड͚౉͠Λ͢Δ
    $POUSPMMFS͸ɺ4UBUFͷมߋ͕ඞཁͳ৔߹ɺ
    ৽͍͠4UBUFͷΠϯελϯεΛ࡞੒͠ɺ஋Λม͑Δ
    $POUSPMMFSͷมߋΛ7JFX͕ݕ஌͠ɺ
    ࣗ਎ΛϦϏϧυ͢Δ
    ˞3JWFSQPE͸4UBUF$POUSPMMFSΛ7JFX΁*OKFDUJPO
    ɹ4UBUF$POUSPMMFSͷ4UBUFʹมߋ͕͋ͬͨΒ7JFXΛϦϏϧυ͢Δ
    $POUSPMMFS͕7JFXʹ4UBUFͷ௨஌͍ͯ͠ΔͷͰ͸ͳ͘ɺ$POUSPMMFSͷ4UBUFͷ
    มߋΛ7JFX͕؂ࢹ͍ͯ͠ΔͷͰݫີʹ͸1BTTJWF.7$ .7$PCTFSWFS
    ύλʔϯͱ͸গ͠ҧ͏͔΋͠Ε·ͤΜɻ

    ࣮ࡍͷΞʔΩςΫνϟ

    View Slide

  23. © 2 0 2 0 A t r a e , I n c .
    |
    23
    ࣮ࡍͷΞʔΩςΫνϟ

    View Slide

  24. © 2 0 2 0 A t r a e , I n c .
    |
    24
    ᶃ(JUIVC3FQP-JTU7JFX͔Β(JUIVC3FQP%FUBJM7JFX΁ભҠ͢Δɻ
    ᶄ(JUIVC3FQP%FUBJM7JFXͰ3FQPTJUPSZʹελʔΛ͚ͭΔɻ
    ᶅ(JUIVC3FQP%FUBJM4UBUF$POUSPMMFSͷSFHJTUFS4UBS
    ΛݺͿɻ
    ᶆ"1*Λୟ͍ͯ௨৴ʹ੒ޭͨ͠Βɺ
    ɹ(JUIVC3FQP-JTU4UBUF$POUSPMMFSͷTUBSFE3FQPTJUPSZ
    Λݺͼɺ
    ɹ(JUIVC3FQP-JTU4UBUFΛߋ৽͢Δɻ
    ᶇ(JUIVC3FQP-JTU7JFXͰ4UBUFͷมߋΛݕ஌͠ɺ7JFX͕ϦϏϧυ͞Ε
    ɹҰཡͷ3FQPTJUPSZʹελʔ͕෇͍͍ͯΔঢ়ଶʹͳΔɻ
    ࣮ࡍͷΞʔΩςΫνϟ

    View Slide

  25. © 2 0 2 0 A t r a e , I n c .
    |
    25
    ࠓ೔͓࿩͢͠Δ͜ͱ
    4UBUF/PUJpFSͱ͸
    3JWFSQPEͱ͸
    ࣮ࡍͷΞʔΩςΫνϟ
    .77.ͱ໋໊͠ͳ͔ͬͨཧ༝
    ·ͱΊ

    View Slide

  26. © 2 0 2 0 A t r a e , I n c .
    |
    3JWFSQPE
    26
    7JFX
    ɿࢀর͍ͯ͠Δํ޲
    3FQPTJUPSZ %BPʜ
    4UBUF
    4UBUF
    3JWFSQPEΛར༻ͯ͠4UBUF$POUSPMMFSΛ
    "QQMJDBUJPOʹ͓͍ͯ4JOHMFUPOͳΦϒδΣΫτʹͯ͠%*͍ͯ͠Δ
    .77.ͱ໋໊͠ͳ͔ͬͨཧ༝
    4UBUF$POUSPMMFS
    4UBUF/PUJpFS

    View Slide

  27. © 2 0 2 0 A t r a e , I n c .
    |
    27
    ߟ͑ํ
    w .77.ʹ͓͍ͯ͸ɺ7JFX7JFX.PEFM͸جຊ̍ର̍ରԠ
    w ͦͯ͠ɺ7JFX.PEFM΁PO#VUUPO1SFTTFE
    ͳͲͷΑ͏ʹಛఆͷ
    7JFXʹରԠͨ͠ϝιουΛ༻ҙ͢Δ͜ͱʹͳΔ
    .77.ͱ໋໊͠ͳ͔ͬͨཧ༝

    View Slide

  28. © 2 0 2 0 A t r a e , I n c .
    |
    28
    ߟ͑ํ
    .77.ͱ໋໊͠ͳ͔ͬͨཧ༝
    w ࠓճ࣮૷ͨ͠4UBUF$POUSPMMFSͰ͸ͦ͏͍ͬͨϝιου͸༻ҙͤ
    ͣɺHFU6TFS%BUB
    HFU*UFNT
    ͳͲͷ௚઀తʹԿΛͯ͠΄͍͠
    ͔ͷϝιουΛ༻ҙ͍ͯ͠Δ
    w ཧ༝ͱͯ͠͸ɺ ࠓͷͱ͜Ζ
    ͦ͜·Ͱಛఆͷ7JFXʹෳࡶͳϩδο
    ΫΛॻ͘ඞཁ͕ͳ͍
    w ͦΕΑΓ΋ը໘ؒͰڞ༗͍ͨ͠σʔλΛΑ͠ͳʹѻ͍͖͍ͬͯͨ
    w ͳͷͰɺ7JFX.PEFMΑΓ΋4UBUF$POUSPMMFSͱ͍͏໋໊ͷ΄͏͕
    ద੾ͩͱߟ͑ͨ

    View Slide

  29. © 2 0 2 0 A t r a e , I n c .
    |
    29
    ࠓ೔͓࿩͢͠Δ͜ͱ
    4UBUF/PUJpFSͱ͸
    3JWFSQPEͱ͸
    ࣮ࡍͷΞʔΩςΫνϟ
    .77.ͱ໋໊͠ͳ͔ͬͨཧ༝
    ·ͱΊ

    View Slide

  30. © 2 0 2 0 A t r a e , I n c .
    |
    30
    ·ͱΊ
    ·ͱΊ
    w ϓϩδΣΫτʹΑͬͯ͸ɺը໘ؒͰͷσʔλͷڞ༗͕ཁΒͣɺ
    ͦΕΑΓ΋ը໘ʹؔ͢ΔෳࡶͳϩδοΫΛѻ͍͍ͨ৔߹͕͋Δɻ
    ͦͷ৔߹͸7JFX.PEFMʹͨ͠΄͏͕͍͍͔΋஌Εͳ͍ɻ
    w 4UBUF$POUSPMMFSΛ4JOHMFUPOʹ͍ͯ͠Δ͜ͱͰϝϞϦ͕ͻͬͺ͘
    ͞Ε͍ͯΔՄೳੑ΋͋ΔͷͰͦΕ͸ཁௐࠪ
    ஌ͬͯͨΒڭ͍͑ͯͩ͘͞

    w 7JFXʹؔ͢ΔϩδοΫ͕૿͖͑ͯͨΒ7JFX.PEFM૚ΛೖΕͯɺ
    .77.$
    ͳߏ੒ʹ͍ͯ͜͠͏ͱࢥ͏

    View Slide

  31. © 2 0 2 0 A t r a e , I n c .
    |
    31
    ਓ͕׆͖׆͖ͱ׆ಈͰ͖Δ૊৫΍
    ͜ͷνʔϜ͸ࣗ෼ͷνʔϜͩͱݴ͑ΔΑ͏ͳ
    νʔϜΛ૿΍ͨ͢Ίͷ
    Τϯήʔδϝϯτղੳπʔϧ
    ݸਓ͕͍࣋ͬͯΔ՝୊ҙࣝ΍ࣗݾ࣮ݱͷ
    ΤωϧΪʔΛɺܗʹ͍ͯ͘͠࢓૊Έ
    "*ϏδωεϚονϯάΞϓϦ
    ςΫϊϩδʔʹΑͬͯਓͷՄೳੑΛ֦͛ΔࣄۀΛ૑଄
    People Tech Company
    Business Concept
    ࣗ෼ʹͱͬͯͷ੨৴߸Λݟ͚ͭΔ·Ͱʹ
    ίετ΍όΠΞεΛఫഇ͠ɺਓͱ૊৫Λ
    ݩؾʹ͢ΔͨΊͷ
    ੒ޭใुܕٻਓϝσΟΞ
    ઈࢍΤϯδχΞ࠾༻தʂʂʂ
    5XJUUFS!NVUUTV@ˡؾܰʹ͝࿈བྷ͍ͩ͘͞

    View Slide