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

Why use Redux in iOS

Why use Redux in iOS

yohei sugigami

March 22, 2018
Tweet

More Decks by yohei sugigami

Other Decks in Technology

Transcript

  1. ɹ
    ɹ
    Why use Redux in iOS
    ɹ
    ɹ
    ɹ
    iOS Flux/Reduxษڧձ
    2018/03/[email protected]
    Yohei Suginami ( @susieyy )

    View Slide

  2. Profile
    — Yohei Sugigami
    — susieyy
    — Twitter / Qiita / Github
    — New app development
    specialist
    — Clients
    — Folio.inc
    — New app developer
    — Wantedly.inc
    — Technical advisor

    View Slide

  3. ɹ
    ɹ
    ɹ
    ɹ
    Flux/Redux੝Γ্͕ͬͯ·͢Ͷʂ

    View Slide

  4. ɹ
    ɹ
    ɹ
    ɹ
    ϨΩγΛৼΓฦΔ

    View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. View Slide

  15. ɹ
    ɹ
    ɹ
    ɹ
    ೔ຊͰ΋࠾༻ࣄྫ͕૿͑ͯ·͢Ͷʂ

    View Slide

  16. ɹ
    ɹ
    ͳͥReduxͳͷ͔

    View Slide

  17. ɹ
    ɹ
    ΞϓϦ։ൃʹ͓͚Δ
    ࠷େͷ՝୊͸ɹɹɹ

    View Slide

  18. ɹ
    ɹ
    ෳࡶͰ͋Δ͜ͱ

    View Slide

  19. Ͳ͏γϯϓϧʹམͱ͠ࠐΉ͔ɹɹɹ
    ɹ
    ɹ
    ɹ
    ɹ
    ೺Ѳɾ؅ཧͰ͖ΔΑ͏ʹ͢Δ͔

    View Slide

  20. ΞϓϦ։ൃʹ͓͚Δෳࡶੑͱ͸
    खଓ͖తهड़ʹΑΔॲཧͷྲྀΕͷ೺Ѳͷ͠ʹ͘͞
    — σϦήʔτύλʔϯͷίʔϧόοΫ஍ࠈ
    — ϑΝοτίϯτϩʔϥʔ໰୊

    View Slide

  21. ΞϓϦ։ൃʹ͓͚Δෳࡶੑͱ͸
    Өڹൣғͷෆ͔֬͞΍ɺہॴԽ͞Εͣ޿ҬͳӨڹൣғ
    — γϯάϧτϯʢάϩʔόϧม਺ͷଟ༻ʣ

    View Slide

  22. ΞϓϦ։ൃʹ͓͚Δෳࡶੑͱ͸
    ଟ༷ͳঢ়ଶͷදݱͷͨΊʹଟ਺ͷ෼ذͱଟ਺ͷม਺ͷग़ݱ
    — ม਺͕มԽ͢ΔཁҼ͕఺ࡏԽ
    — ৚݅෼ذʹ͸࢓্༷ભҠ͠ͳ͍ܦ࿏΋ؚ·ΕΔ

    View Slide

  23. ॾѱͷࠜݯ͸MVC
    ෳࡶੑͷղܾࡦΛMVCʹมΘΔΞʔΩςΫνϟ΁ٻΊͨ
    — MVVMʢCʣʴFRP
    — CleanAcrhitecture / Viper
    — Flux / Redux

    View Slide

  24. MVVMʢCʣʴFRP
    ෳࡶੑ΁ͷରቂ
    — ϦΞΫςΟϒͳؔ਺ʹந৅Խ͠ɺ୺తͰએݴతͳهड़
    — ࿈ଓ͢Δ૬ޓ࡞༻Λѻ͍΍͍͢
    — ঢ়ଶอ࣋ͷͨΊͷม਺Λ࡟ݮ
    — ↑ RxͷετϦʔϜʹ಺แ
    — ඇಉظΛབྷΊͨॲཧͷՄಡੑߴ͍දݱྗ
    — εϐʔυײ͋Δ։ൃ

    View Slide

  25. MVVMʢCʣʴFRP
    σϝϦοτ
    — ߴ͍ͷந৅ԽʹΑΔهड़೉қ౓ͷ্ঢ
    — ෳࡶͳRxͷΦϖϨʔλʔΛۦ࢖͢Δ͜ͱͰ͔͑ͬͯڍಈ͕
    Θ͔Γʹ͍͘
    — ϚϧνεϨουͳॲཧ͸֤ετϦʔϜͰಠཱతʹಈ࡞͢Δ
    — هड़ྗ͸ߴ͍͕ಈ࡞ͷ೺Ѳɾσόοά͸͠ʹ͍͘

    View Slide

  26. CleanAcrhitecture / Viper
    ෳࡶੑ΁ͷରቂ
    — ΦϒδΣΫτࢦ޲ͷ੹຿෼ׂͰγϯϓϧʹམͱ͠ࠐΉ
    — ϨΠϠʔ෼ׂɾґଘͷࢦ޲ੑ
    — ϨΠϠʔͷΠϯλʔϑΣΠεͱ࣮૷ͷ෼཭ʹΑΔந৅Խ
    — νʔϜεέʔϥϏϦςΟͷ޲্

    View Slide

  27. CleanAcrhitecture / Viper
    σϝϦοτ
    — ৑௕ʹΑΔهड़ྔ͕૿͑Δίʔυ
    — ։ൃεϐʔυͷݮ଎
    — ঢ়ଶͱखଓ͖ΛΧϓηϧԽʹΑΔγϯϓϧԽͷݶք

    View Slide

  28. ɹ
    ɹ
    Reduxͱ͸Կ͔

    View Slide

  29. View Slide

  30. View Slide

  31. Մಡੑͷ޲্
    ॻ͘ίετΑΓ΋ɺಡΉίετΛԼ͛Δ
    — ಡΈ΍͘͢ɺ΍Γ͍ͨ͜ͱɾॲཧ͕೺Ѳ͠΍͍͢
    — Өڹൣғ͕ਪఆ͠΍͍͢
    — ϨϏϡʔ͠΍͍͢
    — εϐʔυײ͋Δ։ൃ
    — ΞϓϦن໛ͱνʔϜߏ੒ͷεέʔϥϏϦςΟͷ޲্

    View Slide

  32. Viewͱঢ়ଶͷ׬શͳΔ෼཭
    — ViewͷॲཧͰ͸ͦͷॠؒͷΞϓϦ಺ͷ͢΂ͯͷঢ়ଶ
    ʢState)͕ҰҙͰ͋Δ͜ͱΛอূ͞ΕΔ
    — State͸Πϛϡʔλϒϧ
    — ͦͷॠؒͷঢ়ଶʹରͯ͠ඇಉظͷհೖ͕ͳ͍
    — ViewʹState౉Δͱදࣔ͸Ұҙʹܾ·Δ
    — View͕ؔ਺ܕࢦ޲ʹͳΔ

    View Slide

  33. ७ਮؔ਺
    — ೖྗʹରͯ݁͠Ռ͕ҰҙͰ͋Δ
    — ϓϩάϥϛϯάʹ͓͍ͯϩδοΫΛγϯϓϧѻ͏ͨΊͷۃ
    Έ
    — ෭࡞༻ഉআͱ෼཭
    — ςελϏϦςΟ޲্

    View Slide

  34. Ϛγϯύϫʔ্͕͕ͬͨ͜ͱʹΑΔ෋߽తͳΞʔΩςΫνϟ
    ϚγϯύϫʔΛ͏·͘ར༻͢Δ͜ͱͰγϯϓϧΛ࣮ݱ͍ͯ͠Δ
    ॲཧͷ௚ྻԽ
    - ϝΠϯεϨου্ͰϏδωεϩδοΫ(ߋ৽ॲཧ)ͷಈ࡞
    - γϯάϧϝΠϯεϨου͚ͩͰಈ࡞͍ͯ͠ΔΑ͏ͳײ֮ͰΞ
    ϓϦ͕ॻ͚Δ
    Viewͷޮ཰తͳߋ৽ͷͨΊͷࠩ෼ݕ஌ίετ
    - ϏδωεϩδοΫ͸ॲཧޙͷViewͷӨڹൣғΛؔ஌͠ͳ͍

    View Slide

  35. Swi!ݴޠͱͷ૬ੑͷྑ͞
    — TypeSafe
    — Struct / Immutable
    — ComputedProperty
    — Enum / PatternMatch
    — Generics
    — Functional Oriented
    — Protocol Oriented

    View Slide

  36. σόοά༰қੑ
    ɹ
    DEMO

    View Slide

  37. Redux՝୊఺
    — ΞΫγϣϯͷॱংੑΛ੍໿͚͍ͮͨʢεςʔτϚγϯʣ
    — Actionϧʔϓ໰୊
    — StateͷΠχγϟϥΠζͱΦϓγϣϯφϧ
    — ϝϞϦϚωδϝϯτʢը໘ഁغ࣌ʹ෦෼Stateͷഁغʣ
    — Viewͷޮ཰తͳߋ৽ͷͨΊͷࠩ෼ߋ৽ʢվળͷ༨஍͋Γʣ

    View Slide

  38. Redux͸ۜͷ஄ؙͰ͸ͳ͍
    ɹ
    ɹ
    ɹ
    దࡐ͔Ͳ͏͔͸ɹɹɹɹɹ
    ΞϓϦཁ݅ɺ඼࣭ཁ݅ɹɹɹɹ
    νʔϜߏ੒ɺ։ൃظؒ࣍ୈɹɹ

    View Slide

  39. ·ͱΊ
    Redux͸ඇৗʹݫ֨ɾݎ࿚Ͱ͋ΓγϯϓϧͳϩδοΫܗ੒
    — ७ਮؔ਺
    — Πϛϡʔλϒϧ
    — ୯Ұࢦ޲ੑϑϩʔ ʢ ϚϧνεϨουͷہॴԽ ʣ
    — ෭࡞༻ʢඇಉظॲཧʣͷہॴԽ

    View Slide

  40. ߹ΘͤͯಡΈ͍࣮ͨફฤ
    ɹ
    Redux+RxΛ׆༻ͨ͠ΞϓϦΞʔ
    ΩςΫνϟ
    CA.swi! #5
    2018/01/[email protected]גࣜձࣾαΠόʔΤʔδΣϯτ
    Yohei Suginami ( @susieyy )

    View Slide