Slide 1

Slide 1 text

Presentation with Coordinators Yusuke Kawanabe (@ykawanabe)

Slide 2

Slide 2 text

2 Yusuke Kawanabe (@ykawanabe) • San FranciscoͰConnected Food SensorͷΞϓϦΛ։ൃ • ʮiOS 11 ProgrammingʯͰ͸ୈ8ষ ʮUIKitͷΨΠυϥΠϯ ͷมߋ఺ͱAutoLayoutͷ৽ػೳɺΞοϓσʔτʯΛ୲౰ • ʮΑ͘Θ͔ΔAuto Layoutʯஶऀ • 2017೥͔ΒτϥΠΞεϩϯΛ͸͡ΊϋʔϑΞΠΞϯϚϯʹ Lead iOS Engineer at Nima

Slide 3

Slide 3 text

3 Nima • ੈքॳͷϙʔλϒϧάϧςϯηϯαʔٴͼ ϐʔφοπηϯαʔʹΑͬͯɺ৯୎ʹ҆৺ Λಧ͚͍ͯΔ • CES 2016ͷTechCrunch Hardware Battlefieldʹͯ༏উ • CES 2018ʹͯϐʔφοπηϯαʔΛൃද

Slide 4

Slide 4 text

4 ΞϓϦ։ൃ͸೉͍͠

Slide 5

Slide 5 text

5 •ྫ͑͹ɺϑϦϚΞϓϦʹͯɺ ϩάΠϯը໘ΛɺΞϓϦىಈ ͔࣌Β঎඼બ୒ޙʹมߋ͢Δ A/BςετΛ͍ͨ͠ͳͲɻ UIશվम •ݟͨ໨ͷϦχϡʔΞϧɻ࠷ऴ తʹ͸ΞϓϦΛ࠶ߏங͢Δඞ ཁʹഭΒΕΔ͜ͱ͕ଟ͍ •ྫ͑͹MVVMΛ࠾༻ͨ͠৔ ߹ʹɺView ModelʹϏδωε ϩδοΫ͕ूத͠৑௕ͳView Modelͱͳͬͯ͠·͏ͳͲɻ Ϣʔβʔϑϩʔมߋ ࠶ར༻ੑͷ௿͞ Ή͔͠ࠔͬͨ͜ͱ

Slide 6

Slide 6 text

6 ॊೈੑɺݎ࿚ੑɺ࠶ར༻ੑ Λߟ͑ΞϓϦΛ࠶ߏங͓ͨ͠࿩

Slide 7

Slide 7 text

7 NimaͰ͸ʁ

Slide 8

Slide 8 text

8 NimaΞϓϦͰͰ͖Δ͜ͱ

Slide 9

Slide 9 text

9 NimaΞϓϦઃܭ֓ཁ Coordinator Scene View Controller View Model Context Interactor Model Model Presentation Use Case Business Logic Use Case View

Slide 10

Slide 10 text

10 NimaΞϓϦઃܭ֓ཁ Coordinator Scene View Controller View Model Context Interactor Model Model Presentation Use Case Business Logic Use Case View

Slide 11

Slide 11 text

11 NimaΞϓϦઃܭ֓ཁ Coordinator Scene View Controller View Model Context Interactor Model Model View • Use caseୡΛ؅ཧ͢ΔΫϥε • ྫʣϢʔβʔ͸ϨετϥϯҰཡΛऔಘͰ͖Δ Presentation Use Case Business Logic Use Case

Slide 12

Slide 12 text

12 NimaΞϓϦઃܭ֓ཁ Coordinator Scene View Controller View Model Context Interactor Model Model Presentation Use Case Business Logic Use Case View

Slide 13

Slide 13 text

Presentation Use Case Business Logic Use Case 13 NimaΞϓϦઃܭ֓ཁ Coordinator Scene View Controller View Model Context Interactor Model Model View • MVVMͰͷView Modelͱಉ༷ͷ໾ׂ • දࣔʹඞཁͳঢ়ଶͷอ࣋ͱɺView Controller͔Βͷೖྗ؅ཧ • ࢖͍ࣺͯ • MVVMͰͷView Controllerͱಉ༷ͷ໾ׂ • ViewͱView ModelΛܨ͙ͷΈ • View Controller͸ՄೳͳݶΓΞϗʹ • ࢖͍ࣺͯ

Slide 14

Slide 14 text

14 NimaΞϓϦઃܭ֓ཁ Coordinator Scene View Controller View Model Context Interactor Model Model View • ϓϨθϯςʔγϣϯϢʔεέʔεΛ؅ཧ͢Δ • e.g. Ϣʔβʔొ࿥ϑϩʔɺϨετϥϯݕࡧϑ ϩʔͳͲ Presentation Use Case Business Logic Use Case

Slide 15

Slide 15 text

15 Coordinator App Coordinator Coordinator Navigation Coordinator Scene Coordinator

Slide 16

Slide 16 text

16 Scene Coordinators and Scenes Scene Scene Coordinator •͋Δϑϩʔ಺ͷ֤ϏϡʔΛఆ͍ٛͯ͠ΔɻView ModelΛड͚औΓView ControllerΛฦ͢ɻ •͋ΔϑϩʔΛఆ͍ٛͯ͠Δɻ֤View ModelΛ؂ ࢹ࣍͠ͷSceneΛදࣔ͢Δɻ •͋Δϑϩʔʹ͓͚Δঢ়ଶΛอ࣋͢Δ •View Controller͕φϏήʔγϣϯʹؔ͢Δ஌ࣝΛ ࣋ͨͳ͍ welcome signup Name signup Email signup Password

Slide 17

Slide 17 text

signup Password 17 Navigation Coordinator welcome signup Name signup Email Welcome Scene Coordinator Restaurant Scene Coordinator Review Scene Coordinator •Scene CoordinatorୡΛ؅ཧ͠ɺΞϓϦ಺Ͱͷը໘ભҠΛ؅ཧ͢Δɻ •্هͷΑ͏ͳΠϯλʔϑΣʔεΛ࣋ͪɺCoordinatorͷදࣔॱংΛ؅ཧ͢Δɻ •ϑϩʔͷೖΕସ͕͑༰қ

Slide 18

Slide 18 text

18 App Coordinator ىಈ Welcome Scene Coordinator Restaurant Scene Coordinator •ΞϓϦىಈ࣌ͷը໘ఏڙΛ؅ཧ͢ΔɻͦͷͨΊɺKey WindowΛࢀর͠ɺಛఆͷϑϩʔΛ։࢝͢Δ •ىಈ࣌ͷॲཧΛɺApp Delegate౳ʹॻ͔ͳͯ͘͢Ή ϩάΠϯࡁΈ ະϩάΠϯ Key window Λऔಘ Loading Scene Coordinator

Slide 19

Slide 19 text

19 ໰୊͸Ͳ͏ղܾ͞Ε͔ͨ

Slide 20

Slide 20 text

20 •֤CoordinatorʹͯඞཁʹԠ ͯ͡ॱংΛมߋ͢ΔͷΈ UIશվम •View Controller͕Viewɺ View Modelͱͷ઀ଓΛ୲౰͢ ΔͷΈʹͳΔͷͰɺ෭࡞༻͕ ࠷খʹɻViewٴͼɺView ControllerΛஔ͖׵͑ΔͷΈͰ ରԠՄೳɻ •ϓϨθϯςʔγϣϯͱϏδ ωεϩδοΫ͕໌֬ʹ෼͚Β Ε͍ͯΔͨΊɺϏδωεϩ δοΫ΋࠶ར༻ੑ͕ߴ͘ͳ Δɻ Ϣʔβʔϑϩʔมߋ ࠶ར༻ੑͷ௿͞ ΞϓϦ։ൃͰΑ͋͘ΔࠔΔ͜ͱ

Slide 21

Slide 21 text

21 ·ͱΊ

Slide 22

Slide 22 text

22 • NimaͷΞϓϦΛ࠶ߏஙͨ͠ • ΞϓϦ։ൃ͸೉͍͠ • ιϑτ΢ΣΞΞʔΩςΫνϟʔͷબ୒ʹΑΓૣ͍։ൃ଎౓Λอͪͭͭɺॊ ೈੑɺݎ࿚ੑɺ࠶ར༻ੑͷߴ͍ίʔυΛҡ࣋͠΍͘͢ͳΔ • ৑௕ʹͳΓ͗͢ͳ͍Α͏ʹɺ։ൃΛ͠ͳ͕ΒɺඞཁʹԠͯ͡ઃܭͨ͠ • ։ൃମ੍΍ΞϓϦͷཁ݅ʹ͋Θͤͯ࠷దղ͸มΘΔ ·ͱΊ