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

Getting_Started_with_iOS_Architecture_What_is_a...

novr
February 18, 2022

 Getting_Started_with_iOS_Architecture_What_is_a_model_.pdf

# iOSアプリ アーキテクチャ入門 Modelについて
技育CAMP 2021 2022/2/17

## self.description

## 今日の話

- モバイルアプリのアーキテクチャ
- Modelって何?
- Modelがいない
- Modelとは

## モバイルアプリのアーキテクチャ

- MVC
- MVP
- MVVM
- Flux
- Clean Architecture VIPER
- The Composable Architecture

## Modelって何?

- GUIアーキテクチャ
- システムアーキテクチャ

## Modelがいない

## Modelとは

- ライフサイクルが長い
- 通知で更新を伝える

## 実践 Model

## 参考資料

- [iOSアプリ設計パターン入門](https://peaks.cc/books/iOS_architecture)
- [アプリケーション・アーキテクチャ・ガイド2.0解説](https://atmarkit.itmedia.co.jp/fdotnet/apparcguide/index/)

novr

February 18, 2022
Tweet

More Decks by novr

Other Decks in Programming

Transcript

  1. ϞόΠϧΞϓϦͷΞʔΩςΫνϟ w .7$ w .71 w .77. w 'MVY w

    $MFBO"SDIJUFDUVSF w 7*1&3 w 5IF$PNQPTBCMF"SDIJUFDUVSF 5
  2. ϞόΠϧΞϓϦͷΞʔΩςΫνϟ w .7$ w .71 w .77. w 'MVY w

    $MFBO"SDIJUFDUVSF w 7*1&3 w 5IF$PNQPTBCMF"SDIJUFDUVSF 6
  3. ϞόΠϧΞϓϦͷΞʔΩςΫνϟ w .7$ w .71 w .77. w 'MVY w

    $MFBO"SDIJUFDUVSF w 7*1&3 w 5IF$PNQPTBCMF"SDIJUFDUVSF 7
  4. ϞόΠϧΞϓϦͷΞʔΩςΫνϟ w .7$ w .71 w .77. w 'MVY w

    $MFBO"SDIJUFDUVSF w 7*1&3 w 5IF$PNQPTBCMF"SDIJUFDUVSF 8
  5. ϞόΠϧΞϓϦͷΞʔΩςΫνϟ w .7$ w .71 w .77. w 'MVY w

    $MFBO"SDIJUFDUVSF w 7*1&3 w 5IF$PNQPTBCMF"SDIJUFDUVSF 9
  6. ϞόΠϧΞϓϦͷΞʔΩςΫνϟ w .7$ w .71 w .77. w 'MVY w

    $MFBO"SDIJUFDUVSF w 7*1&3 w 5IF$PNQPTBCMF"SDIJUFDUVSF 10
  7. ϞόΠϧΞϓϦͷΞʔΩςΫνϟ w .7$ w .71 w .77. w 'MVY w

    $MFBO"SDIJUFDUVSF w 7*1&3 w 5IF$PNQPTBCMF"SDIJUFDUVSF 11
  8. ϞόΠϧΞϓϦͷΞʔΩςΫνϟ w .7$ w .71 w .77. w 'MVY w

    $MFBO"SDIJUFDUVSF w 7*1&3 w 5IF$PNQPTBCMF"SDIJUFDUVSF 12
  9. .PEFMͬͯԿʁ w .7$ w .71 w .77. w 'MVY w

    $MFBO"SDIJUFDUVSF w 7*1&3 w 5IF$PNQPTBCMF"SDIJUFDUVSF 14
  10. .PEFMͬͯԿʁ w .7$ w .71 w .77. w 'MVY w

    $MFBO"SDIJUFDUVSF w 7*1&3 w 5IF$PNQPTBCMF"SDIJUFDUVSF 15
  11. .PEFMͬͯԿʁ w .7$ w .71 w .77. w 'MVY w

    $MFBO"SDIJUFDUVSF w 7*1&3 w 5IF$PNQPTBCMF"SDIJUFDUVSF 16
  12. .PEFMͬͯԿʁ w .7$ w .71 w .77. w 'MVY㲈.7$ w

    $MFBO"SDIJUFDUVSF w 7*1&3 w 5IF$PNQPTBCMF"SDIJUFDUVSF 17
  13. .PEFMͬͯԿʁ w .7$ w .71 w .77. w 'MVY w

    $MFBO"SDIJUFDUVSF w 7*1&3 w 5IF$PNQPTBCMF"SDIJUFDUVSF㲈'MVY 18
  14. .PEFMͬͯԿʁ w .7$ w .71 w .77. w 'MVY w

    $MFBO"SDIJUFDUVSF w 7*1&3$MFBO"SDIJUFDUVSF .17 3PVUFS w 5IF$PNQPTBCMF"SDIJUFDUVSF 19
  15. .PEFMͬͯԿʁ w .7$ w .71 w .77. w 'MVY w

    $MFBO"SDIJUFDUVSF㱬7*1&3 w 7*1&3 w 5IF$PNQPTBCMF"SDIJUFDUVSF 20
  16. .PEFMͬͯԿʁ w .7$ w .71 w .77. w 'MVY 4UPSF

     w $MFBO"SDIJUFDUVSF 6TF$BTF  w 7*1&3 *OUFSBDUPS  w 5IF$PNQPTBCMF"SDIJUFDUVSF 4UPSF 21
  17. .PEFMͬͯԿʁ w .7$ w .71 w .77. w 'MVY 4UPSF

     w $MFBO"SDIJUFDUVSF 6TF$BTF  w 7*1&3 *OUFSBDUPS  w 5IF$PNQPTBCMF"SDIJUFDUVSF 4UPSF 22
  18. .PEFMͬͯԿʁ w (6*ΞʔΩςΫνϟ w .7$ w .71 w .77. w

    'MVY w 5IF$PNQPTBCMF"SDIJUFDUVSF 23 w γεςϜΞʔΩςΫνϟ w ϨΠϠʔυΞʔΩςΫνϟ w $MFBO"SDIJUFDUVSF w ෳ߹ w 7*1&3
  19. .PEFMͬͯԿʁ w (6*ΞʔΩςΫνϟ w .7$ w .71 w .77. w

    'MVY w 5IF$PNQPTBCMF"SDIJUFDUVSF 26 w γεςϜΞʔΩςΫνϟ w ϨΠϠʔυΞʔΩςΫνϟ w $MFBO"SDIJUFDUVSF w ෳ߹ w 7*1&3
  20. w γεςϜΛͲͷΑ͏ʹ෼͚Δ べ ͖͔ɺγεςϜશମΛ ど ͷΑ͏ʹ઀߹͢ べ ͖͔ ϨΠϠʔ ド

    ΞʔΩςΫνϟ 27 ϓϨθϯςʔγϣϯ૚ υϝΠϯ૚ σʔλ૚ 7JFX$POUSPMMFS 7JFX 7JFX .PEFM &OUJUZ &OUJUZ &OUJUZ &OUJUZ &OUJUZ &OUJUZ .PEFM "1* "1* -PDBMF4UPSBHF
  21. .PEFM͍ͳ͍ 34 ϓϨθϯςʔγϣϯ૚ υϝΠϯ૚ σʔλ૚ 7JFX$POUSPMMFS 7JFX 7JFX .PEFM &OUJUZ

    &OUJUZ &OUJUZ "1* -PDBUFS ॴ༗ ੜ੒ɾॴ༗ ߋ৽ཁٻ $BMMCBDL ௨஌
  22. .PEFM͍ͳ͍ 35 ϓϨθϯςʔγϣϯ૚ υϝΠϯ૚ σʔλ૚ 7JFX$POUSPMMFS 7JFX 7JFX .PEFM &OUJUZ

    &OUJUZ &OUJUZ "1* ॴ༗ ੜ੒ɾॴ༗ ߋ৽ཁٻ $BMMCBDL $BMMCBDL
  23. .PEFMͱ͸ w ϥΠϑαΠΫϧ͕௕͍ w 7JFX΍7JFX$POUSPMMFSͱ͸ҧ͍ɺجຊͳ͘ͳΒͳ͍ w 4JOHMFUPOత͕ͩɺ4JOHMFUPOʹ͢Δͱ5FTU%PVCMF͠ʹ͍͘ w %*$POUBJOFSͳͲͰอ࣋͢Δ w

    ௨஌Ͱߋ৽Λ఻͑Δ w ɿଟͷؔ܎ w ݺΜͰ΋དྷͳ͍ࣄ͕͋Δɺݺ͹ͳͯ͘΋དྷΔࣄ͕͋Δ w 0CTFSWBCMFɺ/PUJ fi DBUJPO$FOUFS΍$PNCJOFͳͲ 37
  24. .PEFMͱ͸ 38 ϓϨθϯςʔγϣϯ૚ υϝΠϯ૚ σʔλ૚ 7JFX$POUSPMMFS 7JFX 7JFX .PEFM &OUJUZ

    &OUJUZ &OUJUZ "1* -PDBUFS ॴ༗ ੜ੒ɾॴ༗ ߋ৽ཁٻ $BMMCBDL ௨஌
  25. .PEFMͱ͸ 39 ϓϨθϯςʔγϣϯ૚ υϝΠϯ૚ σʔλ૚ 7JFX$POUSPMMFS 7JFX 7JFX .PEFM &OUJUZ

    &OUJUZ &OUJUZ "1* -PDBUFS ॴ༗ ੜ੒ɾॴ༗ ߋ৽ཁٻ $BMMCBDL ௨஌ ղআ͢Δ
  26. .PEFMͱ͸ 40 ϓϨθϯςʔγϣϯ૚ υϝΠϯ૚ σʔλ૚ 7JFX$POUSPMMFS 7JFX 7JFX .PEFM &OUJUZ

    &OUJUZ &OUJUZ "1* -PDBUFS ॴ༗ ੜ੒ɾॴ༗ ߋ৽ཁٻ $BMMCBDL ௨஌ ঢ়ଶʹΑͬͯ ཁٻΛແࢹ
  27. .PEFMͱ͸ 41 ϓϨθϯςʔγϣϯ૚ υϝΠϯ૚ σʔλ૚ 7JFX$POUSPMMFS .PEFM &OUJUZ &OUJUZ &OUJUZ

    "1* -PDBUFS ੜ੒ɾॴ༗ 7JFX$POUSPMMFS ௨஌ ผͷը໘΁΋ ௨஌Ͱ͖Δ
  28. .PEFMͱ͸ w .PEFM͕ͳ͍ͱ w 7JFX$POUSPMMFS͔Β"1*Λݺͼग़͠$BMMCBDLͰड͚औΔ w $BMMCBDL͔Βฦͬͨ࣌ʹը໘͕͍ͳ͍ࣄ͕͋Δ w #VH΍ಈ࡞͕ॏ͘ͳΔݪҼ w

    ෳ਺ͷ7JFX$POUSPMMFSʹมߋΛ఻͑Δͷ͕ࠔ೉ w ਌ˠࢠˠଙͳ7JFX$POUSPMMFSͷߏ੒ͰଙͰͷมߋΛ਌ʹ఻͑Δʹ͸ʁ w ଙ΍ࢠ্͕Ґͷ7JFX$POUSPMMFSΛ஌Δີ݁߹ʹͳͬͯ͠·͏ 42
  29. ࣮ફ.PEFM w ඞཁͳৼΔ෣͍ w ೖྗจࣈྻͰݕࡧ 
 GVODTFBSDI UFYU4USJOH  w

    ݕࡧ݁Ռͷ௨஌ 
 !1VCMJTIFEWBSMJTU<3FQPTJUPSZ4VNNBSZ> 46
  30. ࣮ફ.PEFM w ඞཁͳৼΔ෣͍ w ೖྗจࣈྻͰݕࡧ 
 GVODTFBSDI UFYU4USJOH  w

    ݕࡧ݁Ռͷ௨஌ 
 !1VCMJTIFEWBSMJTU<3FQPTJUPSZ4VNNBSZ> w FUD 47
  31. ࣮ફ.PEFM w ඞཁͳৼΔ෣͍ w ೖྗจࣈྻͰݕࡧ 
 GVODTFBSDI UFYU4USJOH  w

    ݕࡧ݁Ռͷ௨஌ 
 !1VCMJTIFEWBSMJTU<3FQPTJUPSZ4VNNBSZ> w FUD w ϩʔσΟϯάঢ়ଶͷ௨஌ w Τϥʔͷ௨஌ 48
  32. ࣮ફ.PEFM w ྫ͑͹ w ͓ؾʹೖΓػೳ w ৄࡉͱϦετͰ͓ؾʹೖΓঢ়ଶΛڞ༗ w ࠷ۙݟͨػೳ w

    ݕࡧͱ͸ผͷϦετΛอଘ w ͞Βʹ͓ؾʹೖΓͷঢ়ଶ΋ڞ༗ʹͳͬͨΒʁ w ࠷ॳʹ࡞Γ͗ͣ͢ɺ.PEFM͸ঃʑʹൃల͍ͤͯ͘͞ɻςετίʔυ΋๨Εͣʹʂ 49