Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
出前館アプリにおける Flutterアプリ設計
Search
株式会社出前館
May 31, 2024
Technology
2
1.3k
出前館アプリにおける Flutterアプリ設計
エネチェンジ社との合同技術イベントにてFlutter開発のノウハウをテーマに登壇させていただきました
株式会社出前館
May 31, 2024
Tweet
Share
More Decks by 株式会社出前館
See All by 株式会社出前館
出前館アプリ進化論 アーキテクチャと組織のリアルな変⾰の舞台裏
demaecan
0
390
Flutterにしてよかった?出前館アプリを2年運用して気づいたことを全部話します
demaecan
1
800
Boxを“使われる場”にする統制と自動化の仕組み
demaecan
1
330
生成AI導入における「短期ROIを超えた」共存戦略
demaecan
0
64
Okta Identity Governanceで実現する最小権限の原則
demaecan
1
370
incident_commander_demaecan__1_.pdf
demaecan
0
290
ClickHouse Cloud をオブザーバビリティ基盤の候補に選んだ理由
demaecan
0
110
出前館の“裏エース!?”─TPM(Tech PM)が現場に安心をデリバリー!
demaecan
0
480
SpringBoot x TestContainerで実現するポータブル自動結合テスト
demaecan
0
330
Other Decks in Technology
See All in Technology
M&Aで拡大し続けるGENDAのデータ活用を促すためのDatabricks権限管理 / AEON TECH HUB #22
genda
0
310
国井さんにPurview の話を聞く会
sophiakunii
1
260
re:Invent2025 セッションレポ ~Spec-driven development with Kiro~
nrinetcom
PRO
2
160
Redshift認可、アップデートでどう変わった?
handy
1
120
ハッカソンから社内プロダクトへ AIエージェント ko☆shi 開発で学んだ4つの重要要素
leveragestech
0
520
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
58k
「駆動」って言葉、なんかカッコイイ_Mitz
comucal
PRO
0
130
善意の活動は、なぜ続かなくなるのか ーふりかえりが"構造を変える判断"になった半年間ー
matsukurou
0
140
20251225_たのしい出張報告&IgniteRecap!
ponponmikankan
0
110
Authlete で実装する MCP OAuth 認可サーバー #CIMD の実装を添えて
watahani
0
360
AI駆動開発ライフサイクル(AI-DLC)の始め方
ryansbcho79
0
290
Everything As Code
yosuke_ai
0
470
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
140
Designing Powerful Visuals for Engaging Learning
tmiket
0
190
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
72
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
Designing for humans not robots
tammielis
254
26k
Facilitating Awesome Meetings
lara
57
6.7k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.8k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
Transcript
גࣜձࣾग़લؗ 1"3,:&0/)0ɹύΫɾϤϯϗ ग़લؗΞϓϦʹ͓͚Δ 'MVUUFSΞϓϦઃܭ
ύΫɾϤϯϗ ग़લؗ プ ϩ ダ Ϋτຊ෦ίϯγϡʔϚ෦ Ξ プ Ϧ։ൃ グ
ϧʔ プ ܦྺ w -(ిࢠ d w .PCJMF8J'J #41"OESPJE'SBNFXPSL.PCJMF"QQMJDBUJPO w %FFQ/BUVSBM d w .PCJMF"QQMJDBUJPO w -*/&1MVT d (JUIVC w IUUQTHJUIVCDPNUVSMWP ԭೄग़ͷ࠺ͱઈࢍΠϠΠϠظͷࣗಈंΦλΫͷଉࢠʢ̐ࡀʣͱؖࠃࡏॅ
$POUFOUT ग़લؗͱ 'PMEFS4USVDUVSF 5ZQF%PBNJOWT'FBUVSFWT1BDLBHF "TTFU.BOBHFNFOU fl VUUFS@HFO 4UBUF.BOBHFNFOU
#-P$ ·ͱΊ
$POUFOUT ग़લؗͱ 'PMEFS4USVDUVSF 5ZQF%PBNJOWT'FBUVSFWT1BDLBHF "TTFU.BOBHFNFOU fl VUUFS@HFO 4UBUF.BOBHFNFOU
#-P$ ·ͱΊ
ग़લؗͱ ग़લؗ ΞϓϦαΠτ͔Β؆୯ʹจͰ͖ɺ͞·͟·ͳγʔϯͰ׆༻Մೳͳશࠃ ಓݝʹల։͢Δࠃ࠷େڃͷσϦόϦʔαʔϏε ग़લؗ130%6$54 Ճໍళ͚Ξ プ Ϧ
ϑʔυʔ 9BNBSJO'MVUUFS Ճໍళ͚Ξ プ Ϧ Ϧςʔϧʔ /BUJWF'MVUUFS υϥΠόʔ͚Ξ プ Ϧ 3FBDU/BUJWF'MVUUFS Ճໍళཧऀ͚ΞϓϦ 'MVUUFS ग़લؗΞ プ Ϧ ΤϯυϢʔ ザ ͚ 3FBDU/BUJWF'MVUUFS
$POUFOUT ग़લؗͱ 'PMEFS4USVDUVSF 5ZQF%PBNJOWT'FBUVSFWT1BDLBHF "TTFU.BOBHFNFOU fl VUUFS@HFO 4UBUF.BOBHFNFOU
#-P$ ·ͱΊ
'PMEFS4USVDUVSF 5ZQF%PBNJO74'FBUVSF741BDLBHF 5ZQF%PBNJO ϑΝΠϧΛυϝΠϯผ .PEFM 7JFX 7JFX.PEFM ྨ͢Δ
ϝϦοτॳظখنϓϩδΣΫτʹ ͓͍ͯϑΝΠϧΛૉૣ͘୳ͤΔͱ͍͏ σϝϦοτϓϩδΣΫτن͕େ͖͘ ͳΕͳΔ΄ͲϑΝΠϧ͕ଟ͘ͳΓɺ ίʔυཧݕࡧ͕ෳࡶʹͳΔ ‣MJC ‣TSD ‣QSFTFOUBUJPO ‣GFBUVSF ‣GFBUVSF ‣BQQMJDBUJPO ‣GFBUVSF ‣GFBUVSF ‣EPNBJO ‣GFBUVSF ‣GFBUVSF ‣EBUB ‣GFBUVSF ‣GFBUVSF
'PMEFS4USVDUVSF 5ZQF%PBNJO74'FBUVSF741BDLBHF 'PMEFSTCZ'FBUVSF ֤ػೳผʹϑΥϧμΛߏɺ֤'FBUVSFϑΥϧ μXJEHFUNPEFMDPOUSPMMFSͳͲΛؚΉ ϝϦοτ େنϓϩδΣΫτʹ͓͍ͯಛఆػೳΛૉ ૣ͘ݕࡧɺཧ͕Ͱ͖Δ
ҟͳΔ'FBUVSFͷ։ൃ࣌ʹিಥΛݮΒ͢͜ͱ ͕Ͱ͖Δ σϝϦοτ ॳظߏ͕ෳࡶʹͳΔՄೳੑ͕͋Δ ڞ௨ίʔυͷཧ͕͘͠ͳΔՄೳੑ͕͋Δ ‣MJC ‣TSD ‣GFBUVSFT ‣GFBUVSF ‣QSFTFOUBUJPO ‣BQQMJDBUJPO ‣EPNBJO ‣EBUB ‣GFBUVSF ‣QSFTFOUBUJPO ‣BQQMJDBUJPO ‣EPNBJO ‣EBUB
'PMEFS4USVDUVSF 5ZQF%PBNJO74'FBUVSF741BDLBHF 1BDLBHFTCZ'FBUVSF ֤'FBUVSFΛผ్ͷύοέʔδͰཧͯ͠Ϟδϡ ʔϧԽ ϝϦοτ ಠཱతʹ֤ػೳΛ։ൃɾςετ͕Ͱ͖Δ ͝ͱʹׂΛ୲ͯ͠։ൃ͢Δ͜ͱ͕༰қ
σϝϦοτ ґଘతͳؔΛ͞Βʹෳࡶʹ͢ΔՄೳੑ͕͋Δ ઃఆͱॳظߏ͕ෳࡶͰ͋Δ Ϧιʔεཧ͕ෳࡶʹͳΓɺॏෳͨ͠Ϧιʔε ͕ൃੜ͢ΔՄೳੑ͕͋Δ ‣MJC ‣TSD ‣QSFTFOUBUJPO ‣BQQMJDBUJPO ‣EPNBJO ‣EBUB ‣QBDLBHFT ‣GFBUVSF ‣MJC ‣TSD ‣GFBUVSF ‣MJC ‣TSD
ग़લؗΞϓϦͷϑΥϧμߏʹ͍ͭͯ
"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
$POUFOUT ग़લؗͱ 'PMEFS4USVDUVSF 5ZQF%PBNJOWT'FBUVSFWT1BDLBHF "TTFU.BOBHFNFOU fl VUUFS@HFO 4UBUF.BOBHFNFOU
#-P$ ·ͱΊ
ଞϓϩμΫτΛݟͯΈΑ͏👀
"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ϛε
"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ϛε
"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ϛε
ग़લؗΞϓϦʹ࣮ફ✂📋
"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 ^
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$POUFYUFYUFOTJPOΛ௨͠"TTFU4IPSUDVU༻த 5ZQPHSBQIZ $PMPS 4UZMF 5IFNFͳͲ͕͢ͰʹಉҰͷํ๏Λ༻ DPOUFYU͕ଘࡏ͢Δ7JFXͰͷΈΞΫηεՄೳ 0OFNPSFUIJOHʜ 50#&
$POUFOUT ग़લؗͱ 'PMEFS4USVDUVSF 5ZQF%PBNJOWT'FBUVSFWT1BDLBHF "TTFU.BOBHFNFOU fl VUUFS@HFO 4UBUF.BOBHFNFOU
#-P$ ·ͱΊ
ग़લؗঢ়ଶཧ #-P$Λ༻த "QQFOEJY'MVUUFSਓؾΞʔΩςΫνϟϥΠϒϥϦछͷൺֱੳ(FU9WT#-P$WT1SPWJEFS
4UBUF.BOBHFNFOU #-P$ DVCJU.VMUJDMBTTXJUI'SFF[FE #-P$ 4UBUF$MBTT 4UBUF$MBTT 4UBUF$MBTT 4UBUF$MBTT 4UBUF$MTTT 8JUI&OVNTUBUVT
'SFF[FE 4UBUF$MBTT 4JOHMF$MBTT .VMUJ$MBTT 'SFF[FE 4UBUF$MBTT
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ՃʹΑΔύοέʔδґଘੑ͕Ͱ ͖Δ
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ՃʹΑΔύοέʔδґଘੑ͕Ͱ ͖Δ
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ՃʹΑΔύοέʔδґଘੑ͕Ͱ ͖Δ
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ՃʹΑΔύοέʔδґଘੑ͕Ͱ ͖Δ
None
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ՃʹΑΔύοέʔδґଘੑ͕Ͱ ͖Δ
$POUFOUT ग़લؗͷ͝հ 'PMEFS4USVDUVSF 5ZQF%PBNJOWT'FBUVSFWT1BDLBHF "TTFU.BOBHFNFOU fl VUUFS@HFO 4UBUF.BOBHFNFOU
#-P$ ·ͱΊ
·ͱΊ w ग़લؗϑʔυੜ׆ඞधୡαʔϏεͰ͋ΓɺՃໍళɺυϥΠόʔɺϚωʔδϟʔɺϢ ʔβʔΞϓϦͱͯ͠ӡӦ͞ΕͯΔσϦόϦʔαʔϏεɻ w ग़લؗΞϓϦͷϑΥϧμߏɺେ͖͘'FBUVSFج४ʹ͔Ε͓ͯΓ υϝΠϯผʹࡉԽ͞Ε͍ͯΔɻ w *NBHF-PUUJF'POUBTTFU fl
VUUFS@HFOͰཧ͍ͯ͠Δɻ w ঢ়ଶཧͷͨΊ#MPDύοέʔδΛ༻͓ͯ͠Γɺ #MPDύλʔϯ 4UBUF.VMUJDMBTT 'SFF[FEܗଶͰ͋Δɻ
5)"/,:06
"QQFOEJY'MVUUFSਓؾΞʔΩςΫνϟϥΠϒϥϦछͷൺֱੳ(FU9WT#-P$WT1SPWJEFS IUUQTFOHJOFFSJOHMJOFDPSQDPNLPCMPH fl VUUFSBSDIJUFDUVSFHFUYCMPDQSPWJEFS LPSFBO "QQFOEJY
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
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