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

SwiftUIを導入したアプリ設計

Yu Tawata
September 21, 2020

 SwiftUIを導入したアプリ設計

iOSDC Japan 2020での登壇資料です

Yu Tawata

September 21, 2020
Tweet

More Decks by Yu Tawata

Other Decks in Programming

Transcript

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

    View Slide

  2. ࣗݾ঺հ
    • Yu Tawata

    • iOS Engineer

    • Twitter: yuta24

    • Joined DMM at 2019

    View Slide

  3. View Slide

  4. ΞδΣϯμ
    • ઃܭͷ໨ඪ

    • SwiftUI

    • ՝୊

    • ݕূ

    • ΞʔΩςΫνϟ

    • ϑϩʔ

    • ·ͱΊ

    View Slide

  5. ઃܭͷ໨ඪ
    • ੜ࢈ੑ

    • Ϗϧυ࣌ؒ

    • ࣮૷ίετ

    • UI

    • σΟʔϓϦϯΫ

    • ςετ༰қੑ

    • Ϣχοτςετ

    • εφοϓγϣοτςετ

    View Slide

  6. ઃܭͷ໨ඪ
    • ੜ࢈ੑ

    • Ϗϧυ࣌ؒ

    • ࣮૷ίετ

    • UI

    • σΟʔϓϦϯΫ

    • ςετ༰қੑ

    • Ϣχοτςετ

    • εφοϓγϣοτςετ
    ϚϧνϑϨʔϜϫʔΫ
    SwiftUI
    Coordinator
    DI
    ViewState

    View Slide

  7. View Slide

  8. SwiftUI
    • ओͳಛ௃

    • એݴతʹUIΛهड़Ͱ͖Δ

    • ࣮ࡍͷΞϓϦΛಈ࡞ͤͯ͞୯ҰViewΛPreviewͰ͖Δ

    • શͯͷAppleϓϥοτϑΥʔϜ্Ͱར༻Ͱ͖Δ

    • ޓ׵ੑ

    • SwiftUI্ʹUIKitͷViewΛ௥ՃՄೳ

    • UIKitͷViewʹSwiftUIͷViewΛ௥ՃՄೳ

    View Slide

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

    2. UIKitΛϕʔεʹ࣮૷͠ɺSwiftUIΛҰ෦Ͱར༻͢Δ

    3. UIKitͷΈͰ࣮૷͢Δ

    View Slide

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

    2. UIKitΛϕʔεʹ࣮૷͠ɺSwiftUIΛҰ෦Ͱར༻͢Δ

    3. UIKitͷΈͰ࣮૷͢Δ

    View Slide

  11. ߟྀ͢΂͖ཁ݅
    • ػೳ

    • Χϧʔηϧදࣔ

    • ෳ਺ͷΞϓϦىಈܦ࿏

    • ඇػೳ

    • จࣈ૷০

    • ΞφϦςΟΫε

    • ը໘ભҠ

    • Ϙλϯλοϓ

    • ίϯόʔδϣϯ

    • ΫϥογϡϝτϦΫε

    • ύϑΥʔϚϯεϞχλϦϯά

    View Slide

  12. • ػೳ

    • Χϧʔηϧදࣔ

    • ෳ਺ͷΞϓϦىಈܦ࿏

    • ඇػೳ

    • จࣈ૷০

    • ΞφϦςΟΫε

    • ը໘ભҠ

    • Ϙλϯλοϓ

    • ίϯόʔδϣϯ

    • ΫϥογϡϝτϦΫε

    • ύϑΥʔϚϯεϞχλϦϯά
    ߟྀ͢΂͖ཁ݅

    View Slide

  13. ෳ਺ͷΞϓϦىಈܦ࿏
    • UIKitͷ৔߹

    • Coordinatorύλʔϯ

    • SwiftUIͷ৔߹

    • ʁʁʁʁ

    View Slide

  14. UIKitͷ৔߹ - Coordinator
    • ը໘ભҠॲཧΛVC͔Β
    CoordinatorʹҠৡ͢Δ

    • VCؒͷґଘΛૄʹ͢ΔσβΠϯ
    ύλʔϯ

    View Slide

  15. UIKitͷ৔߹ - Coordinator
    AppCoordinator
    AuthCoordinator
    MainCoordinator

    View Slide

  16. UIKitͷ৔߹ - Coordinator
    AppCoordinator
    AuthCoordinator
    MainCoordinator

    View Slide

  17. UIKitͷ৔߹ - Coordinator
    AppCoordinator
    AuthCoordinator
    MainCoordinator

    View Slide

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

    View Slide

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

    View Slide

  20. SwiftUIͷ৔߹ -ʁʁʁʁ
    • ٻΊΒΕΔ࣮૷

    • બ୒ͨ͠৘ใΛड౉͠Ͱ͖Δ

    • ෼ذ৚݅Λ͚ͭΒΕΔ

    • ਌View͔ΒͷΠϕϯτ఻ୡ

    View Slide

  21. τϥοΩϯάʔը໘ભҠ
    • UIKitͷ৔߹

    • Google Analytics for Firebase

    • SwiftUIͷ৔߹

    • ʁʁʁʁ

    View Slide

  22. UIKitͷ৔߹ - Google Analytics for Firebase

    View Slide

  23. SwiftUIͷ৔߹ -ʁʁʁʁ

    View Slide

  24. View Slide

  25. UIHostingController
    UITabBarController
    UIHostingController
    UINavigationController
    DestinationHostingController

    View Slide

  26. UIHostingController
    UITabBarController
    UIHostingController
    UINavigationController
    DestinationHostingController
    Analyticsʹ͸͍ͣΕͷViewControllerͷ

    σʔλ΋ه࿥͞Ε͍ͯͳ͔ͬͨ

    View Slide

  27. SwiftUIͷ৔߹ -ʁʁʁʁ

    View Slide

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

    2. UIKitΛϕʔεʹ࣮૷͠ɺSwiftUIΛҰ෦Ͱར༻͢Δ

    3. UIKitͷΈͰ࣮૷͢Δ

    View Slide

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

    2. UIKitΛϕʔεʹ࣮૷͠ɺSwiftUIΛҰ෦Ͱར༻͢Δ

    3. UIKitͷΈͰ࣮૷͢Δ
    Ͳͷ৔໘Ͱ׆༻Ͱ͖Δʁ

    View Slide

  30. ݕূ
    1. UIViewʹSwiftUIΛར༻͢Δ

    2. UITableViewʹSwiftUIΛར༻͢Δ

    3. UICollectionViewʹSwiftUIΛར༻͢Δ

    View Slide

  31. ݕূ
    1. UIViewʹSwiftUIΛར༻͢Δ

    2. UITableViewʹSwiftUIΛར༻͢Δ

    3. UICollectionViewʹSwiftUIΛར༻͢Δ

    View Slide

  32. UITableViewʹSwiftUIΛར༻͢Δ

    View Slide

  33. View Slide

  34. ݕূ
    1. UIViewʹSwiftUIΛར༻͢Δ

    2. UITableViewʹSwiftUIΛར༻͢Δ

    • HostingTableViewCellͰ೚ҙͷSwiftUIͷViewΛදࣔͰ͖Δ

    • Self-Sizingʹ΋ରԠͰ͖Δ

    3. UICollectionViewʹSwiftUIΛར༻͢Δ

    • HostingCollectionViewCellͰ೚ҙͷSwiftUIͷViewΛදࣔͰ͖Δ

    • Self-Sizingʹ΋ରԠͰ͖Δ

    View Slide

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

    2. UIKitΛϕʔεʹ࣮૷͠ɺSwiftUIΛҰ෦Ͱར༻͢Δ

    3. UIKitͷΈͰ࣮૷͢Δ

    View Slide

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

    View Slide

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

    View Slide

  38. ·ͱΊ
    • ໰୊఺

    • SwiftUI͸ը໘ભҠϩδοΫΛ؆୯ʹ͸ണ͕ͤͳ͍

    • SwiftUI࣌୅ͷ࣮૷ύλʔϯ͕ඞཁʹͳΔʢ͔΋͠Εͳ͍ʁʣ

    • SwiftUI͸ैདྷAnalyticsπʔϧͰ͸ը໘ભҠΛτϥοΩϯάͰ͖ͳ͍

    • ରԠࡦ

    • UIKitΛϕʔεʹΞϓϦΛઃܭ

    • SwiftUIΛUIίϯϙʔωϯτͱͯ͠࠾༻

    View Slide

  39. ࢀߟ
    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

    View Slide