Save 37% off PRO during our Black Friday Sale! »

KotlinとReduxをAndroidアプリに導入したら

224e8a32760b146c3184f7451149efca?s=47 Fukui Atsuko
September 01, 2017

 KotlinとReduxをAndroidアプリに導入したら

KotlinとReduxをAndroidアプリに導入したら

KotlinとReduxをAndroidアプリに導入して得られた知見を共有します。

224e8a32760b146c3184f7451149efca?s=128

Fukui Atsuko

September 01, 2017
Tweet

Transcript

  1. ,PUMJOͱ3FEVYΛ "OESPJEΞϓϦʹಋೖͨ͠Β  3FUUZ5FDI/JHIU!3FUUZΦϑΟε

  2. "CPVUNF • ෱Ҫರࢠ / Fukui Atsuko • @muumuumuumuu • Retty,

    Inc. • AndroidΤϯδχΞ • ͦͷલ͸૊ΈࠐΈܥAndroidͷ͓࢓ࣄ
  3. ࠃ಺/P໊࣮άϧϝαʔϏε3FUUZͷӡӦ ೥ઃཱ XFCͱΞϓϦͰαʔϏεల։ γϯάϧυϝΠϯ εϚϗϑΝʔετ ݄ؒར༻ऀ਺ສ

  4. ͦΜͳ3FUUZͷ "OESPJEνʔϜ͕࠷ۙࢼ͍ͯ͠Δ ,PUMJOͱ3FEVYͷ૊Έ߹Θͤ ʹ͍͓ͭͯ࿩͠͠·͢ɻ

  5. "HFOEB • લఏ஌ࣝ: Kotlin / Redux ʹ͍ͭͯ • ಘΒΕͨ஌ݟ •

    ·ͩ೰ΜͰ͍Δ෦෼
  6. ,PUMJO

  7. ,PUMJO • 2011೥ʹJetBrain͔ࣾΒൃද͞Εͨϓϩάϥ ϛϯάݴޠ • Better Java ͳݴޠ • JavaͱڞଘՄೳ

    • ؔ਺ܕϓϩάϥϛϯάͷελΠϧΛαϙʔτ • ͔Θ͍͍
  8. 3FEVY

  9. 3FEVY • React js ͔Βग़͖ͯͨઃܭࢥ૝ • Three Principles • Single

    source of truth • State is read-only • Changes are made with pure functions
  10. 3FEVY

  11. ಋೖʹ͋ͨͬͯ

  12. 3FEVY-JCSBSZ • ࣾ಺Ͱ࡞ͬͯެ։͠·ͨ͠ • https://github.com/RettyEng/redux-kt • ReSwiftΛϦεϖΫτ • طଘͷLibrary΋ݕ౼͚ͨ͠ͲσϑΝΫτ͕ͳ ͍ঢ়ଶ

  13. %FNP

  14. 3FEVY

  15. ͠͹Β͘ࢼͯ͠ಘΒΕͨ஌ݟ

  16. ͕͜͜خ͍͠ • Activity/Fragment/ViewΛލ͍Ͱ৘ใΛڞ༗ Ͱ͖Δ • StateͷมߋΛ͢Δ෦෼͕Viewͷߋ৽ͷ੹຿ ͔Β׬શʹ෼཭Ͱ͖Δ • View͕Ͳ͏มΘΔ͔͸ؔ৺ͷର৅֎ •

    APIίʔϧΛ଴ͨͣը໘දࣔͰ͖Δ
  17. ޲͍͍ͯΔαʔϏε • ෳ਺ͷը໘Ͱ৘ใΛڞ༗͍ͯ͠Δ • ը໘ભҠͷύλʔϯ͕ෳ਺͋Δ

  18. ޲͍͍ͯͳ͍αʔϏε • ΞϓϦ֎͔ΒϦΞϧλΠϜʹ৘ใ͕มΘΓ͏ Δ • ෆشൃ৘ใΛͨ͘͞Μѻ͏ඞཁ͕͋Δ • State͕࣋ͭ΂͖৘ใͷαΠζ͕େ͖͍

  19. ,PUMJOͱ૬ੑͷྑ͞  • Stateͷ࣋ͭ஋͕nullڐ༰͔Ͳ͏͔ίʔυͰࣔ ͤΔ • Viewଆͷίʔυ͕ॻ͖΍͍͢

  20. ,PUMJOͱ૬ੑͷྑ͞  • Test͕ॻ͖΍͍͢ • Reducer͕७ਮؔ਺ͳͷͰmockͳ͠Ͱςε τ͕ॻ͚Δ

  21. ,PUMJOͱ૬ੑͷྑ͞  • Stateͷૢ࡞͕ॻ͖΍͍͢ • dataΫϥεͷcopy()ϝιουͰมߋ͢ΔՕॴ Λ໌ࣔతʹࢦఆͰ͖Δ

  22. ·ͩ೰ΜͰ͍Δͱ͜Ζ

  23. 4UBUFͷ࣋ͪํ • Ͳͷ৘ใΛͲ͏͍͏෩ʹStateͱͯ͠อ࣋͢Δ ͔ͱͯ΋೰Ή • ͓ͦΒ͘ਖ਼ղ͸ͳ͍ • αʔϏε΍ΞϓϦʹΑͬͯมΘͬͯ͘Δ • Ͱ΋։ൃऀؒͰ͋Δఔ౓ҙࣝ߹Θ͕ͤඞཁ

  24. 4UBUFͷੜଘظؒ • Applicationͱಉ͡ʢΦϯϝϞϦͳ৘ใʣ • όοΫάϥϯυʹճͬͨ࣌ʹΞϓϦϓϩηε ͕kill͞ΕΔͱҰॹʹ৘ใ͕ࣦΘΕΔ • ͍ࣦͭΘΕͯ΋͍͍৘ใ͔͠ࡌͤͳ͍ • SharedPreference͔αʔόʹୀආ͢Δ

  25. ϝϞϦੜଘظؒ໰୊ • Application͕ੜ͖͍ͯΔݶΓղ์͞Εͳ͍ ϝϞϦͨͪ • Retty͸ॏ͍ͨσʔλΛอ࣋͢Δέʔε͕ͳ͍ ͷͰࠓͷॴେৎ෉

  26. ·ͱΊ

  27. ·ͱΊ • Kotlin / Redux ͷ૊Έ߹ΘͤΛಋೖͯ֓͠Ͷ ѱ͍ͱ͜Ζ΋ݟ౰ͨΒͣ޾ͤͰ͢ • ͨͩ͠αʔϏεͷੑ࣭ͱѻ͏σʔλʹΑΓ· ͢

    • Ұ౓ࢼͯ͠ΈΔͷ͸ΞϦʂ • ͥͻLibrary࢖ͬͯΈ͍ͯͩ͘͞ʂ٩( 'ω' )و
  28. ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ

  29. ͔͜͜Βઌ͸͕࣌ؒ͋Ε͹

  30. 'MVYʹ͠Α͏͔೰Ή໰୊ • Reduxͱಉ͘͡σʔλͷྲྀΕ͕Ұํ௨ߦ • Redux͸Flux͔Β೿ੜͨ͠ߟ͑ํ • ͨͩ͠StoreΛෳ਺࣋ͪ͏Δ

  31. 'MVYʹ͠Α͏͔೰Ή໰୊ • ActivityΛލ͕ͳ͍͚Ͳɺෳ਺ͷView Component Ͱ৘ใΛڞ༗͍ͨ͠ • ΞϓϦશମͷStoreʹͷͤΔ৘ใͱͯ͠͸ෆద੾ͳ ؾ͕͢Δ • ୯Ұػೳ͚ͩͰ͔͠࢖Θͳ͍Store͕ཉ͘͠ͳΔ

    • ੜଘظؒ΋Activityʹ߹ΘͤΒΕΔͷͰίϯτ ϩʔϧ͠΍͍͢