Slide 1

Slide 1 text

Yu Tawata, 2020/9/21 SwiftUIΛಋೖͨ͠ΞϓϦઃܭ iOSDC Japan 2020

Slide 2

Slide 2 text

ࣗݾ঺հ • Yu Tawata • iOS Engineer • Twitter: yuta24 • Joined DMM at 2019

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

ΞδΣϯμ • ઃܭͷ໨ඪ • SwiftUI • ՝୊ • ݕূ • ΞʔΩςΫνϟ • ϑϩʔ • ·ͱΊ

Slide 5

Slide 5 text

ઃܭͷ໨ඪ • ੜ࢈ੑ • Ϗϧυ࣌ؒ • ࣮૷ίετ • UI • σΟʔϓϦϯΫ • ςετ༰қੑ • Ϣχοτςετ • εφοϓγϣοτςετ

Slide 6

Slide 6 text

ઃܭͷ໨ඪ • ੜ࢈ੑ • Ϗϧυ࣌ؒ • ࣮૷ίετ • UI • σΟʔϓϦϯΫ • ςετ༰қੑ • Ϣχοτςετ • εφοϓγϣοτςετ ϚϧνϑϨʔϜϫʔΫ SwiftUI Coordinator DI ViewState

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

SwiftUI • ओͳಛ௃ • એݴతʹUIΛهड़Ͱ͖Δ • ࣮ࡍͷΞϓϦΛಈ࡞ͤͯ͞୯ҰViewΛPreviewͰ͖Δ • શͯͷAppleϓϥοτϑΥʔϜ্Ͱར༻Ͱ͖Δ • ޓ׵ੑ • SwiftUI্ʹUIKitͷViewΛ௥ՃՄೳ • UIKitͷViewʹSwiftUIͷViewΛ௥ՃՄೳ

Slide 9

Slide 9 text

બ୒ࢶ 1. SwiftUIΛϕʔεʹ࣮૷͠ɺUIKitΛҰ෦Ͱར༻͢Δ 2. UIKitΛϕʔεʹ࣮૷͠ɺSwiftUIΛҰ෦Ͱར༻͢Δ 3. UIKitͷΈͰ࣮૷͢Δ

Slide 10

Slide 10 text

બ୒ࢶ 1. SwiftUIΛϕʔεʹ࣮૷͠ɺUIKitΛҰ෦Ͱར༻͢Δ 2. UIKitΛϕʔεʹ࣮૷͠ɺSwiftUIΛҰ෦Ͱར༻͢Δ 3. UIKitͷΈͰ࣮૷͢Δ

Slide 11

Slide 11 text

ߟྀ͢΂͖ཁ݅ • ػೳ • Χϧʔηϧදࣔ • ෳ਺ͷΞϓϦىಈܦ࿏ • ඇػೳ • จࣈ૷০ • ΞφϦςΟΫε • ը໘ભҠ • Ϙλϯλοϓ • ίϯόʔδϣϯ • ΫϥογϡϝτϦΫε • ύϑΥʔϚϯεϞχλϦϯά

Slide 12

Slide 12 text

• ػೳ • Χϧʔηϧදࣔ • ෳ਺ͷΞϓϦىಈܦ࿏ • ඇػೳ • จࣈ૷০ • ΞφϦςΟΫε • ը໘ભҠ • Ϙλϯλοϓ • ίϯόʔδϣϯ • ΫϥογϡϝτϦΫε • ύϑΥʔϚϯεϞχλϦϯά ߟྀ͢΂͖ཁ݅

Slide 13

Slide 13 text

ෳ਺ͷΞϓϦىಈܦ࿏ • UIKitͷ৔߹ • Coordinatorύλʔϯ • SwiftUIͷ৔߹ • ʁʁʁʁ

Slide 14

Slide 14 text

UIKitͷ৔߹ - Coordinator • ը໘ભҠॲཧΛVC͔Β CoordinatorʹҠৡ͢Δ • VCؒͷґଘΛૄʹ͢ΔσβΠϯ ύλʔϯ

Slide 15

Slide 15 text

UIKitͷ৔߹ - Coordinator AppCoordinator AuthCoordinator MainCoordinator

Slide 16

Slide 16 text

UIKitͷ৔߹ - Coordinator AppCoordinator AuthCoordinator MainCoordinator

Slide 17

Slide 17 text

UIKitͷ৔߹ - Coordinator AppCoordinator AuthCoordinator MainCoordinator

Slide 18

Slide 18 text

UIKitͷ৔߹ - Coordinator AppCoordinator AuthCoordinator MainCoordinator Coordinator͕ը໘ભҠΛߦ͏

Slide 19

Slide 19 text

SwiftUIͷ৔߹ -ʁʁʁʁ • ϓογϡ • Ϟʔμϧ

Slide 20

Slide 20 text

SwiftUIͷ৔߹ -ʁʁʁʁ • ٻΊΒΕΔ࣮૷ • બ୒ͨ͠৘ใΛड౉͠Ͱ͖Δ • ෼ذ৚݅Λ͚ͭΒΕΔ • ਌View͔ΒͷΠϕϯτ఻ୡ

Slide 21

Slide 21 text

τϥοΩϯάʔը໘ભҠ • UIKitͷ৔߹ • Google Analytics for Firebase • SwiftUIͷ৔߹ • ʁʁʁʁ

Slide 22

Slide 22 text

UIKitͷ৔߹ - Google Analytics for Firebase

Slide 23

Slide 23 text

SwiftUIͷ৔߹ -ʁʁʁʁ

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

UIHostingController UITabBarController UIHostingController UINavigationController DestinationHostingController

Slide 26

Slide 26 text

UIHostingController UITabBarController UIHostingController UINavigationController DestinationHostingController Analyticsʹ͸͍ͣΕͷViewControllerͷ σʔλ΋ه࿥͞Ε͍ͯͳ͔ͬͨ

Slide 27

Slide 27 text

SwiftUIͷ৔߹ -ʁʁʁʁ

Slide 28

Slide 28 text

બ୒ࢶ 1. SwiftUIΛϕʔεʹ࣮૷͠ɺUIKitΛҰ෦Ͱར༻͢Δ 2. UIKitΛϕʔεʹ࣮૷͠ɺSwiftUIΛҰ෦Ͱར༻͢Δ 3. UIKitͷΈͰ࣮૷͢Δ

Slide 29

Slide 29 text

બ୒ࢶ 1. SwiftUIΛϕʔεʹ࣮૷͠ɺUIKitΛҰ෦Ͱར༻͢Δ 2. UIKitΛϕʔεʹ࣮૷͠ɺSwiftUIΛҰ෦Ͱར༻͢Δ 3. UIKitͷΈͰ࣮૷͢Δ Ͳͷ৔໘Ͱ׆༻Ͱ͖Δʁ

Slide 30

Slide 30 text

ݕূ 1. UIViewʹSwiftUIΛར༻͢Δ 2. UITableViewʹSwiftUIΛར༻͢Δ 3. UICollectionViewʹSwiftUIΛར༻͢Δ

Slide 31

Slide 31 text

ݕূ 1. UIViewʹSwiftUIΛར༻͢Δ 2. UITableViewʹSwiftUIΛར༻͢Δ 3. UICollectionViewʹSwiftUIΛར༻͢Δ

Slide 32

Slide 32 text

UITableViewʹSwiftUIΛར༻͢Δ

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

ݕূ 1. UIViewʹSwiftUIΛར༻͢Δ 2. UITableViewʹSwiftUIΛར༻͢Δ • HostingTableViewCellͰ೚ҙͷSwiftUIͷViewΛදࣔͰ͖Δ • Self-Sizingʹ΋ରԠͰ͖Δ 3. UICollectionViewʹSwiftUIΛར༻͢Δ • HostingCollectionViewCellͰ೚ҙͷSwiftUIͷViewΛදࣔͰ͖Δ • Self-Sizingʹ΋ରԠͰ͖Δ

Slide 35

Slide 35 text

બ୒ࢶ 1. SwiftUIΛϕʔεʹ࣮૷͠ɺUIKitΛҰ෦Ͱར༻͢Δ 2. UIKitΛϕʔεʹ࣮૷͠ɺSwiftUIΛҰ෦Ͱར༻͢Δ 3. UIKitͷΈͰ࣮૷͢Δ

Slide 36

Slide 36 text

ΞʔΩςΫνϟ Domain Core Feature Feature Feature UI App

Slide 37

Slide 37 text

View View Interactor Interactor ϑϩʔ ViewController Presenter Interactor Coordinator UIView or View Repository

Slide 38

Slide 38 text

·ͱΊ • ໰୊఺ • SwiftUI͸ը໘ભҠϩδοΫΛ؆୯ʹ͸ണ͕ͤͳ͍ • SwiftUI࣌୅ͷ࣮૷ύλʔϯ͕ඞཁʹͳΔʢ͔΋͠Εͳ͍ʁʣ • SwiftUI͸ैདྷAnalyticsπʔϧͰ͸ը໘ભҠΛτϥοΩϯάͰ͖ͳ͍ • ରԠࡦ • UIKitΛϕʔεʹΞϓϦΛઃܭ • SwiftUIΛUIίϯϙʔωϯτͱͯ͠࠾༻

Slide 39

Slide 39 text

ࢀߟ https://developer.apple.com/videos/play/wwdc2020/10119/ https://khanlou.com/2015/10/coordinators-redux/ https://firebase.google.com/docs/analytics/screenviews?hl=ja https://jobandtalent.engineering/ios-architecture-an-state-container-based- approach-4f1a9b00b82e