Upgrade to Pro — share decks privately, control downloads, hide ads and more …

出前館アプリにおける Flutterアプリ設計

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

出前館アプリにおける Flutterアプリ設計

エネチェンジ社との合同技術イベントにてFlutter開発のノウハウをテーマに登壇させていただきました

Avatar for 株式会社出前館

株式会社出前館

May 31, 2024
Tweet

More Decks by 株式会社出前館

Other Decks in Technology

Transcript

  1. ύΫɾϤϯϗ ग़લؗ プ ϩ ダ Ϋτຊ෦ίϯγϡʔϚ෦ Ξ プ Ϧ։ൃ グ

    ϧʔ プ  ܦྺ w -(ిࢠ d  w .PCJMF8J'J #41"OESPJE'SBNFXPSL.PCJMF"QQMJDBUJPO  w %FFQ/BUVSBM d  w .PCJMF"QQMJDBUJPO w -*/&1MVT d  (JUIVC w IUUQTHJUIVCDPNUVSMWP ԭೄग़਎ͷ࠺ͱઈࢍΠϠΠϠظͷࣗಈंΦλΫͷଉࢠʢ̐ࡀʣͱؖࠃࡏॅ
  2. ग़લؗͱ͸ ग़લؗ  ΞϓϦ΍αΠτ͔Β؆୯ʹ஫จͰ͖ɺ͞·͟·ͳγʔϯͰ׆༻Մೳͳશࠃ ౎ಓ෎ݝʹల։͢Δࠃ಺࠷େڃͷσϦόϦʔαʔϏε ग़લؗ130%6$54  Ճໍళ޲͚Ξ プ Ϧ

    ϑʔυʔ  9BNBSJO'MVUUFS   Ճໍళ޲͚Ξ プ Ϧ Ϧςʔϧʔ  /BUJWF'MVUUFS   υϥΠόʔ޲͚Ξ プ Ϧ 3FBDU/BUJWF'MVUUFS   Ճໍళ؅ཧऀ޲͚ΞϓϦ 'MVUUFS   ग़લؗΞ プ Ϧ ΤϯυϢʔ ザ ޲͚  3FBDU/BUJWF'MVUUFS
  3. 'PMEFS4USVDUVSF 5ZQF%PBNJO74'FBUVSF741BDLBHF 5ZQF%PBNJO  ϑΝΠϧΛυϝΠϯผ .PEFM 7JFX  7JFX.PEFM ෼ྨ͢Δ

     ϝϦοτॳظখن໛ϓϩδΣΫτʹ ͓͍ͯ͸ϑΝΠϧΛૉૣ͘୳ͤΔͱ͍͏ ఺  σϝϦοτϓϩδΣΫτن໛͕େ͖͘ ͳΕ͹ͳΔ΄ͲϑΝΠϧ਺͕ଟ͘ͳΓɺ ίʔυ؅ཧ΍ݕࡧ͕ෳࡶʹͳΔ ‣MJC ‣TSD ‣QSFTFOUBUJPO ‣GFBUVSF ‣GFBUVSF ‣BQQMJDBUJPO ‣GFBUVSF ‣GFBUVSF ‣EPNBJO ‣GFBUVSF ‣GFBUVSF ‣EBUB ‣GFBUVSF ‣GFBUVSF
  4. 'PMEFS4USVDUVSF 5ZQF%PBNJO74'FBUVSF741BDLBHF 'PMEFSTCZ'FBUVSF  ֤ػೳผʹϑΥϧμΛߏ੒ɺ֤'FBUVSFϑΥϧ μ͸XJEHFUNPEFMDPOUSPMMFSͳͲΛؚΉ  ϝϦοτ େن໛ϓϩδΣΫτʹ͓͍ͯ͸ಛఆػೳΛૉ ૣ͘ݕࡧɺ؅ཧ͕Ͱ͖Δ

    ҟͳΔ'FBUVSFͷ։ൃ࣌ʹিಥΛݮΒ͢͜ͱ ͕Ͱ͖Δ  σϝϦοτ ॳظߏ੒͕ෳࡶʹͳΔՄೳੑ͕͋Δ ڞ௨ίʔυͷ؅ཧ͕೉͘͠ͳΔՄೳੑ͕͋Δ ‣MJC ‣TSD ‣GFBUVSFT ‣GFBUVSF ‣QSFTFOUBUJPO ‣BQQMJDBUJPO ‣EPNBJO ‣EBUB ‣GFBUVSF ‣QSFTFOUBUJPO ‣BQQMJDBUJPO ‣EPNBJO ‣EBUB
  5. 'PMEFS4USVDUVSF 5ZQF%PBNJO74'FBUVSF741BDLBHF 1BDLBHFTCZ'FBUVSF  ֤'FBUVSFΛผ్ͷύοέʔδͰ؅ཧͯ͠Ϟδϡ ʔϧԽ  ϝϦοτ ಠཱతʹ֤ػೳΛ։ൃɾςετ͕Ͱ͖Δ ͝ͱʹ໾ׂΛ෼୲ͯ͠։ൃ͢Δ͜ͱ͕༰қ

     σϝϦοτ ґଘతͳؔ܎Λ͞Βʹෳࡶʹ͢ΔՄೳੑ͕͋Δ ઃఆͱॳظߏ੒͕ෳࡶͰ͋Δ Ϧιʔε؅ཧ͕ෳࡶʹͳΓɺॏෳͨ͠Ϧιʔε ͕ൃੜ͢ΔՄೳੑ͕͋Δ ‣MJC ‣TSD ‣QSFTFOUBUJPO ‣BQQMJDBUJPO ‣EPNBJO ‣EBUB ‣QBDLBHFT ‣GFBUVSF ‣MJC ‣TSD ‣GFBUVSF ‣MJC ‣TSD
  6. "QQMJDBUJPO ᵓᴷᴷBTTFUT3FTPVSDFؔ࿈ϑΥϧμ *NBHFT 'POUT  ᵓᴷᴷDPO fi H#VJME$PO fi HVSBUJPOϑΥϧμ

    ᵓᴷᴷMJC ᴹᵓᴷᴷDPNNPOΞϓϦͰڞ௨ͯ͠࢖༻͞ΕΔϞδϡʔϧϑΥϧμ ᴹᴹᵓᴷᴷDPOTUBOUڞ௨$POTUBOU ᴹᴹᵓᴷᴷEBUB@TPVSDFڞ௨-PDBMɺ3FNPUF"1*ؔ࿈ϑΥϧμ ᴹᴹᴹᵓᴷᴷMPDBM ᴹᴹᴹᵋᴷᴷSFNPUF ᴹᵓᴷᴷGFBUVSFT'FBUVSF5PQϑΥϧμ ᴹᴹᵋᴷᴷGFBUVSF" ᴹᴹ ᵓᴷᴷᴷCMPD'FBUVSFผ#MPDϑΥϧμ ᴹᴹ ᵓᴷᴷᴷEBUB@TPVSDF'FBUVSFผ-PDBM 3FNPUF"1*ϑΥϧμ ᴹᴹ ᴹᵓᴷᴷᴷMPDBM ᴹᴹ ᴹᵋᴷᴷᴷSFNPUF ᴹᴹ ᵓᴷᴷᴷNPEFM'FBUVSFผϞσϧϑΥϧμ ᴹᴹ ᵓᴷᴷᴷQBHF'FBUVSFผ7JFXϑΥϧμ ᴹᴹ ᴹᵋᴷᴷᴷXJEHFU ᴹᴹ ᵓᴷᴷᴷVUJM'FBUVSFผ6UJMϑΥϧμ ᴹᴹ ᵋᴷᴷᴷSFQPTJUPSZ'FBUVSFผ3FQPTJUPSZϑΥϧμ ᴹᵓᴷᴷQMBUGPSNT1MBUGPSNϑΥϧμ ᴹᵓᴷᴷTFSWJDFTڞ௨Ϟδϡʔϧ 4FSWJDF ϑΥϧμ ᴹᵋᴷᴷVUJMڞ௨6UJMϑΥϧμ ᵓᴷᴷQBDLBHFT$VTUPN QBDLBHFϑΥϧμ ᵓᴷᴷUFTUςετϑΥϧμ ᵋᴷᴷUPPMT$*ϑΥϧμ ग़લؗ"QQϑΥϧμߏ੒ɹ 'PMEFSTCZ'FBUVSF  େن໛ϓϩδΣΫτ  ಛఆػೳʹ͓͚Δݕࡧɺ؅ཧ͕༰қ  ڞ௨ίʔυ؅ཧ͕໽հ ‣MJC ‣TSD ‣GFBUVSFT ‣GFBUVSF ‣QSFTFOUBUJPO ‣BQQMJDBUJPO ‣EPNBJO ‣EBUB ‣GFBUVSF ‣QSFTFOUBUJPO ‣BQQMJDBUJPO ‣EPNBJO
  7. "TTFU.BOBHFNFOU GMVUUFS@HFO ଞϓϩμΫτݱঢ় υϥΠόʔ޲͚Ξ プ Ϧ Ճໍళ޲͚Ξ プ Ϧ ϑʔυ

    Ճໍళ޲͚Ξ プ Ϧ Ϧςʔϧʣ Ճໍళ؅ཧऀ޲͚ΞϓϦ %FTDSJQUJPO "TTFUQBUIOBNF௚ ઀ೖྗ  fl VUUFS@HFO࢖༻  fl VUUFS@HFO࢖༻ εΫϦϓτͰ$MBTT࡞ ੒ ϝϦοτ ௥Ճࣄલ࡞ۀ͕ෆඞཁ "TTFUࢀরΤϥʔ๷ࢭ "TTFUࢀরΤϥʔ๷ࢭ  "TTFUࢀরΤϥʔ๷ࢭ σϝϦοτ "TTFUQBUIOBNFϛ ε  "TTFU௥Ճ࡟আ࣌ CVJME@SVOOFS࣮ߦඞਢ  "TTFU௥Ճ࡟আ࣌ CVJME@SVOOFS࣮ߦඞ ਢ  "TTFU௥Ճ࡟আ࣌ 4DSJQU࣮ߦඞਢ  4DSJQUͷϝϯςφϯε  "TTFUUZQFϛε
  8. "TTFU.BOBHFNFOU GMVUUFS@HFO ଞϓϩμΫτݱঢ় υϥΠόʔ޲͚Ξ プ Ϧ Ճໍళ޲͚Ξ プ Ϧ ϑʔυ

    Ճໍళ޲͚Ξ プ Ϧ Ϧςʔϧʣ Ճໍళ؅ཧऀ޲͚ΞϓϦ %FTDSJQUJPO "TTFUQBUIOBNF௚ ઀ೖྗ  fl VUUFS@HFO࢖༻  fl VUUFS@HFO࢖༻ εΫϦϓτͰ$MBTT࡞ ੒ ϝϦοτ ௥Ճࣄલ࡞ۀ͕ෆඞཁ "TTFUࢀরΤϥʔ๷ࢭ "TTFUࢀরΤϥʔ๷ࢭ  "TTFUࢀরΤϥʔ๷ࢭ σϝϦοτ "TTFUQBUIOBNFϛ ε  "TTFU௥Ճ࡟আ࣌ CVJME@SVOOFS࣮ߦඞਢ  "TTFU௥Ճ࡟আ࣌ CVJME@SVOOFS࣮ߦඞ ਢ  "TTFU௥Ճ࡟আ࣌ 4DSJQU࣮ߦඞਢ  4DSJQUͷϝϯςφϯε  "TTFUUZQFϛε
  9. "TTFU.BOBHFNFOU GMVUUFS@HFO ଞϓϩμΫτݱঢ় υϥΠόʔ޲͚Ξ プ Ϧ Ճໍళ޲͚Ξ プ Ϧ ϑʔυ

    Ճໍళ޲͚Ξ プ Ϧ Ϧςʔϧʣ Ճໍళ؅ཧऀ޲͚ΞϓϦ %FTDSJQUJPO "TTFUQBUIOBNF௚ ઀ೖྗ  fl VUUFS@HFO࢖༻  fl VUUFS@HFO࢖༻ εΫϦϓτͰ$MBTT࡞ ੒ ϝϦοτ ௥Ճࣄલ࡞ۀ͕ෆඞཁ "TTFUࢀরΤϥʔ๷ࢭ "TTFUࢀরΤϥʔ๷ࢭ  "TTFUࢀরΤϥʔ๷ࢭ σϝϦοτ "TTFUQBUIOBNFϛ ε  "TTFU௥Ճ࡟আ࣌ CVJME@SVOOFS࣮ߦඞਢ  "TTFU௥Ճ࡟আ࣌ CVJME@SVOOFS࣮ߦඞ ਢ  "TTFU௥Ճ࡟আ࣌ 4DSJQU࣮ߦඞਢ  4DSJQUͷϝϯςφϯε  "TTFUUZQFϛε
  10. "TTFU.BOBHFNFOU GMVUUFS@HFO  fl VUUFS@HFOద༻ "TTFUࢀরΤϥʔ๷ࢭ طଘ#VJME@SVOOFS࢖༻தͰ͋Γ௥Ճ࡞ۀͷඞཁͳ͠ ίʔυ࡞੒࣌*%&ͷࣗಈิ׬ػೳʹΑΔੜ࢈ੑ޲্ 50#& "4*4

    &Y  8JEHFUCVJME #VJME$POUFYUDPOUFYU \ SFUVSO *NBHFBTTFU BTTFUTJNBHFTQSP fi MFKQFH  ^ &Y  DPOTU QSP fi MF*NBHF BTTFUTJNBHFTQSP fi MFKQFH 8JEHFUCVJME #VJME$POUFYUDPOUFYU \ SFUVSO *NBHFBTTFU QSP fi MF*NBHF  ^ 8JEHFUCVJME #VJME$POUFYUDPOUFYU \ SFUVSO "TTFUTJNBHFTQSP fi MFJNBHF  ^
  11. FYUFOTJPO%F"TTFU4IPSUDVUPO#VJME$POUFYU\ "TTFUT*NBHFT(FOHFUJNBHFT%F"TTFUTJNBHFT ^  8JEHFUCVJME #VJME$POUFYUDPOUFYU \ SFUVSODPOUFYUJNBHFTQSP fi MFJNBHF

     ^ 8JEHFUCVJME #VJME$POUFYUDPOUFYU \ SFUVSO "TTFUTJNBHFTQSP fi MFJNBHF  ^ "TTFU.BOBHFNFOU GMVUUFS@HFO  fl VUUFS@HFOద༻ #VJME$POUFYU੄FYUFOTJPOΛ௨͠"TTFU4IPSUDVU࢖༻த  5ZQPHSBQIZ $PMPS 4UZMF 5IFNFͳͲ͕͢ͰʹಉҰͷํ๏Λ࢖༻  DPOUFYU͕ଘࡏ͢Δ7JFXͰͷΈΞΫηεՄೳ 0OFNPSFUIJOHʜ 50#&
  12. 4JOHMF$MBTT .VMUJ$MBTT 4JOHMF$MBTT4UBUF 4JOHMF$MBTT4UBUF &OVNTUBUVT  'SFF[FE .VMUJ$MBTT4UBUF .VMUJ$MBTT4UBUF 'SFF[FE

    4BNQMF DMBTT$PVOUFS4UBUF\  fi OBMJOUDPVOUFS  fi OBMCPPMJT-PBEJOH $PVOUFS4UBUF \ UIJTDPVOUFS  UIJTJT-PBEJOHGBMTF  ^  ^ FOVN $PVOUFS4UBUVT\MPBEJOH MPBEFE^  !GSFF[FE DMBTT $PVOUFS4UBUFXJUI@$PVOUFS4UBUF\  DPOTU GBDUPSZ$PVOUFS4UBUF \  !%FGBVMU $PVOUFS4UBUVTMPBEFE TUBUVT    SFRVJSFE JOU DPVOU   ^ @$PVOUFS4UBUF ^ BCTUSBDUDMBTT$PVOUFS4UBUF\  fi OBMJOUDPVOU $PVOUFS4UBUF \ SFRVJSFEUIJTDPVOU  ^  ^ DMBTT-PBEJOH4UBUFFYUFOET$PVOUFS4UBUF\ -PBEJOH4UBUF \ SFRVJSFETVQFSDPVOU  ^  ^ DMBTT-PBEFE4UBUFFYUFOET$PVOUFS4UBUF\ -PBEFE4UBUF \ SFRVJSFETVQFSDPVOU  ^  ^ !GSFF[FE DMBTT $PVOUFS4UBUFXJUI@$PVOUFS4UBUF\  DPOTU GBDUPSZ$PVOUFS4UBUFMPBEFE \ SFRVJSFE JOU DPVOU  ^ -PBEFE4UBUF   DPOTU GBDUPSZ$PVOUFS4UBUFMPBEJOH \ SFRVJSFE JOU DPVOU  ^ -PBEJOH4UBUF ^ ϝϦοτ શͯͷঢ়ଶ৘ใ͕ҰͭͷΫϥεʹ؅ཧ ͞Ε͍ͯΔγϯϓϧͳߏ੒  શͯͷঢ়ଶ৘ใ͕ҰͭͷΫϥεʹ؅ཧ͞Εͯ ͍Δγϯϓϧͳߏ੒  DPQZ8JUI GSPN+TPO UP+TPO UP4USJOH ͳͲϝιουࣗಈੜ੒  ֤ঢ়ଶΛผ్ͷΫϥεʹ෼཭͠ɺՄಡੑ͕ ߴ͍  ঢ়ଶผʹ fi FMEΛผʹߏ੒ɺॊೈͳߏ଄  ৽͍͠ঢ়ଶ௥Ճ·ͨϝϯςφϯε͕༰қ  ֤ঢ়ଶผͷΫϥεΛ෼཭͠ɺՄಡੑ͕ߴ͍  ঢ়ଶผ fi FMEΛߏ੒ɺॊೈͳߏ଄  ৽͍͠ঢ়ଶ௥Ճ·ͨϝϯςφϯε͕༰қ  DPQZ8JUI GSPN+TPO UP+TPO UP4USJOH ϝιουࣗಈੜ੒ σϝϦοτ  ঢ়ଶ͕ଟ͘ͳΕ͹؅ཧɺՄಡੑʹ͚ܽ Δ  ঢ়ଶʹؔ܎ͳ͘શͯͷ fi MFE͕ৗʹଘࡏ FYGBJMVSFͰ͋ͬͯ΋TVDDFTTʹ֘౰ ͢Δ fi FME͕·ͩଘࡏ͢Δ  ঢ়ଶ͕ଟ͘ͳΕ͹؅ཧɺՄಡੑʹ͚ܽΔ  ঢ়ଶʹؔ܎ͳ͘શͯͷ fi MFE͕ৗʹଘࡏ FYGBJMVSFͰ͋ͬͯ΋TVDDFTTʹ֘౰͢Δ fi FME͕·ͩଘࡏ͢Δ  ঢ়ଶ͝ͱʹผ్ͷΫϥεʹఆٛɺ؅ཧ͕ඞ ཁ  DPQZ8JUI GSPN+TPO UP+TPO UP4USJOH ͳͲͷϝιου۩ମԽඞཁ  'SFF[FE࢖༻ϥʔχϯάΧʔϒ  Ϗϧυ࣌ؒ૿Ճ  'SFF[FE௥ՃʹΑΔύοέʔδґଘੑ͕Ͱ ͖Δ
  13. 4JOHMF$MBTT .VMUJ$MBTT 4JOHMF$MBTT4UBUF 4JOHMF$MBTT4UBUF &OVNTUBUVT  'SFF[FE .VMUJ$MBTT4UBUF .VMUJ$MBTT4UBUF 'SFF[FE

    4BNQMF DMBTT$PVOUFS4UBUF\  fi OBMJOUDPVOUFS  fi OBMCPPMJT-PBEJOH $PVOUFS4UBUF \ UIJTDPVOUFS  UIJTJT-PBEJOHGBMTF  ^  ^ FOVN $PVOUFS4UBUVT\MPBEJOH MPBEFE^  !GSFF[FE DMBTT $PVOUFS4UBUFXJUI@$PVOUFS4UBUF\  DPOTU GBDUPSZ$PVOUFS4UBUF \  !%FGBVMU $PVOUFS4UBUVTMPBEFE TUBUVT    SFRVJSFE JOU DPVOU   ^ @$PVOUFS4UBUF ^ BCTUSBDUDMBTT$PVOUFS4UBUF\  fi OBMJOUDPVOU $PVOUFS4UBUF \ SFRVJSFEUIJTDPVOU  ^  ^ DMBTT-PBEJOH4UBUFFYUFOET$PVOUFS4UBUF\ -PBEJOH4UBUF \ SFRVJSFETVQFSDPVOU  ^  ^ DMBTT-PBEFE4UBUFFYUFOET$PVOUFS4UBUF\ -PBEFE4UBUF \ SFRVJSFETVQFSDPVOU  ^  ^ !GSFF[FE DMBTT $PVOUFS4UBUFXJUI@$PVOUFS4UBUF\  DPOTU GBDUPSZ$PVOUFS4UBUFMPBEFE \ SFRVJSFE JOU DPVOU  ^ -PBEFE4UBUF   DPOTU GBDUPSZ$PVOUFS4UBUFMPBEJOH \ SFRVJSFE JOU DPVOU  ^ -PBEJOH4UBUF ^ ϝϦοτ શͯͷঢ়ଶ৘ใ͕ҰͭͷΫϥεʹ؅ཧ ͞Ε͍ͯΔγϯϓϧͳߏ੒  શͯͷঢ়ଶ৘ใ͕ҰͭͷΫϥεʹ؅ཧ͞Εͯ ͍Δγϯϓϧͳߏ੒  DPQZ8JUI GSPN+TPO UP+TPO UP4USJOH ͳͲϝιουࣗಈੜ੒  ֤ঢ়ଶΛผ్ͷΫϥεʹ෼཭͠ɺՄಡੑ͕ ߴ͍  ঢ়ଶผʹ fi FMEΛผʹߏ੒ɺॊೈͳߏ଄  ৽͍͠ঢ়ଶ௥Ճ·ͨϝϯςφϯε͕༰қ  ֤ঢ়ଶผͷΫϥεΛ෼཭͠ɺՄಡੑ͕ߴ͍  ঢ়ଶผ fi FMEΛߏ੒ɺॊೈͳߏ଄  ৽͍͠ঢ়ଶ௥Ճ·ͨϝϯςφϯε͕༰қ  DPQZ8JUI GSPN+TPO UP+TPO UP4USJOH ϝιουࣗಈੜ੒ σϝϦοτ  ঢ়ଶ͕ଟ͘ͳΕ͹؅ཧɺՄಡੑʹ͚ܽ Δ  ঢ়ଶʹؔ܎ͳ͘શͯͷ fi MFE͕ৗʹଘࡏ FYGBJMVSFͰ͋ͬͯ΋TVDDFTTʹ֘౰ ͢Δ fi FME͕·ͩଘࡏ͢Δ  ঢ়ଶ͕ଟ͘ͳΕ͹؅ཧɺՄಡੑʹ͚ܽΔ  ঢ়ଶʹؔ܎ͳ͘શͯͷ fi MFE͕ৗʹଘࡏ FYGBJMVSFͰ͋ͬͯ΋TVDDFTTʹ֘౰͢Δ fi FME͕·ͩଘࡏ͢Δ  ঢ়ଶ͝ͱʹผ్ͷΫϥεʹఆٛɺ؅ཧ͕ඞ ཁ  DPQZ8JUI GSPN+TPO UP+TPO UP4USJOH ͳͲͷϝιου۩ମԽඞཁ  'SFF[FE࢖༻ϥʔχϯάΧʔϒ  Ϗϧυ࣌ؒ૿Ճ  'SFF[FE௥ՃʹΑΔύοέʔδґଘੑ͕Ͱ ͖Δ
  14. 4JOHMF$MBTT .VMUJ$MBTT 4JOHMF$MBTT4UBUF 4JOHMF$MBTT4UBUF &OVNTUBUVT  'SFF[FE .VMUJ$MBTT4UBUF .VMUJ$MBTT4UBUF 'SFF[FE

    4BNQMF DMBTT$PVOUFS4UBUF\  fi OBMJOUDPVOUFS  fi OBMCPPMJT-PBEJOH $PVOUFS4UBUF \ UIJTDPVOUFS  UIJTJT-PBEJOHGBMTF  ^  ^ FOVN $PVOUFS4UBUVT\MPBEJOH MPBEFE^  !GSFF[FE DMBTT $PVOUFS4UBUFXJUI@$PVOUFS4UBUF\  DPOTU GBDUPSZ$PVOUFS4UBUF \  !%FGBVMU $PVOUFS4UBUVTMPBEFE TUBUVT    SFRVJSFE JOU DPVOU   ^ @$PVOUFS4UBUF ^ BCTUSBDUDMBTT$PVOUFS4UBUF\  fi OBMJOUDPVOU $PVOUFS4UBUF \ SFRVJSFEUIJTDPVOU  ^  ^ DMBTT-PBEJOH4UBUFFYUFOET$PVOUFS4UBUF\ -PBEJOH4UBUF \ SFRVJSFETVQFSDPVOU  ^  ^ DMBTT-PBEFE4UBUFFYUFOET$PVOUFS4UBUF\ -PBEFE4UBUF \ SFRVJSFETVQFSDPVOU  ^  ^ !GSFF[FE DMBTT $PVOUFS4UBUFXJUI@$PVOUFS4UBUF\  DPOTU GBDUPSZ$PVOUFS4UBUFMPBEFE \ SFRVJSFE JOU DPVOU  ^ -PBEFE4UBUF   DPOTU GBDUPSZ$PVOUFS4UBUFMPBEJOH \ SFRVJSFE JOU DPVOU  ^ -PBEJOH4UBUF ^ ϝϦοτ શͯͷঢ়ଶ৘ใ͕ҰͭͷΫϥεʹ؅ཧ ͞Ε͍ͯΔγϯϓϧͳߏ੒  શͯͷঢ়ଶ৘ใ͕ҰͭͷΫϥεʹ؅ཧ͞Εͯ ͍Δγϯϓϧͳߏ੒  DPQZ8JUI GSPN+TPO UP+TPO UP4USJOH ͳͲϝιουࣗಈੜ੒  ֤ঢ়ଶΛผ్ͷΫϥεʹ෼཭͠ɺՄಡੑ͕ ߴ͍  ঢ়ଶผʹ fi FMEΛผʹߏ੒ɺॊೈͳߏ଄  ৽͍͠ঢ়ଶ௥Ճ·ͨϝϯςφϯε͕༰қ  ֤ঢ়ଶผͷΫϥεΛ෼཭͠ɺՄಡੑ͕ߴ͍  ঢ়ଶผ fi FMEΛߏ੒ɺॊೈͳߏ଄  ৽͍͠ঢ়ଶ௥Ճ·ͨϝϯςφϯε͕༰қ  DPQZ8JUI GSPN+TPO UP+TPO UP4USJOH ϝιουࣗಈੜ੒ σϝϦοτ  ঢ়ଶ͕ଟ͘ͳΕ͹؅ཧɺՄಡੑʹ͚ܽ Δ  ঢ়ଶʹؔ܎ͳ͘શͯͷ fi MFE͕ৗʹଘࡏ FYGBJMVSFͰ͋ͬͯ΋TVDDFTTʹ֘౰ ͢Δ fi FME͕·ͩଘࡏ͢Δ  ঢ়ଶ͕ଟ͘ͳΕ͹؅ཧɺՄಡੑʹ͚ܽΔ  ঢ়ଶʹؔ܎ͳ͘શͯͷ fi MFE͕ৗʹଘࡏ FYGBJMVSFͰ͋ͬͯ΋TVDDFTTʹ֘౰͢Δ fi FME͕·ͩଘࡏ͢Δ  ঢ়ଶ͝ͱʹผ్ͷΫϥεʹఆٛɺ؅ཧ͕ඞ ཁ  DPQZ8JUI GSPN+TPO UP+TPO UP4USJOH ͳͲͷϝιου۩ମԽඞཁ  'SFF[FE࢖༻ϥʔχϯάΧʔϒ  Ϗϧυ࣌ؒ૿Ճ  'SFF[FE௥ՃʹΑΔύοέʔδґଘੑ͕Ͱ ͖Δ
  15. 4JOHMF$MBTT .VMUJ$MBTT 4JOHMF$MBTT4UBUF 4JOHMF$MBTT4UBUF &OVNTUBUVT  'SFF[FE .VMUJ$MBTT4UBUF .VMUJ$MBTT4UBUF 'SFF[FE

    4BNQMF DMBTT$PVOUFS4UBUF\  fi OBMJOUDPVOUFS  fi OBMCPPMJT-PBEJOH $PVOUFS4UBUF \ UIJTDPVOUFS  UIJTJT-PBEJOHGBMTF  ^  ^ FOVN $PVOUFS4UBUVT\MPBEJOH MPBEFE^  !GSFF[FE DMBTT $PVOUFS4UBUFXJUI@$PVOUFS4UBUF\  DPOTU GBDUPSZ$PVOUFS4UBUF \  !%FGBVMU $PVOUFS4UBUVTMPBEFE TUBUVT    SFRVJSFE JOU DPVOU   ^ @$PVOUFS4UBUF ^ BCTUSBDUDMBTT$PVOUFS4UBUF\  fi OBMJOUDPVOU $PVOUFS4UBUF \ SFRVJSFEUIJTDPVOU  ^  ^ DMBTT-PBEJOH4UBUFFYUFOET$PVOUFS4UBUF\ -PBEJOH4UBUF \ SFRVJSFETVQFSDPVOU  ^  ^ DMBTT-PBEFE4UBUFFYUFOET$PVOUFS4UBUF\ -PBEFE4UBUF \ SFRVJSFETVQFSDPVOU  ^  ^ !GSFF[FE DMBTT $PVOUFS4UBUFXJUI@$PVOUFS4UBUF\  DPOTU GBDUPSZ$PVOUFS4UBUFMPBEFE \ SFRVJSFE JOU DPVOU  ^ -PBEFE4UBUF   DPOTU GBDUPSZ$PVOUFS4UBUFMPBEJOH \ SFRVJSFE JOU DPVOU  ^ -PBEJOH4UBUF ^ ϝϦοτ શͯͷঢ়ଶ৘ใ͕ҰͭͷΫϥεʹ؅ཧ ͞Ε͍ͯΔγϯϓϧͳߏ੒  શͯͷঢ়ଶ৘ใ͕ҰͭͷΫϥεʹ؅ཧ͞Εͯ ͍Δγϯϓϧͳߏ੒  DPQZ8JUI GSPN+TPO UP+TPO UP4USJOH ͳͲϝιουࣗಈੜ੒  ֤ঢ়ଶΛผ్ͷΫϥεʹ෼཭͠ɺՄಡੑ͕ ߴ͍  ঢ়ଶผʹ fi FMEΛผʹߏ੒ɺॊೈͳߏ଄  ৽͍͠ঢ়ଶ௥Ճ·ͨϝϯςφϯε͕༰қ  ֤ঢ়ଶผͷΫϥεΛ෼཭͠ɺՄಡੑ͕ߴ͍  ঢ়ଶผ fi FMEΛߏ੒ɺॊೈͳߏ଄  ৽͍͠ঢ়ଶ௥Ճ·ͨϝϯςφϯε͕༰қ  DPQZ8JUI GSPN+TPO UP+TPO UP4USJOH ϝιουࣗಈੜ੒ σϝϦοτ  ঢ়ଶ͕ଟ͘ͳΕ͹؅ཧɺՄಡੑʹ͚ܽ Δ  ঢ়ଶʹؔ܎ͳ͘શͯͷ fi MFE͕ৗʹଘࡏ FYGBJMVSFͰ͋ͬͯ΋TVDDFTTʹ֘౰ ͢Δ fi FME͕·ͩଘࡏ͢Δ  ঢ়ଶ͕ଟ͘ͳΕ͹؅ཧɺՄಡੑʹ͚ܽΔ  ঢ়ଶʹؔ܎ͳ͘શͯͷ fi MFE͕ৗʹଘࡏ FYGBJMVSFͰ͋ͬͯ΋TVDDFTTʹ֘౰͢Δ fi FME͕·ͩଘࡏ͢Δ  ঢ়ଶ͝ͱʹผ్ͷΫϥεʹఆٛɺ؅ཧ͕ඞ ཁ  DPQZ8JUI GSPN+TPO UP+TPO UP4USJOH ͳͲͷϝιου۩ମԽඞཁ  'SFF[FE࢖༻ϥʔχϯάΧʔϒ  Ϗϧυ࣌ؒ૿Ճ  'SFF[FE௥ՃʹΑΔύοέʔδґଘੑ͕Ͱ ͖Δ
  16. 4JOHMF$MBTT .VMUJ$MBTT 4JOHMF$MBTT4UBUF 4JOHMF$MBTT4UBUF &OVNTUBUVT  'SFF[FE .VMUJ$MBTT4UBUF .VMUJ$MBTT4UBUF 'SFF[FE

    4BNQMF DMBTT$PVOUFS4UBUF\  fi OBMJOUDPVOUFS  fi OBMCPPMJT-PBEJOH $PVOUFS4UBUF \ UIJTDPVOUFS  UIJTJT-PBEJOHGBMTF  ^  ^ FOVN $PVOUFS4UBUVT\MPBEJOH MPBEFE^  !GSFF[FE DMBTT $PVOUFS4UBUFXJUI@$PVOUFS4UBUF\  DPOTU GBDUPSZ$PVOUFS4UBUF \  !%FGBVMU $PVOUFS4UBUVTMPBEFE TUBUVT    SFRVJSFE JOU DPVOU   ^ @$PVOUFS4UBUF ^ BCTUSBDUDMBTT$PVOUFS4UBUF\  fi OBMJOUDPVOU $PVOUFS4UBUF \ SFRVJSFEUIJTDPVOU  ^  ^ DMBTT-PBEJOH4UBUFFYUFOET$PVOUFS4UBUF\ -PBEJOH4UBUF \ SFRVJSFETVQFSDPVOU  ^  ^ DMBTT-PBEFE4UBUFFYUFOET$PVOUFS4UBUF\ -PBEFE4UBUF \ SFRVJSFETVQFSDPVOU  ^  ^ !GSFF[FE DMBTT $PVOUFS4UBUFXJUI@$PVOUFS4UBUF\  DPOTU GBDUPSZ$PVOUFS4UBUFMPBEFE \ SFRVJSFE JOU DPVOU  ^ -PBEFE4UBUF   DPOTU GBDUPSZ$PVOUFS4UBUFMPBEJOH \ SFRVJSFE JOU DPVOU  ^ -PBEJOH4UBUF ^ ϝϦοτ શͯͷঢ়ଶ৘ใ͕ҰͭͷΫϥεʹ؅ཧ ͞Ε͍ͯΔγϯϓϧͳߏ੒  શͯͷঢ়ଶ৘ใ͕ҰͭͷΫϥεʹ؅ཧ͞Εͯ ͍Δγϯϓϧͳߏ੒  DPQZ8JUI GSPN+TPO UP+TPO UP4USJOH ͳͲϝιουࣗಈੜ੒  ֤ঢ়ଶΛผ్ͷΫϥεʹ෼཭͠ɺՄಡੑ͕ ߴ͍  ঢ়ଶผʹ fi FMEΛผʹߏ੒ɺॊೈͳߏ଄  ৽͍͠ঢ়ଶ௥Ճ·ͨϝϯςφϯε͕༰қ  ֤ঢ়ଶผͷΫϥεΛ෼཭͠ɺՄಡੑ͕ߴ͍  ঢ়ଶผ fi FMEΛߏ੒ɺॊೈͳߏ଄  ৽͍͠ঢ়ଶ௥Ճ·ͨϝϯςφϯε͕༰қ  DPQZ8JUI GSPN+TPO UP+TPO UP4USJOH ϝιουࣗಈੜ੒ σϝϦοτ  ঢ়ଶ͕ଟ͘ͳΕ͹؅ཧɺՄಡੑʹ͚ܽ Δ  ঢ়ଶʹؔ܎ͳ͘શͯͷ fi MFE͕ৗʹଘࡏ FYGBJMVSFͰ͋ͬͯ΋TVDDFTTʹ֘౰ ͢Δ fi FME͕·ͩଘࡏ͢Δ  ঢ়ଶ͕ଟ͘ͳΕ͹؅ཧɺՄಡੑʹ͚ܽΔ  ঢ়ଶʹؔ܎ͳ͘શͯͷ fi MFE͕ৗʹଘࡏ FYGBJMVSFͰ͋ͬͯ΋TVDDFTTʹ֘౰͢Δ fi FME͕·ͩଘࡏ͢Δ  ঢ়ଶ͝ͱʹผ్ͷΫϥεʹఆٛɺ؅ཧ͕ඞ ཁ  DPQZ8JUI GSPN+TPO UP+TPO UP4USJOH ͳͲͷϝιου۩ମԽඞཁ  'SFF[FE࢖༻ϥʔχϯάΧʔϒ  Ϗϧυ࣌ؒ૿Ճ  'SFF[FE௥ՃʹΑΔύοέʔδґଘੑ͕Ͱ ͖Δ
  17. User Action Event Event stream Business Logic State State stream

    View 6TFSBDUJPO #MPD 6* User Action Business Logic State State stream View 6TFSBDUJPO $VCJU 6* $VCJU #MPD
  18. Push order button 6TFSBDUJPO #MPD 6* * orderInfo * orderInfo

    * orderInfo * orderId * orderInfo * message Order Page + Loading Order Page Move to OrderComplete Order Page + Error 4UBUFT #MPD $VCJU Order logic Success :FT /P Push order button 6TFSBDUJPO #MPD 6* *orderInfo orderId Message Order Page 4UBUFT #MPD $VCJU Order logic Success :FT /P *orderInfo orderId Message *orderInfo *orderId Message *orderInfo orderId *Message -PBEFE4UBUF -PBEJOH4UBUF 0SEFS$PNQMFUF4UBUF 'BJMFE4UBUF .VMUJ$MBTT4UBUF 4JOHMF$MBTT4UBUF