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

Getting_Started_with_iOS_Architecture_What_is_a_model_.pdf

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. J04ΞϓϦΞʔΩςΫνϟೖ໳
    .PEFMʹ͍ͭͯ
    1
    ٕҭ$".1

    View Slide

  2. TFMGEFTDSJQUJPO
    OBNFl/PCVIJTB,PNJZBz
    OJDLOBNFl͜Έ΍Μ
    KPClJ045FDIMFBEz
    ▿ BDDPVOU
    (JU)VCl!OPWSz
    5XJUUFSl!OPWSz
    2

    View Slide

  3. ࠓ೔ͷ࿩
    w ϞόΠϧΞϓϦͷΞʔΩςΫνϟ
    w .PEFMͬͯԿʁ
    w .PEFM͕͍ͳ͍
    w .PEFMͱ͸
    3

    View Slide

  4. ϞόΠϧΞϓϦͷΞʔΩςΫνϟ
    4

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  13. .PEFMͬͯԿʁ
    13

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. .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

    View Slide

  22. .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

    View Slide

  23. .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

    View Slide

  24. (6*ΞʔΩςΫνϟ
    w 1SFTFOUBUJPO%PNBJO4FQBSBUJPO
    w ϓϨθϯςʔγϣϯͱ
    w ϓϨθϯςʔγϣϯҎ֎υϝΠϯΛ෼͚Δ
    24

    View Slide

  25. (6*ΞʔΩςΫνϟ
    w 1SFTFOUBUJPO%PNBJO4FQBSBUJPO
    w ϓϨθϯςʔγϣϯ
    w υϝΠϯ.PEFM
    25

    View Slide

  26. .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

    View Slide

  27. w γεςϜΛͲͷΑ͏ʹ෼͚Δ
    べ
    ͖͔ɺγεςϜશମΛ
    ど
    ͷΑ͏ʹ઀߹͢
    べ
    ͖͔
    ϨΠϠʔ
    ド
    ΞʔΩςΫνϟ
    27
    ϓϨθϯςʔγϣϯ૚
    υϝΠϯ૚
    σʔλ૚
    7JFX$POUSPMMFS
    7JFX
    7JFX
    .PEFM
    &OUJUZ
    &OUJUZ
    &OUJUZ
    &OUJUZ
    &OUJUZ
    &OUJUZ
    .PEFM
    "1* "1*
    -PDBMF4UPSBHF

    View Slide

  28. .PEFM͕͍ͳ͍
    28

    View Slide

  29. .PEFM͕͍ͳ͍
    29
    ϓϨθϯςʔγϣϯ૚
    υϝΠϯ૚
    σʔλ૚
    7JFX$POUSPMMFS
    7JFX
    7JFX
    .PEFM
    &OUJUZ
    &OUJUZ
    &OUJUZ
    -PDBMF4UPSBHF "1*

    View Slide

  30. .PEFM͕͍ͳ͍
    30
    ϓϨθϯςʔγϣϯ૚
    υϝΠϯ૚
    σʔλ૚
    7JFX$POUSPMMFS
    7JFX
    7JFX
    &OUJUZ
    &OUJUZ
    &OUJUZ
    σʔλॲཧ
    -PDBMF4UPSBHF "1*

    View Slide

  31. .PEFM͕͍ͳ͍
    31
    ϓϨθϯςʔγϣϯ૚
    υϝΠϯ૚
    σʔλ૚
    7JFX$POUSPMMFS
    7JFX
    7JFX
    &OUJUZ
    &OUJUZ
    &OUJUZ
    $BMMCBDL
    ੜ੒ɾॴ༗
    σʔλॲཧ
    "1*

    View Slide

  32. .PEFM͕͍ͳ͍
    32
    ϓϨθϯςʔγϣϯ૚
    υϝΠϯ૚
    σʔλ૚
    7JFX$POUSPMMFS
    ͍ͳ͍
    7JFX$POUSPMMFS
    ભҠ
    "1*

    View Slide

  33. .PEFM͕͍ͳ͍
    33
    ϓϨθϯςʔγϣϯ૚
    υϝΠϯ૚
    σʔλ૚
    7JFX$POUSPMMFS
    "1*
    $BMMCBDL
    "1*
    ࿈ଧ
    "1*
    $BMMCBDL
    $BMMCBDL

    View Slide

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

    View Slide

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

    View Slide

  36. .PEFMͱ͸
    36

    View Slide

  37. .PEFMͱ͸
    w ϥΠϑαΠΫϧ͕௕͍
    w 7JFX΍7JFX$POUSPMMFSͱ͸ҧ͍ɺجຊͳ͘ͳΒͳ͍
    w 4JOHMFUPOత͕ͩɺ4JOHMFUPOʹ͢Δͱ5FTU%PVCMF͠ʹ͍͘
    w %*$POUBJOFSͳͲͰอ࣋͢Δ
    w ௨஌Ͱߋ৽Λ఻͑Δ
    w ɿଟͷؔ܎
    w ݺΜͰ΋དྷͳ͍ࣄ͕͋Δɺݺ͹ͳͯ͘΋དྷΔࣄ͕͋Δ
    w 0CTFSWBCMFɺ/PUJ
    fi
    DBUJPO$FOUFS΍$PNCJOFͳͲ
    37

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  41. .PEFMͱ͸
    41
    ϓϨθϯςʔγϣϯ૚
    υϝΠϯ૚
    σʔλ૚
    7JFX$POUSPMMFS
    .PEFM
    &OUJUZ
    &OUJUZ
    &OUJUZ
    "1*
    -PDBUFS
    ੜ੒ɾॴ༗
    7JFX$POUSPMMFS
    ௨஌
    ผͷը໘΁΋
    ௨஌Ͱ͖Δ

    View Slide

  42. .PEFMͱ͸
    w .PEFM͕ͳ͍ͱ
    w 7JFX$POUSPMMFS͔Β"1*Λݺͼग़͠$BMMCBDLͰड͚औΔ
    w $BMMCBDL͔Βฦͬͨ࣌ʹը໘͕͍ͳ͍ࣄ͕͋Δ
    w #VH΍ಈ࡞͕ॏ͘ͳΔݪҼ
    w ෳ਺ͷ7JFX$POUSPMMFSʹมߋΛ఻͑Δͷ͕ࠔ೉
    w ਌ˠࢠˠଙͳ7JFX$POUSPMMFSͷߏ੒ͰଙͰͷมߋΛ਌ʹ఻͑Δʹ͸ʁ
    w ଙ΍ࢠ্͕Ґͷ7JFX$POUSPMMFSΛ஌Δີ݁߹ʹͳͬͯ͠·͏
    42

    View Slide

  43. .PEFMͱ͸
    w ࠓճఆٛͨ͠.PEFM͕͋Δͱ
    w #VH΍ແବͳڍಈ͕ݮΒͤΔ
    w Ϙλϯ࿈ଧ΍ը໘ͷߦ͖དྷͰಈ࡞͕ॏ͘ͳΔΛղܾ
    w 7JFX$POUSPMMFSؒͰͷσʔλڞ༗΍දࣔͷߋ৽͕؆୯ʹ
    43

    View Slide

  44. ࣮ફ.PEFM
    w גࣜձࣾΏΊΈJ04ΤϯδχΞίʔυνΣοΫ՝୊

    IUUQTHJUIVCDPNZVNFNJJODJPTFOHJOFFSDPEFDIFDL
    w Ϟσϧ͕ͳ͍
    w 'BU7JFX$POUSPMMFS
    44

    View Slide

  45. ࣮ફ.PEFM
    w ඞཁͳৼΔ෣͍
    w ೖྗจࣈྻͰݕࡧ
    w ݕࡧ݁Ռͷ௨஌
    45

    View Slide

  46. ࣮ફ.PEFM
    w ඞཁͳৼΔ෣͍
    w ೖྗจࣈྻͰݕࡧ

    GVODTFBSDI UFYU4USJOH

    w ݕࡧ݁Ռͷ௨஌

    !1VCMJTIFEWBSMJTU<3FQPTJUPSZ4VNNBSZ>
    46

    View Slide

  47. ࣮ફ.PEFM
    w ඞཁͳৼΔ෣͍
    w ೖྗจࣈྻͰݕࡧ

    GVODTFBSDI UFYU4USJOH

    w ݕࡧ݁Ռͷ௨஌

    !1VCMJTIFEWBSMJTU<3FQPTJUPSZ4VNNBSZ>
    w FUD
    47

    View Slide

  48. ࣮ફ.PEFM
    w ඞཁͳৼΔ෣͍
    w ೖྗจࣈྻͰݕࡧ

    GVODTFBSDI UFYU4USJOH

    w ݕࡧ݁Ռͷ௨஌

    !1VCMJTIFEWBSMJTU<3FQPTJUPSZ4VNNBSZ>
    w FUD
    w ϩʔσΟϯάঢ়ଶͷ௨஌
    w Τϥʔͷ௨஌
    48

    View Slide

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

    View Slide

  50. ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠
    50

    View Slide

  51. ࢀߟࢿྉ
    w ʰJ04ΞϓϦઃܭύλʔϯೖ໳ʱ
    w [email protected]
    w ΞϓϦέʔγϣϯɾΞʔΩςΫνϟɾΨΠυղઆ
    w IUUQTBUNBSLJUJUNFEJBDPKQGEPUOFUBQQBSDHVJEFJOEFY
    51

    View Slide