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

RxSwift in Practice

Motoki Narita
November 20, 2016

RxSwift in Practice

Motoki Narita

November 20, 2016
Tweet

More Decks by Motoki Narita

Other Decks in Technology

Transcript

  1. 3Y4XJGUJO1SBDUJDF
    J04Φʔϧελʔζ
    .PUPLJ/BSJUB
    !NPUPLJFF

    View Slide

  2. ࣗݾ঺հ
    w !NPUPLJFF
    w J04ΤϯδχΞ
    w ϝϧΧϦΞοςͷJ04Λ։ൃ
    w ωΫετʢ)0.&`4ʣˠι΢κ΢ʢ೥݄ʣ
    w ݸਓͰ΋झຯͰJ04ΞϓϦΛ։ൃ
    w J04%$+BQBOίΞελοϑ

    View Slide

  3. 3Y4XJGU࢖͍ͬͯ·͔͢

    View Slide

  4. ϝϧΧϦΞος͸શ໘తʹ
    3Y4XJGUΛ࠾༻ͯ͠։ൃ

    View Slide

  5. Ξος։ൃͷٕज़ɿ4XJGUͱ3Y4XJGUCZ4IJOJDIJSP0CB
    IUUQTTQFBLFSEFDLDPNCSJDLMJGFBUVUFLBJGBGBMTFKJTIVTXJGUUPSYTXJGU

    View Slide

  6. ͍͍ͩͨ4XJGUͰॻ͔Ε͍ͯΔ
    ˞0CKFDUJWF$͸ϥΠϒϥϦͳͲ

    View Slide

  7. ൒೥લʜ

    View Slide

  8. ձࣾʢલ৬ʣͰ3Y4XJGUษڧձ
    w ౰࣌ͳΜͱͳ͘ྲྀߦ͍ͬͯͨ
    w ࣾ಺ͷ༗ࢤͰʢۀ຿֎ʣ
    w ຖि݄༵ேʢʙʣʹू·ͬͯษڧձ
    w 1MBZHSPVOEͰجຊతͳΦϖϨʔλΛֶͿ
    w &YBNQMFTΛݟΔ

    View Slide

  9. ճ͘Β͍΍ͬͯΈͨײ૝
    w ࣮ફతͳίʔυΛॻ͍ͯਐΊͨํ͕ྑͦ͞͏
    w ந৅౓͕ߴ͘ɺͳΜͷͨΊʹ3Y4XJGUΛ࢖͏ͷ͔ɺԿ͕ྑ
    ͘ͳΔͷ͔ɺཧղͰ͖͍ͯͳ͔ͬͨ
    w ϝϯόʔʹ΋ཧղͯ͠໯͏ඞཁ͕͋Γͦ͏

    View Slide

  10. ʮผʹಋೖ͠ͳͯ͘΋͍͍͔ʯ
    ͱࢥͬͨ൒೥ޙʜ

    View Slide

  11. స৬ͯ͠3Y4XJGUΛϑϧͰ࢖͏͜ͱʹ

    View Slide

  12. ຊ֨తʹ3Y4XJGUͰ։ൃΛ࢝Ίͯϲ݄ͷ
    φϚͷ੠Λ͓ಧ͚͠·͢

    View Slide

  13. 3Y4XJGUʹ͍ͭͯ

    View Slide

  14. 3Y4XJGU
    w ϦΞΫςΟϒϓϩάϥϛϯάΛ4XJGUͰॻͨ͘Ίͷ

    ϥΠϒϥϦ
    w ϚΠΫϩιϑτ͕/&5'SBNFXPSLʹ޲͚ʹ

    ϦϦʔεͨ͠3FBDUJWF&YUFOTJPOTʢ3YʣϥΠϒϥϦ
    Ͱ͋Δ3Y/&5 Ҿ༻IUUQXXXCVJMEJOTJEFSOFUDPMVNOLBXBJZPTIJGVNJ

    ͔Β೿ੜ
    w 4XJGUҎ֎ʹ΋3Y+BWBɺ3Y+4ͳͲͷ༷ʑͳݴޠʹ

    ೿ੜ

    View Slide

  15. Ξος։ൃͷٕज़ɿ4XJGUͱ3Y4XJGUCZ4IJOJDIJSP0CB
    IUUQTTQFBLFSEFDLDPNCSJDLMJGFBUVUFLBJGBGBMTFKJTIVTXJGUUPSYTXJGU

    View Slide

  16. ετϦʔϜ઒

    View Slide

  17. View Slide

  18. ετϦʔϜΛͲ͏ѻ͏͔ʁ
    ࡞ΔՃ޻؂ࢹ

    View Slide

  19. ;Ή;Ήɺ;Ή;Ήɻ
    ετϦʔϜΛ࡞ΔՃ޻͢Δ؂ࢹ͢Δͱ͍͏ࢹ఺Ͱ
    ϓϩάϥϛϯάΛߦ͏ͱɻ

    View Slide

  20. ͳΔ΄ͲɺͳΔ΄Ͳɻ
    ετϦʔϜΛ࡞ΔՃ޻͢Δ؂ࢹ͢Δͱ͍͏ࢹ఺Ͱ
    ϓϩάϥϛϯάΛߦ͏ɻͳΔ΄ͲͰ͢Ͷʙɻ

    View Slide

  21. ͳΔ΄Ͳɺ·ͬͨ͘Θ͔ΒΜ

    View Slide

  22. Ͳ͏͍͏͜ͱʁ
    w ετϦʔϜΛ࡞Δʁ
    w ετϦʔϜΛՃ޻͢Δʁ
    w ετϦʔϜΛ؂ࢹ͢Δʁ

    View Slide

  23. ݱ৔ͰͲͷΑ͏ʹ࢖͍ͬͯΔͷ͔ʁ
    ઃܭʹͲͷΑ͏ʹӨڹΛ༩͍͑ͯΔͷ͔ʁ

    View Slide

  24. ͍·͋ΔॲཧΛͲͷΑ͏ʹ
    ॻ͖׵͑ΒΕΔͷ͔ʁ

    View Slide

  25. ࣮ࡍʹϦϦʔε͞Ε͍ͯΔɺ
    ͋ΔΧϝϥΞϓϦͷ࣮૷Λ3Yʹॻ͖׵͑ͯΈΔ

    View Slide

  26. ͋ΔΧϝϥΞϓϦʹ͍ͭͯ
    w ڈ೥࡞ͬͨࣗ෼ͷΞϓϦ
    w Χϝϥ͔Βͷೖྗө૾ʹϑΟϧλʔΛ͔͚ͯϦΞϧ
    λΠϜͰϓϨϏϡʔͰ͖Δ
    w ࡱӨ͢ΔͱϑΟϧλʔՃ޻͞Εͨঢ়ଶͷը૾͕อଘ
    ͞ΕΔ

    View Slide

  27. View Slide

  28. Ϙλϯλοϓ
    ϩʔσΟϯάදࣔɺ

    ɹը૾ΛΩϟϓνϟɺอଘ͢Δ
    ը૾อଘޙɺϩʔσΟϯάΛ

    ɹඇදࣔʹͯ͠ϑΟϧλʔΛมߋ

    View Slide

  29. ௨ৗͷ࣮૷
    Ϙλϯ͕ԡ͞ΕͨࡍʹҎԼͷ
    ॲཧΛߦ͏ϝιου࡞Δ
    ը૾ΛΩϟϓνϟͯ͠อଘ͢Δ
    ͕ऴྃͨ͠ΒϩʔσΟϯάඇ
    දࣔ
    ͱಉ࣌ʹϑΟϧλʔΛมߋ
    Ϙλϯλοϓ
    Ϙλϯλοϓޙɺ

    ը૾ΛΩϟϓνϟɺอଘ͢Δ
    ը૾Λอଘ͞ΕΔ·Ͱ

    ϩʔσΟϯάදࣔ
    ը૾อଘޙʹ

    ϑΟϧλʔΛมߋ

    View Slide

  30. ࣮ࡍͷίʔυ
    Λ ͔ͳΓϚγʹͨ͠΋ͷ

    View Slide

  31. Ϙλϯ͕ԡ͞ΕͨΒϩʔσΟϯάදࣔ
    ࣮ࡍͷίʔυ
    Λ ͔ͳΓϚγʹͨ͠΋ͷ

    View Slide

  32. Ωϟϓνϟ
    ࣮ࡍͷίʔυ
    Λ ͔ͳΓϚγʹͨ͠΋ͷ

    View Slide

  33. ࣮ࡍͷίʔυ
    Λ ͔ͳΓϚγʹͨ͠΋ͷ
    Ωϟϓνϟऴྃޙɺ੒ޭͰ͋Ε͹ϩʔσΟϯάඇදࣔɺΤϑΣΫτΛมߋ

    View Slide

  34. ࣮ࡍͷίʔυ
    Λ ͔ͳΓϚγʹͨ͠΋ͷ
    ΩϟϓνϟͰ͖ͳ͔ͬͨ৔߹͸Τϥʔදࣔ

    View Slide

  35. ௨ৗͷ࣮૷
    Ϙλϯλοϓ
    Ϙλϯλοϓޙɺ

    ը૾ΛΩϟϓνϟɺอଘ͢Δ
    ը૾Λอଘ͞ΕΔ·Ͱ

    ϩʔσΟϯάදࣔ
    ը૾อଘޙʹ

    ϑΟϧλʔΛมߋ
    Ϙλϯ͕ԡ͞ΕͨࡍʹҎԼͷ
    ॲཧΛߦ͏ϝιου࡞Δ
    ը૾ΛΩϟϓνϟͯ͠อଘ͢Δ
    ͕ऴྃͨ͠ΒϩʔσΟϯάඇ
    දࣔ
    ͱಉ࣌ʹϑΟϧλʔΛมߋ

    View Slide

  36. ετϦʔϜͰߟ͑Δ

    View Slide

  37. View Slide

  38. ετϦʔϜͰߟ͑ͯΈΔ
    Ϙλϯλοϓ
    Ϙλϯλοϓޙɺ

    ը૾ΛΩϟϓνϟɺอଘ͢Δ
    ը૾Λอଘ͞ΕΔ·Ͱ

    ϩʔσΟϯάදࣔ
    ը૾อଘޙʹ

    ϑΟϧλʔΛมߋ

    View Slide

  39. Ϙλϯλοϓ
    ϩʔσΟϯάදࣔɺ

    ɹը૾ΛΩϟϓνϟɺอଘ͢Δ
    ը૾อଘޙɺϩʔσΟϯάΛ

    ɹඇදࣔʹͯ͠ϑΟϧλʔΛมߋ

    View Slide

  40. ετϦʔϜͰߟ͑ͯΈΔ
    Ϙλϯͷλοϓ͕ΠϕϯτͷτϦΨʔʹͳΔ
    Ϙλϯλοϓ
    Ϙλϯλοϓޙɺ

    ը૾ΛΩϟϓνϟɺอଘ͢Δ
    ը૾Λอଘ͞ΕΔ·Ͱ

    ϩʔσΟϯάදࣔ
    ը૾อଘޙʹ

    ϑΟϧλʔΛมߋ

    View Slide

  41. Ϙλϯλοϓ
    Ϙλϯλοϓޙɺ

    ը૾ΛΩϟϓνϟɺอଘ͢Δ
    ը૾Λอଘ͞ΕΔ·Ͱ

    ϩʔσΟϯάදࣔ
    ը૾อଘޙʹ

    ϑΟϧλʔΛมߋ
    ετϦʔϜͰߟ͑ͯΈΔ
    ը૾Ωϟϓνϟͷঢ়ଶભҠ

    View Slide

  42. ετϦʔϜͰߟ͑ͯΈΔ
    ը૾ͷΩϟϓνϟঢ়ଶͷ

    ετϦʔϜ
    Ϙλϯλοϓ
    Ϙλϯλοϓޙɺ

    ը૾ΛΩϟϓνϟɺอଘ͢Δ
    ը૾Λอଘ͞ΕΔ·Ͱ

    ϩʔσΟϯάදࣔ
    ը૾อଘޙʹ

    ϑΟϧλʔΛมߋ

    View Slide

  43. ετϦʔϜͰߟ͑ͯΈΔ
    ը૾ͷΩϟϓνϟঢ়ଶͷ

    ετϦʔϜ
    Ϙλϯλοϓ
    Ϙλϯλοϓޙɺ

    ը૾ΛΩϟϓνϟɺอଘ͢Δ
    ը૾Λอଘ͞ΕΔ·Ͱ

    ϩʔσΟϯάදࣔ
    ը૾อଘޙʹ

    ϑΟϧλʔΛมߋ

    View Slide

  44. ίʔυ

    View Slide

  45. ίʔυ
    ϘλϯͷετϦʔϜΛը૾อଘετϦʔϜʹม׵

    View Slide

  46. Ϙλϯλοϓ 7PJE
    qBU.BQϘλϯλοϓˠը૾ͷΩϟϓνϟঢ়ଶʢ(16*NBHF4UJMM$BNFSBͷ3Y֦ு͕ߦ͏ʣ
    Ωϟϓνϟঢ়ଶ EFGBVMU DBQUVSJOH DBQUVSFE
    ϘλϯλοϓΠϕϯτ͔ΒΩϟϓνϟঢ়ଶͷετϦʔϜ΁
    EFGBVMU

    View Slide

  47. ίʔυ
    ΩϟϓνϟதͰ͋Ε͹ϩʔσΟϯάΛදࣔ

    View Slide

  48. NBQ\DBQUVSJOH^
    Ωϟϓνϟঢ়ଶ EFGBVMU DBQUVSJOH DBQUVSFE
    ϩʔσΟϯάதͰ͋Δ͜ͱΛද͢ετϦʔϜ
    Ωϟϓνϟத GBMTF USVF GBMTF
    EFGBVMU
    GBMTF

    View Slide

  49. ίʔυ
    ΩϟϓνϟதͰ͋Ε͹ϩʔσΟϯάΛදࣔ

    View Slide

  50. ίʔυ
    Ωϟϓνϟ׬ྃޙΤϑΣΫτΛมߋ

    View Slide

  51. Ωϟϓνϟঢ়ଶ EFGBVMU DBQUVSJOH DBQUVSFE
    Ωϟϓνϟঢ়ଶͷετϦʔϜ
    ΤϑΣΫτΛมߋ

    View Slide

  52. ίʔυ

    View Slide

  53. ϢʔβʔͷೖྗɺมԽ͢Δঢ়ଶͳͲΛ
    ετϦʔϜʹྲྀ͠ɺͦͷ஋ΛͲ͏ѻ͏͔ʁ
    ͱ͍͏؍఺͔Βߟ͑Δ

    View Slide

  54. ίʔυΛൺֱ

    View Slide

  55. ௨ৗͷίʔυͷ࣮૷࣌ͷྲྀΕ
    ࣮૷͠Α

    View Slide

  56. ௨ৗͷίʔυͷ࣮૷࣌ͷྲྀΕ
    ϩʔσΟϯάΛ
    දࣔͩ

    View Slide

  57. ௨ৗͷίʔυͷ࣮૷࣌ͷྲྀΕ
    Ωϟϓνϟ͠Α

    View Slide

  58. ௨ৗͷίʔυͷ࣮૷࣌ͷྲྀΕ
    SFTVMUͰ෼ذͯ͠ʜ

    View Slide

  59. ௨ৗͷίʔυͷ࣮૷࣌ͷྲྀΕ
    ύλʔϯΛ໢ཏͬͱ

    View Slide

  60. ௨ৗͷίʔυͷ࣮૷࣌ͷྲྀΕ
    ͑ʔͬͱɺͲ͏͢Δ
    Μ͚ͩͬʁ

    View Slide

  61. ௨ৗͷίʔυͷ࣮૷࣌ͷྲྀΕ
    ͋ɺͦ͏ͩɻTVDDFTTͰ
    ΤϑΣΫτΛม͑ΔΜͩ

    View Slide

  62. ௨ৗͷίʔυͷ࣮૷࣌ͷྲྀΕ
    ͦΜͰɺΤϥʔදࣔͱɻ
    0,ɺͰ͖ͨ

    View Slide

  63. ࣮ػ֬ೝ

    View Slide

  64. ௨ৗͷίʔυͷ࣮૷࣌ͷྲྀΕ
    ͋ɺϩʔσΟϯάফͯ͠
    ͳ͔ͬͨʜ

    View Slide

  65. ௨ৗͷίʔυͷ࣮૷࣌ͷྲྀΕ
    ͜ΕͰ0,

    View Slide

  66. Α͋͘Δ

    View Slide

  67. 3Y4XJGUͰͷ࣮૷࣌ͷྲྀΕ
    ࣮૷͠Α

    View Slide

  68. 3Y4XJGUͰͷ࣮૷࣌ͷྲྀΕ
    ϘλϯͷλοϓΛΩϟϓ
    νϟঢ়ଶͷετϦʔϜʹ
    ม׵͢Δ

    View Slide

  69. 3Y4XJGUͰͷ࣮૷࣌ͷྲྀΕ
    ϩʔσΟϯάத͚ͩͷ

    ઒Ͱ΋࡞ͬͯCJOE͢Δ͔

    View Slide

  70. 3Y4XJGUͰͷ࣮૷࣌ͷྲྀΕ
    DBQUVSFEདྷͨΒΤϑΣ
    ΫτΛ੾Γସ͑Δͱ

    View Slide

  71. 3Y4XJGUͰͷ࣮૷࣌ͷྲྀΕ
    Τϥʔ͕དྷͨΒΤϥʔΛ
    දࣔɻͰ͖ͨ

    View Slide

  72. ετϦʔϜʢͷ࡞੒Ճ޻؂ࢹʣʹ
    ϑΥʔΧε͍ͯ͠Δ

    View Slide

  73. ͳΜͱͳ͓͘෼͔Γ͍͚ͨͩͨͰ͠ΐ͏͔

    View Slide

  74. Α͠ಋೖ͠Α͏
    ͱࢥͬͨํɺͪΐͬͱ଴͍ͬͯͩ͘͞

    View Slide

  75. ຊ౰ʹಋೖ͢Δඞཁ͸͋Γ·͔͢ʁ

    View Slide

  76. ಛʹ໰୊͸ͳ͍ɻΘ͟Θ͟3Yʹ͢Δඞཁ͸͋Δͷ͔ʁ

    View Slide

  77. 3Y͸ۜͷ஄ؙͰ͸ͳ͍

    View Slide

  78. ྑ͍ͱ͜Ζɺѱ͍ͱ͜Ζ

    ʢ૊৫ͱͯ͠Ͱ͸ͳ͘ݸਓͱͯ͠ͷײ૝ʣ

    View Slide

  79. ྑ͍ͱ͜Ζ
    w ίʔυ͕ಡΈ΍͍͢
    w ͦΕ͕ϢʔβʔͷೖྗͰ͋ΕɺจࣈྻͰ͋Εɺඇಉ
    ظॲཧͰ͋ΕͳΜͰ͋ͬͯ΋ɺετϦʔϜΛͲ͏ѻ
    ͏͔ͱ͍͏఺ʹूத࣮ͯ͠૷͕Ͱ͖ΔΑ͏ʹͳͬͨ
    w ඇಉظॲཧͷ࣮૷͸ҎલΑΓ΋ָʹͳͬͨؾ͕͢Δ

    View Slide

  80. ѱ͍ͱ͜Ζ
    w ֶशίετ͕ߴ͍
    w ·͖ͩΕ͍ͳ઒ετϦʔϜ͕࡞Εͳ͍
    w 3Y.BSCMFTΛݟͨΓɺطଘͷιʔεΛಡΜͩΓͯ͠ଟ͘ͷ͜ͱΛֶ
    ΜͰ͍Δ࠷த
    w ϝϯόʔͷೖΕସΘΓ͕ଟ͍ͱݫͦ͠͏
    w ϑϨʔϜϫʔΫʹେ͖͘ґଘ͢Δ͜ͱʹͳΔ
    w Ծʹ3Y͕ϝϯςφϯε͞Εͳ͘ͳͬͨ৔߹Ͳ͏ͳΔʁ
    w ʢͨͩ͠3Yࣗମʹେ͖ͳܽ఺͸ͳ͍ͱࢥ͏ʣ

    View Slide

  81. ι΢κ΢ͰͷऔΓ૊Έ

    View Slide

  82. IUUQTTQFBLFSEFDLDPNCSJDLMJGFSFBDUJWFDPDPBGBMTFZVSVJTIBPKJFUPNFSVLBSJEFGBMTFIVPZPOHTIJMJ

    View Slide

  83. IUUQTTQFBLFSEFDLDPNCSJDLMJGFSFBDUJWFDPDPBGBMTFZVSVJTIBPKJFUPNFSVLBSJEFGBMTFIVPZPOHTIJMJ

    View Slide

  84. TVTIJTIPLVOJʹΑΔϨϏϡʔΞαΠϯ
    w ι΢κ΢Ͱ͸TVTIJTIPLVOJͱ͍͏#05͕

    ιʔεϨϏϡʔΛϥϯμϜͰΞαΠϯͯ͘͠ΕΔ
    w νʔϜྗͷఈ্͛

    View Slide

  85. ·ͱΊ
    w 3Y4XJGUʹΑͬͯετϦʔϜΛͲ͏ѻ͏͔ͱ͍͏؍఺͔Βઃܭɾ࣮૷
    Λߦ͏Α͏ʹͳͬͨ
    w ঢ়ଶͷมԽʹ೰·͞Ε͍ͯΔ৔߹ɺ༗༻ͳπʔϧʹͳΔ͔΋͠Ε·
    ͤΜ
    w ۜͷ஄ؙͰ͸ͳ͍
    w νʔϜόϥϯεɺϝϯόʔͷೖΕସΘΓͷස౓ͳͲͳͲɺ

    ֶशίετͷ؍఺͔Βߟྀ͢΂͖͜ͱ͸ଟ͍
    w طଘͷίʔυ͕͋Δ৔߹͸ɺࠓ೔ݟ͖ͯͨΑ͏ʹɺطଘͷ࣮૷Λε
    τϦʔϜΛ؍఺ʹઃܭɾ࣮૷ͯ͠Έͯ޾ͤʹͳΕΔ͔Λ͔֬ΊͯΈ
    Δͱྑ͍͔΋

    View Slide

  86. ࢀߟࢿྉ
    w IUUQTTQFBLFSEFDLDPNCSJDLMJGFSFBDUJWFDPDPBGBMTFZVSVJTIBP
    KJFUPNFSVLBSJEFGBMTFIVPZPOHTIJMJ
    w IUUQTTQFBLFSEFDLDPNCSJDLMJGFBUVUFLBJGBGBMTFKJTIVTXJGU
    UPSYTXJGU
    w IUUQTTQFBLFSEFDLDPNCSJDLMJGFTXJGUEPUEFSYTXJGU
    SFBDULJUSFBDUJWFDPDPBXPTIJUVUFNJUB
    w IUUQTTQFBLFSEFDLDPNJTILBXBSYUFTUT
    w IUUQTTQFBLFSEFDLDPNJTILBXBSYTXJGUQMVTNWWN

    View Slide

  87. ऴΘΓ

    View Slide