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

TCAでのClient/Managerの 利用パターンでは副作用のActionやErrorを分離できる

yimajo
November 22, 2020

TCAでのClient/Managerの 利用パターンでは副作用のActionやErrorを分離できる

iOSアプリ開発のためのFunctional Architecture情報共有会2 の発表資料です。
https://connpass.com/event/194239/

yimajo

November 22, 2020
Tweet

More Decks by yimajo

Other Decks in Programming

Transcript

  1. TCAͰͷClient/Managerͷ


    ར༻ύλʔϯͰ͸෭࡞༻ͷ
    Action΍ErrorΛ෼཭Ͱ͖Δ
    iOSΞϓϦ։ൃͷͨΊͷFunctional Architecture৘ใڞ༗ձ2
    @yimajo 2020/11/22 #fa_ios

    View Slide

  2. The Composable Architecture ʹ͸
    ಛఆͷ෭࡞༻Λ·ͱΊΔΧελϜͳ
    Client/Managerܕͷαϯϓϧ͕͋Δ

    View Slide

  3. • DownloadClient


    • WebSocketClient


    • LocalSearchClient


    • WeatherClient


    • SpeechClient


    • AuthenticationClient


    • AudioPlayerClient


    • AudioRecorderClient
    • MotionManager


    • LocationManager

    View Slide

  4. State
    Action
    View
    Store
    DI
    Environment
    Client
    Effect
    Reducer
    Error
    "DUJPO

    View Slide

  5. State
    Action
    View
    Store
    DI
    Environment
    Client
    Effect
    Reducer
    Error
    "DUJPO

    View Slide

  6. State
    Action
    View
    Store
    DI
    Environment
    Client
    Effect
    Reducer
    Error
    "DUJPO

    View Slide

  7. State
    Action
    View
    Store
    DI
    Environment
    Client
    Effect
    Reducer
    Error
    "DUJPO

    View Slide

  8. State
    Action
    View
    Store
    DI
    Environment
    Client
    Effect
    Reducer
    Error
    "DUJPO

    View Slide

  9. State
    Action
    View
    Store
    DI
    Environment
    Client
    Effect
    Reducer
    Error
    "DUJPO

    View Slide

  10. State
    Action
    View
    Store
    DI
    Environment
    Client
    Effect
    Reducer
    Error
    "DUJPO

    View Slide

  11. Clientͷߏ੒

    View Slide

  12. ෭࡞༻࣮ߦΫϩʔδϟ
    ઐ༻ͷΤϥʔ
    ઐ༻ͷ"DUJPO

    View Slide

  13. $MJFOUͷ࣮ߦΛอ࣋͢Δ
    %FQFOEFODJFT

    View Slide

  14. TUBUJDMFUMJWFͰγϯάϧτϯతͳΠϯλϑΣʔε
    ෭࡞༻࣮ߦΫϩʔδϟDBODFMͷఆٛ
    ෭࡞༻࣮ߦΫϩʔδϟEPXOMPBEͷఆٛ

    View Slide

  15. MJWFͷݺͼग़͠͸&OWJSPONFOUͰ
    lMJWFzͷݴ༿ͷҙຯ͸Α͘Θ͔Βͳ͍
    QSFWJFXʹ΋MJWF͸࢖͏ͷͰຊ൪༻ͬͯҙຯͰͳ͍
    MJWF/VNCFS'BDU GPS
    ͳͲ͸୯ʹ௨৴͢Δ͚ͩɻ
    ؂ࢹͳͲΛ͍ͯ͠ΔΘ͚Ͱ΋ͳ͍ɻ
    GBWPSJUF JEJT'BWPSJUF
    ΋BTZOD"GUFSͳͷͰඇಉظॲཧ

    View Slide

  16. Clientͷ෭࡞༻࣮ߦΫϩʔδϟͷ


    ݺͼग़͠

    View Slide

  17. ෭࡞༻࣮ߦΫϩʔδϟEPXOMPBEͷ࣮ߦ

    View Slide

  18. ཧ۶ͱͯ͠ɺ$PSF.PUJPOͷ
    TUBSU%FWJDF.PUJPO6QEBUFT VTJOH UP

    ͜Ε͸୺຤ͷϞʔγϣϯΛݕ஌͢Δͱಈ࡞͢ΔΫϩʔδϟɻ
    ͜ͷ෭࡞༻࣮ߦΫϩʔδϟ͸֎෦͔Βݺ͹Εͣɺ
    ಺෦Ͱ4VCTDSJCFS͕ΠϕϯτΛTFOEͯ͘͠ΕΔɻ

    View Slide

  19. ෭࡞༻࣮ߦΫϩʔδϟͷ಺෦ݺͼग़͠
    • ࣗಈͰԿ͔Λ؂ࢹͯ͠มԽ͕͋ͬͨΒAction͕ݺͼग़ͤΔ


    • Motion


    • Location


    • Core DataͷFetch Result Controller

    View Slide

  20. %PXOMPBE$MJFOUͷ"DUJPOΛ3FEVDFSʹ఻͑Δ

    View Slide

  21. ·ͱΊ
    • Action/ErrorΛݸผʹఆٛ


    • ෭࡞༻࣮ߦΫϩʔδϟ


    • ΫϩʔδϟΛReducer͕֎෦ݺͼग़͠


    • Ϋϩʔδϟ಺෦Ͱউखʹ࣮ߦͤͨ͞Γ

    View Slide