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
Bloc PatternにおけるBloc分割の方針と実践例 / Division plan a...
Search
yamarkz
November 07, 2019
Programming
7
28k
Bloc PatternにおけるBloc分割の方針と実践例 / Division plan and practical example in bloc pattern
Flutter Meetup Tokyo #12
yamarkz
November 07, 2019
Tweet
Share
More Decks by yamarkz
See All by yamarkz
ネットスーパーの買い物体験を支える工夫と決済機能実現の過程
yamarkz
0
1.9k
Flutter/Dartと共に歩んだスタートアップの開発を振り返って得た、成功と失敗の教訓
yamarkz
5
3.2k
Smart Contract Design Pattern
yamarkz
4
2.9k
トークンの概要と開発観点から見たICO / Token and TokenSale
yamarkz
5
61k
Zilliqa Next Gen High Throughput Blockchain Platform
yamarkz
0
2.3k
詳解 Ethereum Transaction / detail ethereum transaction
yamarkz
5
2.8k
Proof of Stake Casper
yamarkz
8
13k
Blockchain R&D Introduction
yamarkz
2
51k
Bitcoin Improvement Flow
yamarkz
5
4.6k
Other Decks in Programming
See All in Programming
CSC509 Lecture 01
javiergs
PRO
1
430
Conquering Massive Traffic Spikes in Ruby Applications with Pitchfork
riseshia
0
150
エンジニアとして高みを目指す、 利益を生み出す設計の考え方 / design-for-profit
minodriven
23
12k
Web技術を最大限活用してRAW画像を現像する / Developing RAW Images on the Web
ssssota
2
1.2k
なぜGoのジェネリクスはこの形なのか? Featherweight Goが明かす設計の核心
ryotaros
7
1k
『毎日の移動』を支えるGoバックエンド内製開発
yutautsugi
2
180
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
180
CSC509 Lecture 04
javiergs
PRO
0
290
CSC305 Lecture 04
javiergs
PRO
0
250
開発生産性を上げるための生成AI活用術
starfish719
1
170
そのpreloadは必要?見過ごされたpreloadが技術的負債として爆発した日
mugitti9
2
3k
止められない医療アプリ、そっと Swift 6 へ
medley
1
120
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
368
20k
Context Engineering - Making Every Token Count
addyosmani
5
180
Become a Pro
speakerdeck
PRO
29
5.5k
GitHub's CSS Performance
jonrohan
1032
460k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
Why Our Code Smells
bkeepers
PRO
339
57k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
How GitHub (no longer) Works
holman
315
140k
Building Adaptive Systems
keathley
43
2.8k
The Invisible Side of Design
smashingmag
301
51k
Practical Orchestrator
shlominoach
190
11k
Transcript
,B[VLJ:BNBHVDIJZBNBSL[ 'MVUUFS.FFUVQ #MPD1BUUFSOʹ͓͚Δ#MPDׂͷํͱ࣮ફྫ (MPCBM#MPD-PDBM#MPD$PNQPOFOU#MPD5FNQMBUF#MPD
!ZBNBSL[,B[VLJ:BNBHVDIJ 4FSWFS.PCJMF"QQ&OHJOFFS!)PVTNBSU JOD
͢͜ͱ 'MVUUFSͰ։ൃ͢Δʹ͋ͨͬͯར༻ͨ͠#MPD1BUUFSOʹ͓͚Δɺ ࣮ύλʔϯͷಛͱྨɺͦͯ͠#MPDͷׂͰܾΊͨํΛհ͠·͢
ͷࡐΧϧ ɾ݄த०ʹ'MVUUFSͷΞϓϦΛϦϦʔε ϦϓϨΠε ɾ։ൃظؒि ɾ#MPD1BUUFSOͱ3Y%BSUΛ࠾༻ ɾ࡞ΒΕͨ#MPDͷݸ ɾϦϓϨΠεͷOPUFʹॻ͖·ͨ͠
ɾ݄த०ʹ'MVUUFSͷΞϓϦΛϦϦʔε ϦϓϨΠε ɾ։ൃظؒि ɾ#MPD1BUUFSOͱ3Y%BSUΛ࠾༻ ɾ࡞ΒΕͨ#MPDͷݸ ɾϦϓϨΠεͷOPUFʹॻ͖·ͨ͠ ͷࡐΧϧ ɾ࡞ΒΕͨ#MPDͷݸ ଟ͍ʁগͳ͍
͜ͷݸͷΈ͚ͱಛ͕ࠓճͷͷओͰ͢
#MPD1BUUFSOΛద༻ͨ͜͠ͱͰݟ͑ͨͭͷׂํ
ΞϓϦέʔγϣϯશମʹؔΘΔॲཧΛͭʹ·ͱΊΔ εΫϦʔϯ͚ͩͰར༻͢ΔॲཧΛͭʹ·ͱΊΔ ίϯϙʔωϯτͰར༻͢ΔॲཧΛͭʹ·ͱΊΔ ڞ௨Ͱར༻͢ΔॲཧΛͭʹ·ͱΊΔ #MPD1BUUFSOΛద༻ͨ͜͠ͱͰݟ͑ͨͭͷׂํ
ΞϓϦέʔγϣϯશମʹؔΘΔॲཧΛͭʹ·ͱΊΔ εΫϦʔϯ͚ͩͰར༻͢ΔॲཧΛͭʹ·ͱΊΔ ίϯϙʔωϯτͰར༻͢ΔॲཧΛͭʹ·ͱΊΔ ڞ௨Ͱར༻͢ΔॲཧΛͭʹ·ͱΊΔ #MPD1BUUFSOΛద༻ͨ͜͠ͱͰݟ͑ͨͭͷׂํ ΞϓϦέʔγϣϯશମʹ εΫϦʔϯ͚ͩͰ ίϯϙʔωϯτͰ ڞ௨Ͱ ํͷҧ͍είʔϓͷ͞
ΞϓϦέʔγϣϯશମʹؔΘΔॲཧΛͭʹ·ͱΊΔ εΫϦʔϯ͚ͩͰར༻͢ΔॲཧΛͭʹ·ͱΊΔ ίϯϙʔωϯτͰར༻͢ΔॲཧΛͭʹ·ͱΊΔ ڞ௨Ͱར༻͢ΔॲཧΛͭʹ·ͱΊΔ #MPD1BUUFSOΛద༻ͨ͜͠ͱͰݟ͑ͨͭͷׂํ ͳͥɺ͜ͷΈ͚͕ྑ͍ͷ͔ʁ
ͳͥɺ͜ͷΈ͚͕ྑ͍ͷ͔ʁ ͭͷओͳཧ༝ ΞϓϦɺεΫϦʔϯɺίϯϙʔωϯτͱ͍͏6*ߏΛ࣠ʹॲཧ͕·ͱ·ΔͨΊɺ ߏ͕୯७ͰΘ͔Γ͘͢ͳΔ ϑΝΠϧ૿͍͕͑͢ɺϑΝΠϧ͋ͨΓͷίʔυྔݮΔ είʔϓͷൣғ͕໌֬ʹఆ·ͬͨ#MPDΛ࡞ΔͨΊɺ#MPDࣗମ͕ૄ݁߹ʹͳΔɻ ݁Ռͱͯ͠ɺอकੑ͕ߴ͘ͳΓɺಡΈ͍͢ɺཧղ͍͢͠ɺมߋ͍͢͠ͱ͍ͬ ͨঢ়گʹͳΔ
#MPDͷ࣮ࣗମ͕ߏԽ͞ΕΔ͜ͱʹΑΓɺอकੑ্͕͕Δ
(MPCBM#MPD-PDBM#MPD$PNQPOFOU#MPD5FNQMBUF#MPD ׂํͷఆٛʹΑͬͯੜ·Εͨɺ#MPDͷྨ
(MPCBM#MPD ɾΞϓϦ୯ҐͰɺ͍ൣғʹؔΘΔॲཧΛ·ͱΊΔ FYೝূॲཧ ΠϕϯτετϦʔϜΛଞ#MPDʹ͢Δॲཧ -PDBM#MPD ɾεΫϦʔϯ୯ҐͰɺݶΒΕͨڱ͍ൣғʹؔΘΔॲཧΛ·ͱΊΔ FYඳը͢Δσʔλͷऔಘॲཧ ϦϩʔυͳͲͷը໘୯ҐͰߦΘΕΔॲཧ $PNQPOFOU#MPD
ɾίϯϙʔωϯτ୯ҐͰɺݶΒΕͨ෦ʹؔΘΔॲཧΛ·ͱΊΔ FYϢʔβʔΞΫγϣϯ͕ൃੜ͢Δॲཧ ͓ؾʹೖΓ আ 5FNQMBUF#MPD ɾڞ௨ͷॲཧ୯ҐͰɺݶΒΕͨڱ͍ൣғʹؔΘΔॲཧΛ·ͱΊΔ FYೝূॲཧ ྨࣅը໘ͷྨࣅॲཧ ׂํͷఆٛʹΑͬͯੜ·Εͨɺ#MPDͷྨ
(MPCBM#MPD ɾΞϓϦ୯ҐͰɺ͍ൣғʹؔΘΔॲཧΛ·ͱΊΔ FYೝূॲཧ ΠϕϯτετϦʔϜΛଞ#MPDʹ͢Δॲཧ -PDBM#MPD ɾεΫϦʔϯ୯ҐͰɺݶΒΕͨڱ͍ൣғʹؔΘΔॲཧΛ·ͱΊΔ FYඳը͢Δσʔλͷऔಘॲཧ ϦϩʔυͳͲͷը໘୯ҐͰߦΘΕΔॲཧ $PNQPOFOU#MPD
ɾίϯϙʔωϯτ୯ҐͰɺݶΒΕͨ෦ʹؔΘΔॲཧΛ·ͱΊΔ FYϢʔβʔΞΫγϣϯ͕ൃੜ͢Δॲཧ ͓ؾʹೖΓ আ 5FNQMBUF#MPD ɾڞ௨ͷॲཧ୯ҐͰɺݶΒΕͨڱ͍ൣғʹؔΘΔॲཧΛ·ͱΊΔ FYೝূॲཧ ྨࣅը໘ͷྨࣅॲཧ ׂํͷఆٛʹΑͬͯੜ·Εͨɺ#MPDͷྨ ΧϧΞϓϦͰͷ#MPDΛྨ͝ͱʹৼΓ͚Δͱ
(MPCBM#MPD ΞϓϦ୯ҐͰ͍ൣғʹؔΘΔॲཧΛ·ͱΊΔ "QQ 4DSFFO 4DSFFO 4DSFFO 4DSFFO #MPD
͓ؾʹೖΓը໘ ҟͳΔը໘ͷڞ௨ͷॲཧ πʔϧνοϓ Λɺ ಉҰͷ(MPCBM#MPDΛࢀর੍ͯ͠ޚ͍ͯ͠Δ (MPCBM#MPD ϗʔϜը໘ πʔϧνοϓͷදࣔ݅Λ੍ޚ͢Δ #MPDΛڞ௨Ͱࢀর
"QQ 4DSFFO 4DSFFO 4DSFFO 4DSFFO #MPD εΫϦʔϯ୯ҐͰݶΒΕͨڱ͍ൣғʹؔΘΔॲཧΛ·ͱΊΔ -PDBM#MPD
ϩάΠϯը໘ ɾαΠϯΠϯॲཧ ɾϩάΠϯॲཧ ɾ(PPHMFϩάΠϯॲཧ ɾ'BDFCPPLϩάΠϯॲཧ ɾϝʔϧΞυϨεͷόϦσʔτॲཧ ɾύεϫʔυͷόϦσʔτॲཧ ɾύεϫʔυͷද੍ࣔޚॲཧ ಛఆͷը໘ͷΈͰར༻͢Δॲཧ ϩάΠϯϩάΞτ
Λ੍ޚ͢Δ -PDBM#MPD
$PNQPOFOU#MPD ίϯϙʔωϯτ୯ҐͰ෦తʹؔΘΔॲཧΛ·ͱΊΔ 4DSFFO $PNQPOFOU $PNQPOFOU $PNQPOFOU $PNQPOFOU #MPD
͓ؾʹೖΓը໘ ϗʔϜը໘ $PNQPOFOU#MPD ҰݟҟͳΔ6*ߏ Χʔυܕ ϦετΞΠςϜܕ ʹݟ͑Δ
$PNQPOFOU#MPD $POE$BSE#MPD Λ࠶ར༻͍ͯ͠Δ ͔͠͠ɺഎޙͰར༻͍ͯ͠Δ#MPDಉҰͷͷ ڞ௨ॲཧͷ࠶ར༻ ϗʔϜը໘ ͓ؾʹೖΓը໘
5FNQMBUF#MPD 4DSFFO 5NQ #MPD #MPD #MPD 4DSFFO 4DSFFO ڞ௨ར༻͢Δॲཧ୯ҐͰڱ͍ൣғʹؔΘΔॲཧΛ·ͱΊΔ ܧঝ֦ͯ͠ு
ϓϨʔϯʹར༻
8FC7JFXͱͯ͠ͷجຊػೳಉ͡ͳͷͰɺಉҰͷ#MPDΛར༻͢Δ͕ɺ ֦ுػೳ͕ཉ͍͠߹ʹɺ#MPDࣗମΛܧঝͯ͠࠶ར༻ͭͭ͠ػೳՃ͢Δ #MPDΛܧঝ͠ɺ ػೳ֦ு͍ͯ͠Δ 1MBJOͳ#MPDΛ ͦͷ··ར༻͍ͯ͠Δ 5FNQMBUF#MPD ࣋ͪࠐΈը໘ αʔϏε֓ཁը໘
ΞϓϦέʔγϣϯશମʹؔΘΔॲཧΛͭʹ·ͱΊΔ εΫϦʔϯ͚ͩͰར༻͢ΔॲཧΛͭʹ·ͱΊΔ ίϯϙʔωϯτͰར༻͢ΔॲཧΛͭʹ·ͱΊΔ ڞ௨ར༻͢ΔॲཧΛͭʹ·ͱΊΔ #MPD1BUUFSOΛద༻ͨ͜͠ͱͰݟ͑ͨͭͷׂํ
l࡞ΒΕͨ#MPDͷݸzଟ͍ গͳ͍ʁ
l࡞ΒΕͨ#MPDͷݸzଟ͍ গͳ͍ʁ ݸਓతʹɺ͜Μͳͷ͔ͳͱ͍͏ײ͡ɻ ࠓͷͱ͜Ζ։ൃӡ༻తʹಛʹෆ߹Λײͯ͡ͳ͍Ͱ͕͢ɺ ͔ͨ͠͠Βকདྷతʹɺ՝ʹײ͡Δ͜ͱ͕ग़Δ͔ʜ
·ͱΊ ɾҰॏʹ#MPD1BUUFSOͱݴ͑Ͳɺѻ͍ํ༷ʑଘࡏ͢Δ ɾ(MPCBM -PDBM $PNQPOFOU 5FNQMBUFͦΕͧΕͷ͍ํΛݟۃΊͯѻ͏ ɾείʔϓͷ໌֬ԽɺߏԽʹΑΓɺอकੑͷߴ͍ΞϓϦέʔγϣϯ։ൃ͕ՄೳʹͳΔ #MPD1BUUFSOࣗମͷద༻ΛԣͷߏԽ 6*ͱϩδοΫͷ ͩͱ͢ΔͳΒɺ
#MPDͷ࣮ύλʔϯΛద༻͢Δ͜ͱɺॎͷߏԽ είʔϓʹΑΔϩδοΫ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ