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

704056da9a4c4e075ad14479beaebab7?s=47 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

704056da9a4c4e075ad14479beaebab7?s=128

takasek

January 21, 2020
Tweet

Transcript

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

    it ct reษڧձ 1
  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
  3. 3

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

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

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

  7. ຊ୊ 7

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

  9. 9

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

  11. 1

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

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

  14. ΋ͬͱਂ͍ ຊ୊ 1

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

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

    H .f r 1
  17. μϒϧ૑քࢁͷಈػ • H Λf r ʹ͢Ε ͹ࠓͷA ͚ͩ͡Όͳ͘ ͯɺ·ͩݟ͵A Ͱ΋࢖

    ͑Δ͡ΌΜʁ • H ͸σΧ͍ػೳͳͷͰɺ A ʹೖΕΔͱಉ৺ԁ͕ ࿪Ήͳ… • H ͸A ʹͱͬͯ e l i c ͱͯ͠ ଊ͑ΒΕΔʂ 1
  18. μϒϧ૑քࢁͷ຤࿏(1) A ͷU Ͱɺ H ͷE ͷঢ়ଶΛ੍ޚͨ͘͠ͳͬͨ …͕ɺ ͍͍ͪͪ࿢·Ͱ߱Γͳ͍ͱ ΍ΓͱΓ͕Ͱ͖ͳͯ͘ਏ͍

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

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

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

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

  23. C ຊ ୈ22ষΑΓ 2

  24. 2

  25. ಉ৺ԁ Ͳ͍ͬͨ͜ 2

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

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

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

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

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

  31. μϒϧ ૑քࢁ 3

  32. τϦϓϧ ૑քࢁ 3

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

  34. ૑ք ࢁ຺ 3

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

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

  37. 3

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

  39. ΫϥΠΞϯτΞϓϦͷʮυϝΠϯϩδοΫʯ ͸ʮΤϯςΟςΟʹத৺ʯʹ͋Δͱ͸ݶΒͳ ͍ • ཭Εͨը໘Ͱͷσʔλ੔߹ੑΛͲ͏อ͔ͭ • ঢ়ଶมԽʹ଱͑͏ΔಈతͳϏϡʔίϯϙʔωϯτߏ੒ • ෳ਺ͷೖྗ૷ஔʢϢʔβʔೖྗɺσόΠεηϯαɺϓογϡ௨஌ͳͲʣ ΛͲ͏ඇಉظతʹѻ͏͔

    ͳͲ͸ɺϢʔβʔͱ௚઀΍ΓͱΓ͢ΔΞϓϦʹ͓͍ͯ͸ཱ೿ͳυϝΠϯ ʢۀ຿ͷؔ৺ʣͱݴ͑ΔͩΖ͏2 2 ʮ௖্ͷؔ৺͸S (S R ), தෲͷؔ৺͸S (S E e )Ͱ͋Δʯͱ͍͏ݴ͍ํ΋Ͱ͖Δɻ 3
  40. Q. ΫϥΠΞϯτΞϓϦͰ͸ɺΫϦʔϯΞʔΩςΫ νϟͷߟ͑͸ద༻Ͱ͖ͳ͍ͷ͔ʁ A. ͍͍͑ɻ ΫϦʔϯΞʔΩςΫνϟʹ૑քࢁͰ͸ͳ͍ ࢁͷதෲʹখࢁΛ࡞ͬͯ΋͍͍͜ͱ͸ݴٴͨ͠ͱ ͓Γ ෳࡶʹͳΔ৔߹ɺద੾ʹந৅ϨΠϠΛઃ͚Δର৅ 4

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

    4
  42. • C ຊ ୈ1 ষʮڥքͷղ๤ֶʯ • σϓϩΠίϯϙʔωϯτ • εϨου •

    ϩʔΧϧϓϩηε • αʔϏε • C ຊ ୈ2 ষʮ෦෼తͳڥքʯ • ࠷ޙͷεςοϓΛলུ͢Δ • ยํ͚ͩͷڥք • F 4
  43. ֓೦ 4

  44. ࣮ࡍ 4

  45. ͪͳΈʹ: αʔό૑քࢁ຺ͱͷ۩ମతͳઓ͍ํ • B (B s o F d )

    • ΫϥΠΞϯτ͸ϚΠΫϩαʔϏεͷϋϒ • ௨৴ͷू໿ɾϩδοΫͷڞ༗ʹ໾ཱͭ • M F d • Ұ෦͚ͩW Ͱදࣔ͢ΔΑ͏ͳΠϝʔδ • ࢁʹඌ͕ࠜ௨ͬͨʂ ͞·͟·ͳ޻෉ͰɺΞϓϦͷ֎ʹෳࡶੑΛ௥͍΍ Δ͜ͱ͸Ͱ͖Δ ʢͦΕ͕ৗʹਖ਼ղͱ͸ݶΒͳ͍͚Ͳʣ 4
  46. ·ͱΊ • C ͷಉ৺ԁ͸૑քࢁ • ૑քࢁ຺͸ͭΒ͍ • ΫϥΠΞϯτΞϓϦͷࢁ௖͸͠͹͠͹Χϧσϥ • ࢁͷதෲʹ΋ந৅͸͋Δ͜ͱΛ๨ΕΔͳ

    • ஸೡʹڥքΛҾ͜͏ • ʰຐਆӳ༤఻ϫλϧ ࣣࠢͷཾਆؙʱ͸2 ೥य़ Y ʹͯ഑৴ 4