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

Architecture_for_mobile_development.pdf

itome
March 14, 2019

 Architecture_for_mobile_development.pdf

itome

March 14, 2019
Tweet

More Decks by itome

Other Decks in Technology

Transcript

  1.  ϞόΠϧ։ൃͷͨΊͷ
    ΞʔΩςΫνϟೖ໳
    @AbemaTV Hack

    View full-size slide

  2. 2
    About me
    ௩ຊ෢ࢤ
    https://twitter.com/itometeam
    https://github.com/itome
    https://medium.com/@itometeam
    0.5min

    View full-size slide

  3. ΞʔΩςΫνϟͬͯͳʹʁ
    5min

    View full-size slide

  4. 4
    ΞʔΩςΫνϟͬͯͳʹʁ
    5min
    ΞʔΩςΫνϟ(ઃܭ)ʹ͸ͨ͘͞Μͷҙຯ͕͋Δ
    ɾCPUͳͲϋʔυ΢ΣΞͷ੍ޚͷํࣜͱͯ͠ͷΞʔΩςΫνϟ
    ɾωοτϫʔΫͷΞʔΩςΫνϟ
    ɾιϑτ΢ΣΞͷΞʔΩςΫνϟ
    ɾ…etc
    ←ࠓ೔͸͜͜ʹ͍ͭͯ࿩͠·͢

    View full-size slide

  5. 5
    ΞʔΩςΫνϟͬͯͳʹʁ
    5min
    ͦͷ·͑ʹ

    View full-size slide

  6. 6
    ΞʔΩςΫνϟͬͯͳʹʁ
    5min
    ͦ΋ͦ΋ΞʔΩςΫνϟͬͯ
    Ͳ͏ͯ͠ඞཁͳΜͩΖ͏ʁ

    View full-size slide

  7. ΞʔΩςΫνϟ͕ਁಁ͢Δલͷ
    ιϑτ΢ΣΞ։ൃ
    3min

    View full-size slide

  8. 8
    ΞʔΩςΫνϟ͕ਁಁ͢Δલͷιϑτ΢ΣΞ։ൃ
    3min
    ΋ͱ΋ͱϓϩάϥϛϯάʹ͸ଟ͘ͷϕετɾ
    ϓϥΫςΟεʢεϜʔζͳ։ൃɾอकɾӡ༻
    ͷͨΊʹकΔ΂͖ϧʔϧʣ͕͋Δ

    View full-size slide

  9. 9
    ΞʔΩςΫνϟ͕ਁಁ͢Δલͷιϑτ΢ΣΞ։ൃ
    3min
    ྫ͑͹ɿ ෼ׂ౷࣏ʢDivide and Conquerʣ
    ͦͷ··Ͱ͸ղܾ͢Δ͜ͱ͕೉͍͠ʮେ͖ͳ໰୊ʯ͸ɺ
    ͍͔ͭ͘ͷʮখ͞ͳ໰୊ʯʹ෼ׂͯ͠ɺݸผʹղܾ͢Δ

    View full-size slide

  10. 10
    ΞʔΩςΫνϟ͕ਁಁ͢Δલͷιϑτ΢ΣΞ։ൃ
    3min
    ྫ͑͹ɿ ಉܕݪཧʢIsomorphism Principleʣ
    ʮܗʹͩ͜ΘΔʯͱ͍͏ݪཧɺຊ࣭తʹಉ͜͡ͱ͸ιʔείʔυͰ΋
    ಉ͡Α͏ʹѻ͏͜ͱͰʮҟ෺ʯΛ໨ཱͪ΍͘͢͢Δɻ

    View full-size slide

  11. 11
    ΞʔΩςΫνϟ͕ਁಁ͢Δલͷιϑτ΢ΣΞ։ൃ
    3min
    ྫ͑͹ɿ ઢܗݪཧʢLinearity Principleʣ
    ॲཧͷྲྀΕΛ௚ઢʹ͢Δݪଇɻ͋Δػೳ͸͍͔ͭ͘ͷখ͞ͳػೳΛ
    ௚ઢతʹॏͶ߹Θ࣮ͤͯݱ͢Δͷ͕Α͍ɻ

    View full-size slide

  12. 12
    ΞʔΩςΫνϟ͕ਁಁ͢Δલͷιϑτ΢ΣΞ։ൃ
    3min
    ྫ͑͹ɿ ୯Ұ੹೚ݪଇ
    มߋ͢Δཧ༝͕ಉ͡΋ͷ͸ूΊɺมߋ͢Δཧ༝͕ҧ͏΋ͷ͸
    ෼͚Δݪଇɻ1ͭͷϞδϡʔϧɺΫϥε΍ؔ਺ʹมߋ͢Δཧ༝͕
    ̎ͭҎ্͋ͬͯ͸͍͚ͳ͍ɻ

    View full-size slide

  13. 13
    ΞʔΩςΫνϟ͕ਁಁ͢Δલͷιϑτ΢ΣΞ։ൃ
    3min
    ଞʹ΋ɿ
    DRYݪଇ
    KISSݪଇ
    ڽूɾ݁߹ݪଇ
    ։์ɾด࠯ݪଇ
    ݁ՌͷہॴԽ
    ܁Γฦ͠ͷ࠷খԽ
    ϩδοΫͱσʔλͷҰମԽ
    ରশੑݪଇ
    ϙϦϞʔϑΟζϜ
    ৘ใͷӅṭ
    ΧϓηϧԽ
    ׬શੑɾॆ଍ੑɾϓϦϛςΟϒ
    ؔ৺ͷ෼཭
    ϙϦγʔͱ࣮૷ͷ෼཭
    ࢀরͷҰ఺ੑ
    ςετ༰қੑ
    ୯७ݪཧ
    ໌ূݪཧ
    ڻ͖࠷খͷݪଇ
    ৑௕ੑ
    ࢀরಁաੑ
    ݆໿ͷݪଇ
    ϘʔΠεΧ΢τϧʔϧ
    GOFσβΠϯύλʔϯ
    σϧϝϧͷ๏ଇ
    SOLIDݪଇ
    ҆ఆੑͷݪଇ
    ֊૚ݪཧ
    ґଘੑٯసͷݪଇ
    ૬ޓӡ༻ੑ
    ࠶ར༻
    ΠϯλʔϑΣ
    ௚ަੑ
    ܖ໿ʹΑ
    ๷ޚతϓ
    Ӫ
    δϣ

    View full-size slide

  14. 14
    ΞʔΩςΫνϟ͕ਁಁ͢Δલͷιϑτ΢ΣΞ։ൃ
    3min
    ୯ҰػೳͷΞϓϦέʔγϣϯ΍ɺঢ়ଶͷগͳ͍ΞϓϦέʔγϣϯͰ͋Ε͹
    ͜ΕΒͷݪଇʹै͏͜ͱͰมߋʹڧ͍ΫϦʔϯͳίʔυ͕ॻ͚Δ

    View full-size slide

  15. 15
    ΞʔΩςΫνϟ͕ਁಁ͢Δલͷιϑτ΢ΣΞ։ൃ
    3min
    ͔࣌͠͠͸ྲྀΕɻɻɻ

    View full-size slide

  16. 16
    ΞʔΩςΫνϟ͕ਁಁ͢Δલͷιϑτ΢ΣΞ։ൃ
    3min
    ΞϓϦέʔγϣϯ͸ΑΓଟػೳʹ
    ΞϓϦέʔγϣϯͷঢ়ଶ͸ΑΓෳࡶʹ
    ɾϝοηʔδػೳ
    ɾ௨࿩ػೳ
    ɾࣸਅɺಈըࡱӨ
    ɾܾࡁػೳ ɾϝσΟΞͷ࠶ੜ
    ɾݸਓؒૹۚ
    ɾը૾ิਖ਼
    ɾϩάΠϯ͍ͯ͠Δʁ
    ɾܾࡁ৘ใ͸ొ࿥͞Ε͍ͯΔʁ
    ɾ௨஌͸ڐՄ͍ͯ͠Δʁ
    ɾ֎෦αʔϏε͸࿈ܞ͍ͯ͠Δʁ

    View full-size slide

  17. 17
    ΞʔΩςΫνϟ͕ਁಁ͢Δલͷιϑτ΢ΣΞ։ൃ
    3min
    ։ൃͷෳࡶԽʹΑ͍ͬͯΖΜͳ໰୊͕ग़ͯ͘Δ
    ɾ৔౰ͨΓతͳ࣮૷Ͱ͸ϕετɾϓϥΫςΟε͔Β֎Εͯ͠·͏͜ͱ͕ଟ͍
    ɾνʔϜ։ൃͰ͸ɺϝϯόʔͷٕज़ྗʹΑͬͯίʔυͷ඼࣭ʹ͕ࠩग़Δ
    ɾٕज़ྗʹ͕ࠩͳͯ͘΋ɺϓϩδΣΫτશମͰॻ͖ํ͕౷ҰͰ͖ͳ͍

    View full-size slide

  18. 18
    ΞʔΩςΫνϟ͕ਁಁ͢Δલͷιϑτ΢ΣΞ։ൃ
    3min
    ϓϩδΣΫτશମͰઃܭΛ౷Ұ͠Α͏ʂ
    ͞Βʹͦͷઃܭʹै͏͚ͩͰɺϕετϓϥΫςΟεͳ։ൃ
    ͕Ͱ͖ΔΑ͏ʹϧʔϧΛܾΊΑ͏ʂ
    MVCɺFluxͳͲͷΞʔΩςΫνϟ͕ొ৔

    View full-size slide

  19. 19
    ΞʔΩςΫνϟͬͯͳʹʁ
    5min
    ؓ࿩ٳ୊

    View full-size slide

  20. 20
    ΞʔΩςΫνϟͬͯͳʹʁ
    5min
    ΞʔΩςΫνϟͱ͸
    طଘͷϕετɾϓϥΫςΟεʹଇͬͨɺ
    ϓϩδΣΫτશମͷ࣮૷ύλʔϯͷ͜ͱ

    View full-size slide

  21. 21
    ΞʔΩςΫνϟͬͯͳʹʁ
    5min
    ౷Ұ͞ΕͨΞʔΩςΫνϟΛಋೖ͢Δ͜ͱͰ
    ɾΞʔΩςΫνϟͷϧʔϧʹैͬͯ։ൃΛ͢Ε͹ɺ
    ɹطଘͷϕετɾϓϥΫςΟεΛҙࣝ͠ͳͯ͘΋ʢ͋Δ͍͸஌Βͳͯ͘΋ʣ
    ɹมߋʹڧ͍ΫϦʔϯͳίʔυΛॻ͚ΔΑ͏ʹͳΔ
    ɾ։ൃνʔϜ಺ͷ୭͕ॻ͍ͨίʔυͰ΋ɺ
    ɹଞͷਓ͕؆୯ʹಡΊΔɺ·ͨमਖ਼ΛͰ͖ΔΑ͏ʹͳΔ

    View full-size slide

  22. ద੾ͳΞʔΩςΫνϟબఆͷίπ
    3min

    View full-size slide

  23. 23
    ద੾ͳΞʔΩςΫνϟબఆͷίπ
    3min
    ɾͲͷΞʔΩςΫνϟΛબͿ͔ʹਖ਼ղɾෆਖ਼ղ͸ͳ͍
    ɾجຊతʹͲΜͳΞʔΩςΫνϟͰ΋ɺ
    ɹͲΜͳΞϓϦέʔγϣϯ΋։ൃ͕Ͱ͖Δɻ

    View full-size slide

  24. 24
    ద੾ͳΞʔΩςΫνϟબఆͷίπ
    3min
    ΞʔΩςΫνϟΛߟ͑Δͱ͖ʹߟྀ͢Δ͜ͱ
    ɾΞϓϦέʔγϣϯͷෳࡶ͞
    ɾ։ൃνʔϜͷਓ਺ɾٕज़ྗ
    ɾσϑΝΫτελϯμʔυͳ࣮૷

    View full-size slide

  25. 25
    ద੾ͳΞʔΩςΫνϟબఆͷίπ
    3min
    ΞʔΩςΫνϟΛߟ͑Δͱ͖ʹߟྀ͢Δ͜ͱ
    ɾΞϓϦέʔγϣϯͷෳࡶ͞
    ɾ։ൃνʔϜͷਓ਺ɾٕज़ྗ
    ɾσϑΝΫτελϯμʔυͳ࣮૷

    View full-size slide

  26. 26
    ద੾ͳΞʔΩςΫνϟબఆͷίπ
    3min
    ɾΞϓϦέʔγϣϯͷෳࡶ͞
    γϯϓϧͳΞϓϦ։ൃͰ͋Ε͹ɺίʔυ͕৑௕ʹͳΓ΍͍͢Flux
    ͳͲͷΞʔΩςΫνϟΑΓ΋ɺMVC΍MVVMͷ΄͏͕ૣ͘։ൃ͕Ͱ͖Δ
    ҰํɺFlux΍ReduxɺMVIͷΑ͏ͳΞʔΩςΫνϟ͸ίʔυ΁ͷ੍໿͕
    ڧ͍ͨΊɺେن໛ͳ։ൃͰ΋ഁ୼ͮ͠Β͍
    ͨͩ͠ɺίʔυ͸ৗʹෳࡶԽ͍ͯ͘͠΋ͷͳͷͰɺݟۃΊ͕ඞཁ

    View full-size slide

  27. 27
    ద੾ͳΞʔΩςΫνϟબఆͷίπ
    3min
    ΞʔΩςΫνϟΛߟ͑Δͱ͖ʹߟྀ͢Δ͜ͱ
    ɾΞϓϦέʔγϣϯͷෳࡶ͞
    ɾ։ൃνʔϜͷਓ਺ɾٕज़ྗ
    ɾσϑΝΫτελϯμʔυͳ࣮૷

    View full-size slide

  28. 28
    ద੾ͳΞʔΩςΫνϟબఆͷίπ
    3min
    ɾ։ൃνʔϜͷਓ਺ɾٕज़ྗ
    ։ൃϝϯόʔ͕ଟ͍͚Ε͹ɺΞʔΩςΫνϟʹΑΔ੍໿͕ڧ͍ํ͕Α͍
    ΞʔΩςΫνϟͷ֓೦ࣗମ͕೉͍͠৔߹ɺϝϯόʔશһ͕ͦΕΛशಘ͢Δ
    ίετ΋։ൃͷ޻਺ʹؚ·ΕΔɻ
    ։ൃϝϯόʔͷେ෦෼͕׳Ε͍ͯΔΞʔΩςΫνϟ͕͋Ε͹ɺͦΕΛ
    ·ͣݕ౼͢Δ

    View full-size slide

  29. 29
    ద੾ͳΞʔΩςΫνϟબఆͷίπ
    3min
    ΞʔΩςΫνϟΛߟ͑Δͱ͖ʹߟྀ͢Δ͜ͱ
    ɾΞϓϦέʔγϣϯͷෳࡶ͞
    ɾ։ൃνʔϜͷਓ਺ɾٕज़ྗ
    ɾσϑΝΫτελϯμʔυͳ࣮૷

    View full-size slide

  30. 30
    ద੾ͳΞʔΩςΫνϟબఆͷίπ
    3min
    ɾσϑΝΫτελϯμʔυͳ࣮૷
    Ͱ͖Δ͚ͩελϯμʔυͳΞʔΩςΫνϟΛબΜͩํ͕ɺϥΠϒϥϦ͕
    ॆ࣮͍ͯͨ͠ΓɺυΩϡϝϯτ΍Stack Overflowͷճ౴ͳͲͷ஌ࣝʹ
    ΞΫηε͠΍͍ͨ͢ΊΑ͍
    AndroidͰ͋Ε͹MVVM͕ެࣜʹαϙʔτ͞Ε͍ͯΔɻiOSʹެࣜͷ
    ࣮૷͸ͳ͍͕ɺClean Architecture΍FluxʹΑΔ࣮૷ྫ͕ଟ͍

    View full-size slide

  31. 31
    ద੾ͳΞʔΩςΫνϟબఆͷίπ
    3min
    Ҏ্ͷΑ͏ͳߟྀ͢΂͖఺ΛΫϦΞͰ͖͍ͯΕ͹ɺ
    جຊతʹԿΛબΜͰ΋໰୊ͳ͍

    View full-size slide

  32. 32
    ద੾ͳΞʔΩςΫνϟબఆͷίπ
    3min
    ͨͩ͠ɺෳ਺ͷઃܭΛࠞͥͳ͍Α͏ʹ͢Δ
    A͞Μ
    B͞Μ
    Flux͕޷͖ͳͷͰɺࣗ෼ͷϩάΠϯը໘͸
    FluxΛ࠾༻͠·͢ʂ
    MVCʹ׳Ε͍ͯΔͷͰɺ๻ͷ୲౰͍ͯ͠Δ
    ϓϩϑΟʔϧը໘͸MVCΛ΋ͱʹઃܭ͠·͢ʂ

    View full-size slide

  33. 33
    ద੾ͳΞʔΩςΫνϟબఆͷίπ
    3min
    ͨͩ͠ɺෳ਺ͷઃܭΛࠞͥͳ͍Α͏ʹ͢Δ
    A͞Μ
    B͞Μ
    B͞Μͷίʔυ͕ಡΊͳ͍ɻɻɻ
    A͞Μͷίʔυ͕ಡΊͳ͍ɻɻɻ
    C͞Μ A͞Μͷ୲౰ՕॴͱB͞Μͷ୲౰Օॴʹ
    ಉ͡Α͏ͳमਖ਼Λ͍ͨ͠ͷʹ
    ઃܭ͕શ͘ҧͬͯ೉͍͠ɻɻɻ

    View full-size slide

  34. ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min

    View full-size slide

  35. 35
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾMVC
    ɾMVVM
    ɾClean Architecture
    ɾFlux
    ɾMVI
    ࠓ೔঺հ͢ΔΞʔΩςΫνϟ

    View full-size slide

  36. 36
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾMVC
    ɾMVVM
    ɾClean Architecture
    ɾFlux
    ɾMVI
    ࠓ೔঺հ͢ΔΞʔΩςΫνϟ

    View full-size slide

  37. 37
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾMVC
    Model
    View
    Controller
    ΞϓϦέʔγϣϯͷϩδοΫΛ୲౰͢Δ
    ը໘ͷඳըΛ୲౰͢Δ
    Model - ViewͷؒʹཱͬͯͦΕͧΕͷೖग़ྗΛ
    ந৅Խ͢Δ
    ex) View͔Βड͚औͬͨΫϦοΫΠϕϯτΛ
    ɹʮσʔλΛऔಘ͍ͨ͠ʯͱ͍͏ϦΫΤετͱͯ͠
    ɹ ModelʹૹΔ

    View full-size slide

  38. 38
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾMVC
    ϝϦοτ σϝϦοτ
    ModelʹϩδοΫͷॲཧΛ೚ͤΔ
    ͜ͱͰɺView͕ංେԽͮ͠Β͘ͳΔ
    Controller͕ؒʹཱͭ͜ͱʹΑͬͯ
    ModelͱView͕ૄ݁߹ʹͳΔ
    ֤෦෼ΛͲ͏࣮૷͢Δ͔͸݁ہ
    ͦΕͧΕͷ࣮૷ऀʹҕͶΒΕ͍ͯΔ
    Ͳ͜ʹॻ͚͹͍͍͔ܾΊΒΕ͍ͯͳ͍
    ͜ͱ͕ଟ͍

    View full-size slide

  39. 39
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾMVC
    ɾMVVM
    ɾClean Architecture
    ɾFlux
    ɾMVI
    ࠓ೔঺հ͢ΔΞʔΩςΫνϟ

    View full-size slide

  40. 40
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾMVVM
    ModelɾView
    ViewModel
    MVCͱಉ͡
    Viewͷঢ়ଶ؅ཧɺߋ৽Λߦ͏
    Viewͷঢ়ଶͱViewModelͷঢ়ଶ͸ৗʹ
    ಈዲ͞Ε͍ͯͯɺViewModelͷߋ৽͸͙͢ʹ
    Viewʹ൓ө͞ΕɺΫϦοΫͳͲͷViewͷΠϕϯτ΋
    ViewModelܦ༝ͰModelʹ఻͑ΒΕΔ

    View full-size slide

  41. 41
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾMVVM
    https://qiita.com/rmakiyama/items/779cf6407f70b40e4ee7 ΑΓ

    View full-size slide

  42. 42
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾMVVM
    ϝϦοτ σϝϦοτ
    ViewModelͷঢ়ଶΛߋ৽͢Δ͚ͩͰ
    ࣗಈతʹView͕ߋ৽͞ΕΔͨΊɺ
    Viewͷঢ়ଶ؅ཧ͕Θ͔Γ΍͍͢
    ViewModel - Viewͷঢ়ଶΛSync
    ͤ͞Δ࢓૊Έ͕ඞཁ
    (RxʹΑΔঢ়ଶมߋ௨஌ͳͲ)
    ViewModel͕ංେ͠΍͍͢

    View full-size slide

  43. 43
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾMVC
    ɾMVVM
    ɾClean Architecture
    ɾFlux
    ɾMVI
    ࠓ೔঺հ͢ΔΞʔΩςΫνϟ

    View full-size slide

  44. 44
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾClean Architecture
    https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html ΑΓ

    View full-size slide

  45. 45
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾClean Architecture
    MVCͳͲͷΞʔΩςΫνϟΛ
    ϨΠϠʔ͝ͱͷ੹຿Λ໌֬Խͯ͠
    ࠶ઃܭͨ͠΋ͷ
    σʔλͷྲྀΕ͸ৗʹ
    ʮ֎ˠ಺ˠ֎ʯͱͳΔΑ͏ʹ
    ઃܭ͞Ε͓ͯΓɺUseCase૚͕
    σʔλͷྲྀΕͷؒʹཱͬͯ
    ϩδοΫΛ෼ׂ͢Δ

    View full-size slide

  46. 46
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾClean Architecture
    ϝϦοτ σϝϦοτ
    ֤ϨΠϠʔͷ੹຿͕໌֬ͳͨΊɺ
    ԿΛͲ͜ʹॻ͔͕࣮͘૷ऀʹΑͬͯ
    มΘΔ͜ͱ͕গͳ͍
    DDD(υϝΠϯۦಈઃܭ)Λ΋ͱʹ
    ͍ͯ͠ΔͨΊɺClean Architecture
    Ͱྑ͍ίʔυΛॻ͘ʹ͸DDDͷ஌ࣝ
    ͕ඞཁʹͳΔ
    UseCase૚͕ॲཧΛࡉ͔͘
    ෼ׂ͢ΔͨΊɺϩδοΫͷ࠶ར༻ੑ͕
    ߴ·Δ

    View full-size slide

  47. 47
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾMVC
    ɾMVVM
    ɾClean Architecture
    ɾFlux
    ɾMVI
    ࠓ೔঺հ͢ΔΞʔΩςΫνϟ

    View full-size slide

  48. 48
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾFlux
    https://facebook.github.io/flux/ ΑΓ

    View full-size slide

  49. 49
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾFlux ୯ํ޲σʔλϑϩʔͷ୅දతͳ
    ΞʔΩςΫνϟ
    ΞϓϦέʔγϣϯͷঢ়ଶ͸StoreͷΈʹ
    Αͬͯ؅ཧ͞ΕɺͦΕҎ֎͸Storeͷঢ়ଶΛ
    ߋ৽͢ΔͨΊͷϞδϡʔϧ
    ঢ়ଶͷߋ৽͸ඞͣ
    View → Action → Dispatcher → Store
    ͷॱʹσʔλ͕ྲྀΕΔ͜ͱͰߦΘΕΔ

    View full-size slide

  50. 50
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾFlux
    ϝϦοτ σϝϦοτ
    ঢ়ଶ͕Storeʹू໿͞ΕΔͨΊ
    ؅ཧ͕͠΍͍͢
    ಉظతͳঢ়ଶߋ৽Λجຊʹ
    ͍ͯ͠ΔͨΊɺ௨৴ͳͲͷඇಉظ
    ॲཧͱͷ࿈ܞʹ͸޻෉͕ඞཁ
    ΞʔΩςΫνϟϨϕϧͰςετ༰қੑ
    ͕ߟ͑ΒΕ͍ͯΔ
    ঢ়ଶͷߋ৽͕Actionͱ݁ͼͭͨ͘Ί
    ͲͷΑ͏ͳঢ়ଶߋ৽͕͋Δ͔Λ
    Ұཡ͠΍͍͢

    View full-size slide

  51. 51
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾMVC
    ɾMVVM
    ɾClean Architecture
    ɾFlux
    ɾMVI
    ࠓ೔঺հ͢ΔΞʔΩςΫνϟ

    View full-size slide

  52. 52
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾMVI

    View full-size slide

  53. 53
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾMVI
    Fluxͱಉ༷ʹ୯ํ޲σʔλϑϩʔͷ
    ΞʔΩςΫνϟ
    Intent, Action, Result, Stateͱ͍͏
    σʔλͱɺಁաతͳؔ਺ͷΈͰ࣮૷
    ͢Δ

    View full-size slide

  54. 54
    ͍Ζ͍ΖͳΞʔΩςΫνϟͷ঺հ
    6min
    ɾMVI
    ϝϦοτ σϝϦοτ
    ঢ়ଶߋ৽ͷϩδοΫͷࢀরಁաੑ
    ͕୲อ͞Ε͍ͯΔͨΊɺςετ͕
    ॻ͖΍͍͢
    FluxΑΓ΋֤Ϟδϡʔϧͷ໾ׂ͕
    ࡉ෼Խ͞Ε͍ͯΔͨΊɺ
    ࣮૷ऀʹΑΔίʔυͷϒϨ͕গͳ͍
    ϘΠϥʔϓϨʔτ͕ଟ͘ɺ؆୯ͳ࣮૷Λ
    ͢Δ͚ͩͰ΋ଟ͘ͷίʔυΛॻ͘ඞཁ͕
    ͋Δ

    View full-size slide

  55. 56
    ·ͱΊ
    2min
    ΞʔΩςΫνϟʹۜͷ஄ؙ͸ͳ͍
    ద੾ͳΞʔΩςΫνϟʹଇͬͯ։ൃΛߦ͏͜ͱͰɺ
    ϓϩάϥϛϯάͷϕετϓϥΫςΟεΛϓϩδΣΫτશମͰकΔ͜ͱ͕Ͱ͖Δ
    ΞʔΩςΫνϟͷઃܭ΍طଘͷΞʔΩςΫνϟͷબ୒ʹ͸
    ϕετϓϥΫςΟεΛ஌Δ͜ͱ͕େ੾

    View full-size slide

  56. 57
    ·ͱΊ
    2min
    ͋Γ͕ͱ͏͍͟͝·ͨ͠
    @AbemaTV Hack
    https://twitter.com/itometeam
    https://github.com/itome
    https://medium.com/@itometeam

    View full-size slide