Slide 1

Slide 1 text

iOSΞϓϦͱMVA Re:try! Swift 2017/03/31 1

Slide 2

Slide 2 text

ࣗݾ঺հ • ۽ຊ ࿨ਖ਼ • ࢁޱݝग़਎ • iOSΤϯδχΞˏYahoo! JAPAN • CAMPFIRE (#yjcamp) iOSओ࠻ • Twitter: @kumamo_tone • Github: @kumamotone 2

Slide 3

Slide 3 text

ઃܭʹ·ͭΘΔ೰Έ • େن໛ͳΞϓϦͰى͜Γ͕ͪͳ໰୊ • ViewController ͕ංେԽ͍ͯ͠Δ • Ϟσϧ͕͙ͪΌ͙ͪΌʹͳ͍ͬͯΔ • ͲΜͳઃܭʹͨ͠Βྑ͍ͷ͔Θ͔Βͳ͍ • ઃܭΛద༻͕ͨ͠ίʔυྔ͕૿͑͗ͨ͢ 3

Slide 4

Slide 4 text

σʔλϨΠϠΛ෼཭͢Δ try! Swift Tokyo 2017 Day1-9 4

Slide 5

Slide 5 text

σʔλϨΠϠΛ෼཭͢Δ ϨΠϠʔΛ੹຿ผʹ෼͚ΒΕΕ͹ΞʔΩςΫνϟ͸ԿͰ΋ྑ͍ • ϨΠϠʔΛ·͙ͨ σʔλ͸ BasicStruct ʹཹΊΔɻ ୯७ͳσʔλߏ଄͕ڥքΛ௒͑Δͱ͍͏͜ͱ͕ॏཁ • Realm Object ΍ CoreData ͷΦϒδΣΫτ͸ σʔλϨΠϠʔ͔Β֎ʹग़͞ͳ͍΄͏͕ྑ͍ 5

Slide 6

Slide 6 text

σʔλϨΠϠΛ෼཭͢Δ • M: Minimum V: Viable A: Architecture ͷ঺հ • ೔ຊޠͰ͸ඞཁ࠷খݶͷΞʔΩςΫνϟ • ΞʔΩςΫνϟͱ͍͏ΑΓ͸ϝλ֓೦ • ΞʔΩςΫνϟઓࠃ࣌୅ͷiOSΞϓϦ։ൃք۾ʹͱͬͯ ྑ͍ݴ༿ͱײͨ͡ 6

Slide 7

Slide 7 text

σʔλϨΠϠΛ෼཭͢Δ • MVA1 • MVC ͩͱViewController͕ංେ͕ͪ͠ɺ ͳΜͰ΋Ͱ͖ΔਆManager஀ੜ͕ͪ͠ • Clean Architecture, VIPER ͳͲ͸ɺ΍Γ͗͢ͳ͜ͱ͕ଟ͍ • ͓ͦΒ͘ MVP ΍ MVVM ʹ͓ͪͭ͘͜ͱ͕ଟ͍ 1 https://www.slideshare.net/RandyShoup/minimum-viable-architecture-good-enough-is-good-enough-in-a-startup 7

Slide 8

Slide 8 text

MVA ʹ͢Δʹ͸Ͳ͏͢Ε͹͍͍͔ • ઃܭΛͬ͘͟Γ஌Δ • ੍࡞෺ͷಛ௃Λ஌Γɺ࠷খݶͷ΋ͷΛద༻͢Δ • νʔϜͰ࿩͠߹͏ 8

Slide 9

Slide 9 text

ઃܭΛͬ͘͟Γ஌Δ • ઌਓͷ·ͱΊΛݟΔ • iOSΞϓϦઃܭେશू 2016 2016, tattn • 10෼ͰৼΓฦΔιϑτ΢ΣΞΞʔΩςΫνϟͷྺ࢙2017 2017, takasek 2017, takasek https://speakerdeck.com/takasek/10fen-tezhen-rifan-rusohutoueaakitekutiyafalseli-shi-2017 2016, tattn http://qiita.com/tattn/items/d4b95af0b60c3849243a 9

Slide 10

Slide 10 text

ઃܭΛͬ͘͟Γ஌Δ • Model + □□ • MVC / MVVM / MVP • ੹຿͕ࡉ͔ܾ͘·͍ͬͯΔ • VIPER / Clean Architecture 10

Slide 11

Slide 11 text

ઃܭΛͬ͘͟Γ஌Δ • MVP • MVC ͷ ViewController ͷංେԽΛղܾ • (iOSΞϓϦͷ࣮૷Ͱ͸) MVCʹPresenter(P) ͕͍ͭͨ΍ͭ P ͸ UI ͷ͜ͱΛ஌Βͳ͍ • MVVM • ΄΅ MVPɻModelͷมߋΛݕ஌͠ɺViewʹ఻͑Δ࢓૊Έ 11

Slide 12

Slide 12 text

ઃܭΛͬ͘͟Γ஌Δ • VIPER • P ͱ M Λ P ͱ I ͱ E ͱ M ʢͱRʣʹ • MVPΑΓ۠෼͕૿͑ͯɺΑΓ੹຿͕໌֬ʹ • CleanArchitecture • ԁঢ়ʹ૚Λ෼ׂɹ੹຿աଟΛղফͭͭ͠ɺ ΍ΓͱΓ͕֎͔Βத΁੍ݶ͞Ε͍ͯΔͷͰɺͨ͘͞Μґଘ 12

Slide 13

Slide 13 text

੍࡞෺ͷಛ௃Λ஌Γɺ࠷খݶͷ΋ͷΛద༻͢Δ • GUI ΞϓϦέʔγϣϯͰ͋ΔɹiOSΞϓϦͰ͋ΔʢUIKit ͷଋ റ͕͋Δʣ • VCͷංେԽɺCͷVͷϥΠϑαΠΫϧ΁ͷґଘ → MVVM / MVPʁ • ͞Βʹେن໛ʹͳ͖ͬͯͨ • MVP ͷ Presenter, Model ͕͙ͪΌ͙ͪΌʹͳ͖ͬͯͨ 13

Slide 14

Slide 14 text

νʔϜͰ࿩͠߹͏ • ઃܭɺϞδϡʔϧͷ੹຿ɺ༻ޠͷղऍΛ໌֬ʹͯ͠ڞ༗͢Δ • Ͳ͏࡞Δ͔͸νʔϜ࣍ୈ • ○○͸Ͳ͜ʹஔ͔͘ʁ☓☓はどういう命名規則にするか? • ঃʑʹద༻͢Δ 14

Slide 15

Slide 15 text

·ͱΊ • MVA = "ඞཁ࠷খݶͷΞʔΩςΫνϟ" Λҙࣝ͢Δ • ઃܭͷ͜ͱΛ஌Δ • ੍࡞෺ͷಛ௃Λ஌Γɺ࠷খݶͷ΋ͷΛద༻͢Δ • νʔϜͰ࿩͠߹͏ 15