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

Clean Architecture: クライアントアプリの「中心」とは何か / 20200121 the center of the client #ios_ca

takasek
January 21, 2020

Clean Architecture: クライアントアプリの「中心」とは何か / 20200121 the center of the client #ios_ca

iOS Clean Architecture勉強会 sponsored by Sansan - connpass
https://connpass.com/event/158269/
の発表資料です。

## 参考資料

Clean Architecture 達人に学ぶソフトウェアの構造と設計 (アスキードワンゴ) | Robert C.Martin, 角 征典, 高木 正弘 | 工学 | Kindleストア | Amazon
https://www.amazon.co.jp/dp/B07FSBHS2V

マイクロサービスとクライアント: 
理想と現実の狭間で / Ideal and Reality of microservices from the client-side - Speaker Deck
https://speakerdeck.com/qsona/ideal-and-reality-of-microservices-from-the-client-side

実践、BFF ~ BFFはFiNCのアプリで何を解決したのか ~ - Speaker Deck
https://speakerdeck.com/kensukeizumi/shi-jian-bff-bffhafincfalseapuridehe-wojie-jue-sitafalseka

takasek

January 21, 2020
Tweet

More Decks by takasek

Other Decks in Programming

Transcript

  1. ΫϥΠΞϯτΞϓϦ
    ͷʮத৺ʯͱ͸Կ͔
    b .
    2020/1/21 i S le n rc it ct reษڧձ
    1

    View Slide

  2. t ka ek
    @t ka ek
    W rk
    O S: ActionClosurable౳
    A p: PasteTheType
    A ti le
    Q it ʮ͓લΒ͕M de ͱݺͿΞϨΛ
    ͳΜͱݺͿ΂͖͔ʯ
    P AK ʮi SΞϓϦઃܭύλʔϯೖ໳ʯ
    ʢڞஶʣ
    2

    View Slide

  3. 3

    View Slide

  4. ۙگ
    ࠷ۙస৬ͯ͠
    i SΤϯδχΞͰ͸
    ͳ͘ͳΓ·ͨ͠
    4

    View Slide

  5. 35ࡀఆ೥આͬͯ͜ͱʹ͠·͢
    5

    View Slide

  6. ಉੈ୅͸ఆ೥ͤͣʹؤுͬͯ·͢Ͷʢฏ੒͔Βોͬͨࠓ೥य़ͷ৽Ξχϝʣ
    6

    View Slide

  7. ຊ୊
    7

    View Slide

  8. C ea A ch te tu eͷ
    ʮத৺ʯͱ͸Կ͔
    8

    View Slide

  9. 9

    View Slide

  10. Ө͕͋Δ…ʁ
    ౳ߴઢΈ͍ͨ…ʁ
    1

    View Slide

  11. 1

    View Slide

  12. Q.
    C ea A ch te tu eͷ
    ʮத৺ʯͱ͸Կ͔
    A.
    ૑քࢁͷࢁ௖
    1

    View Slide

  13. ͪͳΈʹy ͞Μͷ
    ʮV ݚڀಡຊʯͰ΋
    ཱମతͳදݱ͞Εͯ·͢
    https://swift.booth.pm/
    items/1758609
    1

    View Slide

  14. ΋ͬͱਂ͍
    ຊ୊
    1

    View Slide

  15. ૑քࢁͷܗʹनΘΕͨ
    ࣦഊஊ
    ͷ࿩Λ͠·͢
    1

    View Slide

  16. ͋Δػೳ͚ͩΛ෼཭ͨ͠f r Λ࡞Ζ͏ͱͨ͠
    ɹɹɹɹɹɹɹɹʘμϒϧ૑քࢁʂʂʗ
    ɹ
    !
    A .f r ɹɹɹ H .f r
    1

    View Slide

  17. μϒϧ૑քࢁͷಈػ
    • H Λf r ʹ͢Ε
    ͹ࠓͷA ͚ͩ͡Όͳ͘
    ͯɺ·ͩݟ͵A Ͱ΋࢖
    ͑Δ͡ΌΜʁ
    • H ͸σΧ͍ػೳͳͷͰɺ
    A ʹೖΕΔͱಉ৺ԁ͕
    ࿪Ήͳ…
    • H ͸A ʹͱͬͯ
    e l i c ͱͯ͠
    ଊ͑ΒΕΔʂ
    1

    View Slide

  18. μϒϧ૑քࢁͷ຤࿏(1)
    A ͷU Ͱɺ
    H ͷE ͷঢ়ଶΛ੍ޚͨ͘͠ͳͬͨ
    …͕ɺ
    ͍͍ͪͪ࿢·Ͱ߱Γͳ͍ͱ
    ΍ΓͱΓ͕Ͱ͖ͳͯ͘ਏ͍
    1

    View Slide

  19. μϒϧ૑քࢁͷ຤࿏(2)
    ݁ہA ͸࡞Δඞཁ͕ͳ͘ͳ͚ͬͨͲɺ
    ޙ͔Β౷߹͸ਏ͍
    ແҙຯʹ෼͔Εͨf r ͷґଘ؅ཧ͕
    େ͖ͳෛ࠴ʹͳͬͨ
    1

    View Slide

  20. C ຊ17ষʹ΋ྨࣅͷΤϐιʔυ͸͋Δ
    Ϙϒ͓͡͞Μᐌ͘ɺ
    ΞϓϦ෼ׂͰ͖Δ͜ͱ͋Γ͖Ͱ࡞ͬͯ͠·ͬͨͷ
    ͕·͔ͣͬͨ
    ෆཁͳڥք͸σϝϦοτͷ΄͏͕େ͖͍
    2

    View Slide

  21. Ͳ͏͢Ε͹ྑ͔͔ͬͨ
    ʮH ge͸σΧ͍ػೳͳͷ
    ͰɺA p1ʹೖΕΔͱಉ৺ԁ
    ͕࿪Ήͳ…ʯ
    ͱ͍͏ࢥߟΛࣺͯΔ
    2

    View Slide

  22. ϦΞϧͳΞϓϦ͸
    ຊ౰ʹϚδͰ
    ૑քࢁʁ
    2

    View Slide

  23. C ຊ ୈ22ষΑΓ
    2

    View Slide

  24. 2

    View Slide

  25. ಉ৺ԁ
    Ͳ͍ͬͨ͜
    2

    View Slide

  26. ͞Βʹi ΞϓϦ͋Δ͋Δ
    2

    View Slide

  27. i ΞϓϦ΋ͬͱ͋Δ͋Δ
    2

    View Slide

  28. Θ͔Δ͜ͱ
    • ΞϓϦ͸࿈ๆͰ͋Δ
    • ࢁ௖͸ͻͱͭͱ͸ݶΒͳ͍
    • தෲʹখࢁΛ࡞ͬͯ΋ྑ͍
    2

    View Slide

  29. ͨͩ͠ɺαʔόͱͷ௨৴͕͋Δ
    ΫϥΠΞϯτΞϓϦ͸ͲͷΈͪ
    μϒϧ૑քࢁ
    ͳΜͰ͢ΑͶ…
    2

    View Slide

  30. q ʮϚΠΫϩαʔϏεͱΫϥΠΞϯτ: ཧ૝ͱݱ࣮ͷڱؒͰʯP
    https://speakerdeck.com/qsona/ideal-and-reality-of-microservices-from-
    the-client-side?slide=17
    3

    View Slide

  31. μϒϧ
    ૑քࢁ
    3

    View Slide

  32. τϦϓϧ
    ૑քࢁ
    3

    View Slide

  33. ΫΞυϥϓϧ
    ૑քࢁ
    3

    View Slide

  34. ૑ք
    ࢁ຺
    3

    View Slide

  35. ૑քࢁ຺ͷͭΒΈ
    ͍͍ͪͪ࿢·Ͱ߱Γͳ͍ͱ
    ΍ΓͱΓͰ͖ͳͯ͘ਏ͍
    ΫϥΠΞϯτΞϓϦͷʮϏδωεϩδο
    Ϋʯͬͯ΄΅ɺ͍ͭ͜ΒΛͳΜͱ͔ؤுͬͯ
    ܨ͗߹ΘͤΔ͜ͱͰ͸…ʁ
    3

    View Slide

  36. ͋ΔछͷΫϥΠΞϯτΞϓϦ͸
    Χϧσϥ1
    1 ΧϧσϥɿՐࢁ׆ಈͰͰ͖ͨՐޱͷۼ஍ͷ͜ͱɻѨોࢁͷ΋ͷ͕༗໊ɻ
    ͳ͓͜Ε͸ʮC ʹ͓͚ΔϦʔυϞσϧʹపͨ͠ঢ়ଶʯͱݴ͍׵͑ͯ΋͍͍ɻ
    3

    View Slide

  37. 3

    View Slide

  38. J ON৭෇͚܎Ͱ͋
    Δ͜ͱΛ൱ఆ͠ͳ͍
    J ONͷ৭෇͚ͦ͜
    ͕೉͍͠
    3

    View Slide

  39. ΫϥΠΞϯτΞϓϦͷʮυϝΠϯϩδοΫʯ
    ͸ʮΤϯςΟςΟʹத৺ʯʹ͋Δͱ͸ݶΒͳ
    ͍
    • ཭Εͨը໘Ͱͷσʔλ੔߹ੑΛͲ͏อ͔ͭ
    • ঢ়ଶมԽʹ଱͑͏ΔಈతͳϏϡʔίϯϙʔωϯτߏ੒
    • ෳ਺ͷೖྗ૷ஔʢϢʔβʔೖྗɺσόΠεηϯαɺϓογϡ௨஌ͳͲʣ
    ΛͲ͏ඇಉظతʹѻ͏͔
    ͳͲ͸ɺϢʔβʔͱ௚઀΍ΓͱΓ͢ΔΞϓϦʹ͓͍ͯ͸ཱ೿ͳυϝΠϯ
    ʢۀ຿ͷؔ৺ʣͱݴ͑ΔͩΖ͏2
    2 ʮ௖্ͷؔ৺͸S (S R ),
    தෲͷؔ৺͸S (S E e )Ͱ͋Δʯͱ͍͏ݴ͍ํ΋Ͱ͖Δɻ
    3

    View Slide

  40. Q.
    ΫϥΠΞϯτΞϓϦͰ͸ɺΫϦʔϯΞʔΩςΫ
    νϟͷߟ͑͸ద༻Ͱ͖ͳ͍ͷ͔ʁ
    A.
    ͍͍͑ɻ
    ΫϦʔϯΞʔΩςΫνϟʹ૑քࢁͰ͸ͳ͍
    ࢁͷதෲʹখࢁΛ࡞ͬͯ΋͍͍͜ͱ͸ݴٴͨ͠ͱ
    ͓Γ
    ෳࡶʹͳΔ৔߹ɺద੾ʹந৅ϨΠϠΛઃ͚Δର৅
    4

    View Slide

  41. C ຊ ୈ1 ষʮํ਑ͱϨϕϧʯΑΓ
    ୯७Խ͞Εͨ૑քࢁʹҾ͖ͣΒΕͣɺ
    ࢥߟఀࢭͤͣʹஸೡʹઃܭ͍͖ͯ͠·͠ΐ͏
    ྫͷਤͷઆ໌͸C ຊͷୈ2 ষ͚ͩ
    Ή͠Ζ࢒Γͷ෦෼͕େࣄʂ
    4

    View Slide

  42. • C ຊ ୈ1 ষʮڥքͷղ๤ֶʯ
    • σϓϩΠίϯϙʔωϯτ
    • εϨου
    • ϩʔΧϧϓϩηε
    • αʔϏε
    • C ຊ ୈ2 ষʮ෦෼తͳڥքʯ
    • ࠷ޙͷεςοϓΛলུ͢Δ
    • ยํ͚ͩͷڥք
    • F
    4

    View Slide

  43. ֓೦
    4

    View Slide

  44. ࣮ࡍ
    4

    View Slide

  45. ͪͳΈʹ: αʔό૑քࢁ຺ͱͷ۩ମతͳઓ͍ํ
    • B (B s o F d )
    • ΫϥΠΞϯτ͸ϚΠΫϩαʔϏεͷϋϒ
    • ௨৴ͷू໿ɾϩδοΫͷڞ༗ʹ໾ཱͭ
    • M F d
    • Ұ෦͚ͩW Ͱදࣔ͢ΔΑ͏ͳΠϝʔδ
    • ࢁʹඌ͕ࠜ௨ͬͨʂ
    ͞·͟·ͳ޻෉ͰɺΞϓϦͷ֎ʹෳࡶੑΛ௥͍΍
    Δ͜ͱ͸Ͱ͖Δ
    ʢͦΕ͕ৗʹਖ਼ղͱ͸ݶΒͳ͍͚Ͳʣ
    4

    View Slide

  46. ·ͱΊ
    • C ͷಉ৺ԁ͸૑քࢁ
    • ૑քࢁ຺͸ͭΒ͍
    • ΫϥΠΞϯτΞϓϦͷࢁ௖͸͠͹͠͹Χϧσϥ
    • ࢁͷதෲʹ΋ந৅͸͋Δ͜ͱΛ๨ΕΔͳ
    • ஸೡʹڥքΛҾ͜͏
    • ʰຐਆӳ༤఻ϫλϧ ࣣࠢͷཾਆؙʱ͸2 ೥य़
    Y ʹͯ഑৴
    4

    View Slide