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

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

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

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

株式会社出前館

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