Slide 1

Slide 1 text

OKɺཧ૝ͷΞʔΩςΫνϟ ͸෼͔ͬͨɻͰɺͲ͔͜Β खΛ͚ͭΜͷʁ by takasek 2017/1/24 iOS Creators' Meetup vol.3 1

Slide 2

Slide 2 text

2

Slide 3

Slide 3 text

3

Slide 4

Slide 4 text

FiNCΞϓϦɺࠓ݄ΑΓট଴੍Ͱ ެ։த 4

Slide 5

Slide 5 text

!ଟػೳ! 5

Slide 6

Slide 6 text

4 େྔͷϑΝΠϧͰϏϧυ͕ॏ͍ 4 ઃܭ͕ෳࡶ 4 ࢓༷มߋ࣌ͷӨڹ΋େ͖͍ ͱ͍͏Θ͚ͰνʔϜҰؙͱͳͬͯɺ ΞʔΩςΫνϟʹ͍ͭͯࢼߦࡨޡ͍ͯ͠ΔࡢࠓͰ ͢ 6

Slide 7

Slide 7 text

࠷ۙͷiOSք۾ ΞʔΩςΫνϟ͕࿩୊Ͱ͢ ΫϦʔϯΞʔΩςΫνϟͱ͔ 7

Slide 8

Slide 8 text

ͳΔ΄Ͳ ϨΠϠʔΛ෼ׂͯ͠ ந৅ʹґଘͯ͠ ςετͷ༰қੑΛߴΊͯ ;Μ;Μ 8

Slide 9

Slide 9 text

࣍ͷϓϩδΣΫτͰ͸ ద༻ͯ͠ΈΑ͏͔ͳ͊ 9

Slide 10

Slide 10 text

…ɻ 10

Slide 11

Slide 11 text

!ࠓ։ൃͯ͠ΔΞϓϦͷɺ ͜ͷFat ViewControllerΛ Ͳ͏͢Ε͹͍͍Μͩʁ …ͱ͓ࢥ͍ͷوํ΁ɻ 11

Slide 12

Slide 12 text

OKɺཧ૝ͷΞʔΩςΫνϟ ͸෼͔ͬͨɻͰɺͲ͔͜Β खΛ͚ͭΜͷʁ by takasek 2017/1/24 iOS Creators' Meetup vol.3 12

Slide 13

Slide 13 text

13

Slide 14

Slide 14 text

14

Slide 15

Slide 15 text

iOS Clean Architecture - ૽Իͷͳ͍ੈք BLOG http://noiselessworld.hatenablog.jp/entry/ios- clean-architecture 15

Slide 16

Slide 16 text

୯ํ޲ґଘΛ ແཧͳ͘ڧ੍ͤͭͭ͞ ࠓͷΞϓϦͷઃܭΛ վળ͢ΔͨΊʹ 16

Slide 17

Slide 17 text

֤૚ͷ frameworkԽ! 17

Slide 18

Slide 18 text

frameworkͷ੾Γ෼͚ 4 ԣ࣠ʢػೳʣ 4 ϥΠϒϥϦͷframework͸͜ΕͰ͢ΑͶ 4 ΞϓϦ಺ͷػೳͰɺଞͱಠཱੑͷߴ͍ίϯϙʔωϯ τ͸࠷ॳ͔Βԣ࣠ͰframeworkԽ͠ͱ͘ͷ΋͋Γ 4 ॎ࣠ʢΞʔΩςΫνϟͷϨΠϠʔʣ 4 ࠓճ࿩͢΋ͷ 4 ୯ํ޲ґଘ 18

Slide 19

Slide 19 text

framework׆༻ͷϝϦοτ 4 ΞΫηείϯτϩʔϧΛ׆༻ 4 ࠷খݶͷΠϯλϑΣʔε͚͕ͩݟ͑ͯ҆શˍ ೴ʹ༏͍͠ 4 ґଘ͢ΔՕॴʹ͸ඞͣimport͕ඞཁ 4 Ϗϧυલʹґଘؔ܎ 4 ૬ޓґଘͰ͖ͳ͍࡞ΓΛڧ੍Ͱ͖Δ 4 Ϗϧυ࣌ؒ΋ݮΔ 19

Slide 20

Slide 20 text

Speeding up Xcode Builds – Zalando Tech Blog https://tech.zalando.com/blog/speeding-up-xcode-builds/ Ϗϧυ͸ର৅ʹରͯ͠O(n^2)ͷॲཧͬΆ͍ ͭ·ΓϑΝΠϧͷ൒෼ΛผϑϨʔϜϫʔΫʹҠͤ͹ɺϏϧυ࣌ؒ͸1/4ʹʂ 20

Slide 21

Slide 21 text

!ʮframeworkΛ ෼͚͗͢Δͱ໰୊͋Δ ͬͯฉ͍ͨΑ͏ͳʯ 21

Slide 22

Slide 22 text

framework͕ଟ͍ͱىಈ࣌ʹམͪ Δ໰୊ iOS 9ͰΞοϓσʔτޙʹΞϓϦ͕ىಈͰ͖ͳ͘ͳΔ໰ ୊ͷݪҼͱղܾํ๏ - inFablic http://in.fablic.co.jp/entry/2016/06/09/150000 4 iOS9.3.2Ͱमਖ਼ࡁ 4 Ϣʔβʔͷ࢖༻୺຤ͷOSόʔδϣϯͱ૬ஊʁ 4 Ͱ΋ංେԽͨ͠ΞϓϦΛ਺ݸͷframeworkʹ෼཭͢ Δ͘Β͍ͳΒɺผʹଛ͸ͳ͍Μ͡Όͳ͍ʁ 22

Slide 23

Slide 23 text

framework ෼ׂͷखॱ 23

Slide 24

Slide 24 text

framework ෼ׂͷखॱ …Λ࿩͢લʹ 24

Slide 25

Slide 25 text

ϔΩαΰφϧ ΞʔΩςΫνϟ ͷ࿩ 25

Slide 26

Slide 26 text

!ʢ·ͨ৽͍͠ ΞʔΩςΫνϟͷ໊લ ग़͖ͯͨʣ 26

Slide 27

Slide 27 text

ා͕Βͳ͍͍ͯ͘Α! 27

Slide 28

Slide 28 text

ϔΩαΰφϧΞʔΩςΫνϟͱ͸1 1 ϔΩαΰφϧΞʔΩςΫνϟ(Hexagonal architecture຋༁) http://blog.tai2.net/hexagonal_architexture.html 28

Slide 29

Slide 29 text

4 ΫϦʔϯΞʔΩςΫνϟͷΠϯεύΠΞݩͷͻͱͭ 4 ؙ͕࿡֯ܗʹͳͬͯΔ͚ͩʢͳ͓6ͱ͍͏਺ࣈʹҙຯ͸ͳ͍ʣ 4 ֤ลΛʮϙʔτʯͱ͍͏ 4 ʮϙʔτʯʹʮΞμϓλʯΛࠩ͠ସ͑Δ 4 ʮ಺ଆ΁ͷґଘʯͱ͍͏ίϯηϓτ͸ಉ͡ 29

Slide 30

Slide 30 text

ϔΩαΰφϧΞʔΩςΫνϟ͸ɺ Applicationͷ֎͕ϙʔτͰ۠੾ΒΕͯΔ 30

Slide 31

Slide 31 text

Fat ViewControllerͬͯͷ͸ͭ·Γ 31

Slide 32

Slide 32 text

ΰʔϧ: ֤ϙʔτͷframeworkԽ 32

Slide 33

Slide 33 text

·ͣҰา໨͸ɺ͜͏ 33

Slide 34

Slide 34 text

Presentation Domain Separation 34

Slide 35

Slide 35 text

Presentation Domain Separation(PDS) Presentation૚ʹؔ৺͕͋Δͷ͸ Presentation૚͚ͩ ͦΕҎ֎ΛɺڊେͳDomain Modelͱͯ͠ frameworkʹ੾Γग़͢ 35

Slide 36

Slide 36 text

PDSͰ͖ͨΒɺ 36

Slide 37

Slide 37 text

PDSͰ͖ͨΒɺଞͷϙʔτ΋… 37

Slide 38

Slide 38 text

…෼ׂͯ͠ɺ׬੒ʂ 38

Slide 39

Slide 39 text

ͬ͘͟Γ෼͚ͨ Model.frameworkͷத͸ ಉ͡खॱͰɺ͞Βʹ༰қʹ ࡉ෼ԽͰ͖Δ͸ͣ 39

Slide 40

Slide 40 text

PDSͷࡉ͔͍खॱ 4 ຤୺(EntityͬΆ͍΋ͷ)͔ΒঃʑʹखΛ͚ͭɺ͡Θ͡Θ ͱModel.frameworkͷྖ౔Λ޿͍͛ͯ͘ 4 ࠷௿ݶͷpublic/openΞΫηείϯτϩʔϧ͚ͩ֎ʹެ։ 4 ࠷ॳ͔Βࡉ͔͘෼͚͗͢ͳ͍ 4 EntityͱUseCaseͱ͔ɺσʔλΞΫηε૚ͱ͔ɺࡉ͔ ͍͜ͱ͸ߟ͑ͳ͍ 4 !ͨͩɺ໌Β͔ʹDomainʹґଘ͠ͳ͍Utilityతͳ΋ ͷ͸ɺผframeworkͰ͍͍ͷͰ͸ 40

Slide 41

Slide 41 text

frameworkʹҠ͠ऴΘͬͨΒ 4 ෆཁʹͳͬͨpublicΞΫηείϯτϩʔϧΛక Ί෇͚Δ 4 ফͯ͠ϏϧυΤϥʔʹͳΔ͔Ͳ͏͔Ͱ൑அ Ͱ͖ΔͷͰࢥߟఀࢭ͠ͳ͕Β࡞ۀͰ͖Δ 41

Slide 42

Slide 42 text

ى͖͕ͪͳ໰୊ᶃ !ʮॲཧ͕ࠞ͟Γ߹ͬͯͯCore ͔ΒframeworkʹҠͤͳ ͍…ʯ 4 = ີ݁߹ 4 ઃܭ͕Α͘ͳ͍ͱؾ෇͚ͨʂ 4 ܕΛ෼ׂ͠ɺదٓ੾Γ෼͚Δ 4 ӨڹεέονΛඳ͘ ʢʮϨΨγʔίʔυվળ ΨΠυʯP194ʣ 42

Slide 43

Slide 43 text

ى͖͕ͪͳ໰୊ᶄ Domain Modelͷ෼ׂΑΓલʹ ϙʔτͷ෼ׂʹखΛ͚ͭͯ͠· ͏ͱةͳ͍ ґଘํ޲: 4 ΞϓϦຊମ ! ϙʔτ 4 ϙʔτ !❌ ΞϓϦຊମ ϙʔτ͕ɺ·ͩDomain Model ͷframeworkʹҠߦͰ͖͍ͯ ͳ͍ίʔυʹґଘͯ͠͠·ͬͨ ৔߹ɺಈ͚ͳ͘ͳΔ 43

Slide 44

Slide 44 text

ͦΜͳ͔Μ͡Ͱ frameworkΛ׆༻ͯ͠ɺϞδϡʔϧԽ͞Εͨઃ ܭΛखʹೖΕ·͠ΐ͏ ! 44

Slide 45

Slide 45 text

ࢀߟϦϯΫ Speeding up Xcode Builds – Zalando Tech Blog https://tech.zalando.com/blog/speeding-up-xcode-builds/ iOS 9ͰΞοϓσʔτޙʹΞϓϦ͕ىಈͰ͖ͳ͘ͳΔ໰୊ͷݪҼͱղܾํ๏ - inFablic http://in.fablic.co.jp/entry/2016/06/09/150000 iOS Clean Architecture - ૽Իͷͳ͍ੈք BLOG http://noiselessworld.hatenablog.jp/entry/ios-clean-architecture ϔΩαΰφϧΞʔΩςΫνϟ(Hexagonal architecture຋༁) http://blog.tai2.net/hexagonal_architexture.html 45