Slide 1

Slide 1 text

2023/11/20 CA.swift #18 ABEMA ϞόΠϧΞϓϦʹ͓͚Δ ʮΞʔΩςΫνϟʯ גࣜձࣾAbemaTV ҆Ҫӯஉ

Slide 2

Slide 2 text

ࣗݾ঺հ • ҆Ҫ ӯஉ / Akio Yasui • 2019೥ גࣜձࣾAbemaTV ৽ଔೖࣾ • SNS: @akkyie • iOS ΞϓϦͷج൫पΓΛ୲౰ • 2021೥͝Ζ͔ΒΞʔΩςΫνϟؔ࿈ͷऔΓ૊Έ

Slide 3

Slide 3 text

ΞδΣϯμ • ΞʔΩςΫνϟͷٞ࿦ʹࢸͬͨഎܠ • ϓϥοτϑΥʔϜʹด͡ͳ͍ʮΞʔΩςΫνϟʯͷఆٛ • ABEMAͷϨΠϠʔߏ଄ͱɺAPIͱͷؔ܎ੑ • ϞόΠϧΞϓϦͷΞʔΩςΫνϟͷߟ͔͑ͨ • ABEMAʹ͓͚ΔΞʔΩςΫνϟͷ՝୊ͱͦͷઌ

Slide 4

Slide 4 text

ΞʔΩςΫνϟͷٞ࿦ʹࢸͬͨഎܠ

Slide 5

Slide 5 text

ΞʔΩςΫνϟͷٞ࿦ʹࢸͬͨഎܠ “Multiplatform Engineering” AbemaTV, Inc. All Rights Reserved
 10 ※ Daydream, Clova Desk サポート終了 対応デバイス 拡大 2016 iOS mobile Android mobile Web pc / mobile Chrome cast Apple TV Android TV IPTV Daydream Clova Desk Google Nest Hub Game Console 2017 2019 2018 2020 2021 Amazon Alexa Amazon Fire TV Amazon FIre Tablet 2022 AbemaTV, Inc. All Rights Reserved
 1 Multiplatform Engineering Roadmap for the Future (2021) https://developer.abema.io/2021/sessions/bvjpwJEoGP/

Slide 6

Slide 6 text

AbemaTV, Inc. All Rights Reserved
 16 対応デバイス 拡大 Desktop Browser Android Web Unity Mobile Browser Mobile App Smart Display/ Speaker TV iOS iOS Mobile Android Mobile PC Web Chrome cast Apple TV Android TV IPTV Google Nest Hub Game Console Amazon Fire TV Amazon FIre Tablet Mobile Web ユースケース 技術スタック ΞʔΩςΫνϟͷٞ࿦ʹࢸͬͨഎܠ “Multiplatform Engineering” AbemaTV, Inc. All Rights Reserved
 1 Multiplatform Engineering Roadmap for the Future (2021) https://developer.abema.io/2021/sessions/bvjpwJEoGP/

Slide 7

Slide 7 text

AbemaTV, Inc. All Rights Reserved
 対応デバイス 拡大 18 汎化と特化 Use Cases Entities UI Presentation DB platform-specific APIs External Interfaces Gateways Presenters Controllers 特化 汎化 ● 特化する部分 ○ プレゼンテーション層 ○ プラットフォーム固有 エンティティ・ユー スケース ● 汎化する部分 ○ 汎化された外部IF ○ プラットフォームに依存しないエンティティ ・ユースケース ΞʔΩςΫνϟͷٞ࿦ʹࢸͬͨഎܠ “Multiplatform Engineering” AbemaTV, Inc. All Rights Reserved
 1 Multiplatform Engineering Roadmap for the Future (2021) https://developer.abema.io/2021/sessions/bvjpwJEoGP/

Slide 8

Slide 8 text

ΞʔΩςΫνϟͷٞ࿦ʹࢸͬͨഎܠ “Multiplatform Engineering” AbemaTV, Inc. All Rights Reserved
 1 Multiplatform Engineering Roadmap for the Future (2021) https://developer.abema.io/2021/sessions/bvjpwJEoGP/ AbemaTV, Inc. All Rights Reserved
 Mobile Appが抱えていた課題 27 リアーキテクチャ ● 設計によってコンポーネント間 疎結合が担保されていない ● テスタビリティ・メンテナビリティ 低さ ● AndroidとiOS 仕様・実装差異 拡大 ● UI開発 安全性と生産性 低下 AbemaTV, Inc. All Rights Reserved
 Mobile Appが抱えていた課題 28 リアーキテクチャ + KMM ● 設計によってコンポーネント間 疎結合が担保されていない ● テスタビリティ・メンテナビリティ 低さ ● AndroidとiOS 仕様・実装差異 拡大 ● UI開発 安全性と生産性 低下

Slide 9

Slide 9 text

ΞʔΩςΫνϟͷٞ࿦ʹࢸͬͨഎܠ “Multiplatform Engineering” ,...PEVMFT %PNBJO 3FQPTJUPSZ 6* $PNQPOFOU 6TF$BTF 6*-PHJD *OUFSGBDF 3FQPTJUPSZ *OUFSGBDF 6*-PHJD 6TF$BTF *OUFSGBDF %# "1*4FSWJDF "1*4FSWJDF *OUFSGBDF $BDIF "1* 3FQPTJUPSZ %# $BDIF 04%FWJDF &WFOU 6TF$BTF 6TF$BTF *OUFSGBDF ,.."SDIJUFDUVSF 4IBSJOHUIFDPNNPOCVTJOFTTMPHJD AbemaTV, Inc. All Rights Reserved
 1 ABEMAϞόΠϧΞϓϦ։ൃͷDevOpsઓུ (2022) ۩ମతͳઃܭ͸౰࣌ͷ΋ͷ https://cadc.cyberagent.co.jp/2022/program/abema-mobile-app-devops/

Slide 10

Slide 10 text

Ͳ͏͍͏ٞ࿦Λ͔ͨ͠ ϓϥοτϑΥʔϜ͝ͱʹϕετϓϥΫςΟε͕ҟͳΔ https://developer.apple.com/documentation/uikit/about_app_development_with_uikit/ https://github.com/pointfreeco/swift-composable-architecture https://developer.android.com/topic/architecture?hl=ja

Slide 11

Slide 11 text

Ͳ͏͍͏ٞ࿦Λ͔ͨ͠ લఏͱͳΔೝࣝΛ͋ΘͤΔඞཁੑ • ʮυϝΠϯʯͱ͸ʁ • ʮϢʔεέʔεʯͱ͸ʁ • ʮϨΠϠʔʯʁʮϞδϡʔϧʯʁʮύοέʔδʯʁ

Slide 12

Slide 12 text

Ͳ͏͍͏ٞ࿦Λ͔ͨ͠ ڞ௨ೝࣝΛυΩϡϝϯτͱͯ͠੔උ

Slide 13

Slide 13 text

ʮΞʔΩςΫνϟʯͱ͸ʁ

Slide 14

Slide 14 text

ʮΞʔΩςΫνϟʯͱ͸ʁ • ʮઃܭʯͱ͸Ͳ͏ҧ͏ʁ • ʮΞʔΩςΫνϟʯͱ໊ͷͭ͘/ݺ͹ΕΔ༷ʑͳ΋ͷ • Clean ArchitectureɺMVC΍MVVMɺThe Composable Architectureɺ… • ͲΕ΋ʮΞʔΩςΫνϟʯʁ • UIKit/SwiftUIɺiOS/AndroidɺMobile/Webɺ… ΞʔΩςΫνϟ͸ڞ௨ʁมΘΔʁ Clean Architectureʹ΋MVC͸ؚ·ΕΔ🧐 ʰClean Architecture ୡਓʹֶͿιϑτ΢ΣΞͷߏ଄ͱઃܭʱp.202

Slide 15

Slide 15 text

ΞʔΩςΫνϟͱ͸ ʮϓϩμΫτ΍νʔϜΛલఏͱͨ͠ɺ ઃܭ্ɾ࣮૷্ͷτϨʔυΦϑʹର͢Δ൑அࢦ਑ʯ

Slide 16

Slide 16 text

ΞʔΩςΫνϟͱ͸ ʮϓϩμΫτ΍νʔϜΛલఏͱͨ͠ɺ ઃܭ্ɾ࣮૷্ͷτϨʔυΦϑʹର͢Δ൑அࢦ਑ʯ

Slide 17

Slide 17 text

ʮΞʔΩςΫνϟʯͱ͸ ୯७Խͨ͠։ൃϓϩηε ࢓༷ ࣮૷ ઃܭ

Slide 18

Slide 18 text

ʮΞʔΩςΫνϟʯͱ͸ ୯७Խͨ͠։ൃϓϩηε ࣮૷C ࣮૷B ࢓༷ ࣮૷A ઃܭ

Slide 19

Slide 19 text

ʮΞʔΩςΫνϟʯͱ͸ ୯७Խͨ͠։ൃϓϩηε ࣮૷C ࣮૷B ࢓༷ ࣮૷A ઃܭC ઃܭB ઃܭA

Slide 20

Slide 20 text

ʮΞʔΩςΫνϟʯͱ͸ ୯७Խͨ͠։ൃϓϩηε ࣮૷C ࣮૷B ࣮૷A ઃܭC ઃܭB ઃܭA ͲΕΛબͿʁ

Slide 21

Slide 21 text

ʮΞʔΩςΫνϟʯͱ͸ ୯७Խͨ͠։ൃϓϩηε ύϑΥʔϚϯε ✔︎ ✔︎ ৴པੑ ✔︎ ϝϯςφϯεੑ ✔︎ ✔︎ ⋮ ઃܭA ઃܭB ઃܭC

Slide 22

Slide 22 text

ʮΞʔΩςΫνϟʯͱ͸ ୯७Խͨ͠։ൃϓϩηε ύϑΥʔϚϯε ✔︎ ✔︎ ৴པੑ ✔︎ ϝϯςφϯεੑ ✔︎ ✔︎ ⋮ ઃܭA ઃܭB ઃܭC τϨʔυΦϑ τϨʔυΦϑ

Slide 23

Slide 23 text

ʮΞʔΩςΫνϟʯͱ͸ ୯७Խͨ͠։ൃϓϩηε ύϑΥʔϚϯε ✔︎ ✔︎ ৴པੑ ✔︎ ϝϯςφϯεੑ ✔︎ ✔︎ ⋮ ઃܭA ઃܭB ઃܭC ͲͷΑ͏ͳಛੑΛ ༏ઌ͢Δ͔ τϨʔυΦϑ τϨʔυΦϑ

Slide 24

Slide 24 text

ʮΞʔΩςΫνϟʯͱ͸ ୯७Խͨ͠։ൃϓϩηε ύϑΥʔϚϯε ✔︎ ✔︎ ৴པੑ ✔︎ ϝϯςφϯεੑ ✔︎ ✔︎ ⋮ ઃܭA ઃܭB ઃܭC ͲͷΑ͏ͳ ઃܭʢߏ଄ʣΛ બ୒͢Δ͔ τϨʔυΦϑ τϨʔυΦϑ

Slide 25

Slide 25 text

ʮΞʔΩςΫνϟʯͱ͸ ʰιϑτ΢ΣΞΞʔΩςΫνϟͷجૅʱʹΑΔఆٛ ʰιϑτ΢ΣΞΞʔΩςΫνϟͷجૅʕΤϯδχΞϦϯάʹجͮ͘ମܥతΞϓϩʔνʱ https://www.oreilly.co.jp/books/9784873119823/

Slide 26

Slide 26 text

ʮΞʔΩςΫνϟʯͱ͸ ʰιϑτ΢ΣΞΞʔΩςΫνϟͷجૅʱʹΑΔఆٛ • ΞʔΩςΫνϟಛੑ • ࣄۀ΍૊৫Λ΋ͱʹͨ͠ɺγεςϜʹٻΊΒΕΔੑ࣭ • ߏ଄ • ϨΠϠʔ΍αʔϏεͳͲͷઃܭɺιʔείʔυͷฤ੒ͳͲ • ΞʔΩςΫνϟܾఆ • ಛੑ΍ߏ଄ʹӨڹΛ༩͑Δҙࢥܾఆ • ઃܭࢦ਑ • νʔϜ͕࣮ࡍʹઃܭΛ͢ΔࡍͷࢀߟʹͰ͖Δࢦ਑

Slide 27

Slide 27 text

ʮΞʔΩςΫνϟʯͱ͸ ʰιϑτ΢ΣΞΞʔΩςΫνϟͷجૅʱʹΑΔఆٛ • ΞʔΩςΫνϟಛੑ w lద੾ͳΞʔΩςΫνϟಛੑΛ໌Β͔ʹ͢Δʹ͸ɺυϝΠϯͷؔ৺ࣄΛ 
 ຋༁Ͱ͖ͳ͚Ε͹ͳΒͳ͍ɻॏཁͳͷ͸εέʔϥϏϦςΟͩΖ͏͔ɻ 
 ͦΕͱ΋ɺ଱ো֐ੑ΍ηΩϡϦςΟɺύϑΥʔϚϯεͩΖ͏͔ɻz 
 * υϝΠϯ: ιϑτ΢ΣΞ͕ର৅ͱ͢Δࣄۀ΍ۀքͱ͍ͬͨ໰୊ྖҬ w lυϝΠϯͷεςʔΫϗϧμʔͱڠྗͯ͠ΞʔΩςΫνϟಛੑΛఆٛ͢Δ 
 ࡍ͸ɺαϙʔτ͢ΔΞʔΩςΫνϟಛੑͷ਺ΛՄೳͳݶΓߜΖ͏ɻ 
 ͢΂ͯͷΞʔΩςΫνϟಛੑΛαϙʔτ͢Δ൚༻ΞʔΩςΫνϟΛ 
 ઃܭ͠Α͏ͱ͢Δͷ͸ɺΞʔΩςΫνϟͰΑ͋͘ΔΞϯνύλʔϯͩɻ 
 ΞʔΩςΫνϟಛੑΛαϙʔτ͢Δ͜ͱͰɺγεςϜશମͷઃܭ͸ 
 ෳࡶʹͳ͍ͬͯ͘ɻz ʰιϑτ΢ΣΞΞʔΩςΫνϟͷجૅʱ p.67

Slide 28

Slide 28 text

ʮΞʔΩςΫνϟʯͱ͸ ʰιϑτ΢ΣΞΞʔΩςΫνϟͷجૅʱʹΑΔఆٛʢͷղऍʣ • ʮΞʔΩςΫνϟΛܾΊΔʯͱ͍͏͜ͱ = ࣄۀ΍૊৫Λ΋ͱʹ༏ઌ͢΂͖ΞʔΩςΫνϟಛੑΛܾΊɺ ͦΕΛຬͨ͢Α͏ͳߏ଄΍ઃܭΛఆΊɺ ҙࢥܾఆ΍มߋΛه࿥͠ɺ কདྷͷͨΊʹઃܭࢦ਑Λ໌จԽ͢Δ͜ͱ

Slide 29

Slide 29 text

ΞʔΩςΫνϟͱ͸ ʮϓϩμΫτ΍νʔϜΛલఏͱͨ͠ɺ ઃܭ্ɾ࣮૷্ͷτϨʔυΦϑʹର͢Δ൑அࢦ਑ʯ

Slide 30

Slide 30 text

ʮΞʔΩςΫνϟʯͷछྨ “ϝλ” ΞʔΩςΫνϟ ΞʔΩςΫνϟʢओʹߏ଄ʣ ʹ͍ͭͯͷݪଇ΍ΨΠυϥΠϯ Clean Architecture (SOLID, ҆ఆґଘͷݪଇ, ด࠯ੑڞ௨ͷݪଇ, …) Android Developers “Guide to app architecture” ΞʔΩςΫνϟελΠϧ ΞʔΩςΫνϟύλʔϯ ʢσβΠϯύλʔϯʣ MVC, MVVM, MVP, Flux, VIPER, … ϨΠϠʔυΞʔΩςΫνϟ, ϚΠΫϩαʔϏεΞʔΩςΫνϟ, … ΞʔΩςΫνϟϑϨʔϜϫʔΫ ಛఆͷΞʔΩςΫνϟύλʔϯΛ ڧ੍ͯ͘͠ΕΔϑϨʔϜϫʔΫ The Composable Architecture, RIBs, Unio, …

Slide 31

Slide 31 text

ʮΞʔΩςΫνϟʯͱ͸ ʰιϑτ΢ΣΞΞʔΩςΫνϟͷجૅʱʹΑΔఆٛ • ΞʔΩςΫνϟಛੑ • ࣄۀ΍૊৫Λ΋ͱʹͨ͠ɺγεςϜʹٻΊΒΕΔੑ࣭ • ߏ଄ • ϨΠϠʔ΍αʔϏεͳͲͷઃܭɺιʔείʔυͷฤ੒ͳͲ • ΞʔΩςΫνϟܾఆ • ಛੑ΍ߏ଄ʹӨڹΛ༩͑Δҙࢥܾఆ • ઃܭࢦ਑ • νʔϜ͕࣮ࡍʹઃܭΛ͢ΔࡍͷࢀߟʹͰ͖Δࢦ਑

Slide 32

Slide 32 text

ߏ଄ͷ͸ͳ͠

Slide 33

Slide 33 text

ABEMAϞόΠϧΞϓϦͷϨΠϠʔߏ଄

Slide 34

Slide 34 text

αʔϏεͱͯ͠ͷ ڞ௨ͷ஌ࣝ ABEMAϞόΠϧΞϓϦͷϨΠϠʔߏ଄

Slide 35

Slide 35 text

ABEMAϞόΠϧΞϓϦͷϨΠϠʔߏ଄ αʔϏεͱͯ͠ͷ ڞ௨ͷ஌ࣝ ΞϓϦͱͯ͠ͷ ࢓༷

Slide 36

Slide 36 text

ABEMAϞόΠϧΞϓϦͷϨΠϠʔߏ଄ αʔϏεͱͯ͠ͷ ڞ௨ͷ஌ࣝ ΞϓϦͱͯ͠ͷ ࢓༷ UIදݱ΍ OSͱͷ΍ΓͱΓ

Slide 37

Slide 37 text

ABEMAϞόΠϧΞϓϦͷϨΠϠʔߏ଄ αʔϏεͱͯ͠ͷ ڞ௨ͷ஌ࣝ ΞϓϦͱͯ͠ͷ ࢓༷ UIදݱ΍ OSͱͷ΍ΓͱΓ σʔλͷӬଓԽͳͲ ֎෦ͱͷ΍ΓͱΓ

Slide 38

Slide 38 text

ABEMAϞόΠϧΞϓϦͷϨΠϠʔߏ଄ αʔϏεͱͯ͠ͷ ڞ௨ͷ஌ࣝ ΞϓϦͱͯ͠ͷ ࢓༷ UIදݱ΍ OSͱͷ΍ΓͱΓ σʔλͷӬଓԽͳͲ ֎෦ͱͷ΍ΓͱΓ • ͳͥAPIͷݺͼग़͠ΛRepositoryͰ ந৅ԽʢӅṭʣ͠ͳ͍ͷ͔

Slide 39

Slide 39 text

ABEMAϞόΠϧΞϓϦͷϨΠϠʔߏ଄ αʔϏεͱͯ͠ͷ ڞ௨ͷ஌ࣝ ΞϓϦͱͯ͠ͷ ࢓༷ UIදݱ΍ OSͱͷ΍ΓͱΓ σʔλͷӬଓԽͳͲ ֎෦ͱͷ΍ΓͱΓ • ͳͥAPIͷݺͼग़͠ΛRepositoryͰ ந৅ԽʢӅṭʣ͠ͳ͍ͷ͔ • ͦ΋ͦ΋ɺΞϓϦʹϨΠϠʔυΞʔΩςΫνϟʢυϝΠϯ΍Ϣʔεέʔεʣ ͸ඞཁͳͷ͔

Slide 40

Slide 40 text

DomainɾRepositoryͱAPI Repositoryͷ໾ׂ • Repository = υϝΠϯϞσϧΛ γεςϜ಺෦ ʹอଘ͢Δ໾ׂ • γεςϜʢΞϓϦʣͷ౎߹ͰมߋͰ͖Δ΋ͷ • υϝΠϯϞσϧʹҰக͢ΔܗͰઃܭͰ͖Δ • ಁաతʹѻ͑Δ৔߹͸ωοτϫʔΫΛލ͙৔߹΋͋Δ Repository Logic App File DB SDK iCloud Firebase

Slide 41

Slide 41 text

DomainɾRepositoryͱAPI Repositoryͷ໾ׂ • APIʢόοΫΤϯυʣ͸ΞϓϦͱ… • ผͷγεςϜʁ • ಉ͡γεςϜʁ

Slide 42

Slide 42 text

DomainɾRepositoryͱAPI Repositoryͷ໾ׂ • APIʢόοΫΤϯυʣ͸ΞϓϦͱ… • ผͷγεςϜʁ • ಉ͡γεςϜʁ → ͲͪΒͷଊ͑ํ΋͋Γ͑ΔͷͰ͸

Slide 43

Slide 43 text

DomainɾRepositoryͱAPI ʮγεςϜʯͷڥք • όοΫΤϯυΛ ผͷγεςϜ ͱଊ͑ͯΈΔ • ΫϥΠΞϯτͱόοΫΤϯυ͸ҟͳΔνʔϜ͕։ൃ͢Δ͜ͱ΋ଟ͍ • νʔϜ͕ҧ͑͹มԽͷεϐʔυ΋ҟͳΔ • cf. ίϯ΢ΣΠͷ๏ଇ • γεςϜͱͯ͠ͷ໨త͕ҧ͏ͷͰϞσϧ΋ҟͳΔ

Slide 44

Slide 44 text

• όοΫΤϯυΛ ผͷγεςϜ ͱଊ͑ͯΈΔ • Clean ArchitectureͳͲ͸ 1ͭͷγεςϜ ͷઃܭʹ͍ͭͯઆ໌͍ͯ͠Δ • ͦΕͧΕ͕ “ಉ৺ԁ” Λ͍࣋ͬͯΔ͜ͱʹͳΔ DomainɾRepositoryͱAPI ʮγεςϜʯͷڥք Domain Application Presentation Infrastructure Domain Application Presentation Infrastructure App Backend UI JSON protobuf … DB

Slide 45

Slide 45 text

• όοΫΤϯυΛ ಉ͡γεςϜ ͱଊ͑ͯΈΔ • υϝΠϯϞσϧͷ࠶࣮૷Λආ͚ΔͳΒɺΞϓϦ͸දࣔ ʢϓϨθϯςʔγϣϯ૚ʣʹప͢Δ • BFF΍Server-Driven UI͕͜ͷܗʹ͋ͨΔ DomainɾRepositoryͱAPI ʮγεςϜʯͷڥք Presentation Domain Application Infrastructure App Backend UI DB JSON protobuf …

Slide 46

Slide 46 text

• όοΫΤϯυΛ ಉ͡γεςϜ ͱଊ͑ͯΈΔ • υϝΠϯϞσϧͷ࠶࣮૷Λආ͚ΔͳΒɺΞϓϦ͸දࣔ ʢϓϨθϯςʔγϣϯ૚ʣʹప͢Δ • BFF΍Server-Driven UI͕͜ͷܗʹ͋ͨΔ DomainɾRepositoryͱAPI Repositoryͷ໾ׂ Presentation Domain Application Infrastructure App Backend UI DB ϓϥοτϑΥʔϜͷڥք νʔϜͷڥք BFF

Slide 47

Slide 47 text

DomainɾRepositoryͱAPI ʮγεςϜʯͷڥք • όοΫΤϯυΛ ผͷγεςϜ ͱଊ͑Δ • ΞϓϦݻ༗ͷϩδοΫ͕ଟ͍৔߹ • ΦϑϥΠϯରԠͳͲΞϓϦ୯ମͰಈ࡞͢Δඞཁ͕͋Δ৔߹ • ൚༻తͳAPIΛఏڙ/ར༻͢Δ͜ͱ͕ॏཁͳ৔߹ • αʔόʔଆͷ։ൃίετ͕ߴ͍৔߹ • όοΫΤϯυΛ ಉ͡γεςϜ ͱଊ͑Δ • ߴ͍ϦϦʔεαΠΫϧ͕ඞཁͳ৔߹ • ΫϥΠΞϯτͷछྨ͕গͳ͍৔߹ • ΞϓϦͱόοΫΤϯυͷ։ൃαΠΫϧΛ߹ΘͤΒΕΔ৔߹

Slide 48

Slide 48 text

DomainɾRepositoryͱAPI ʮγεςϜʯͷڥք • όοΫΤϯυΛ ผͷγεςϜ ͱଊ͑Δ • ΞϓϦݻ༗ͷϩδοΫ͕ଟ͍৔߹ • ΦϑϥΠϯରԠͳͲΞϓϦ୯ମͰಈ࡞͢Δඞཁ͕͋Δ৔߹ • ൚༻తͳAPIΛఏڙ/ར༻͢Δ͜ͱ͕ॏཁͳ৔߹ • αʔόʔଆͷ։ൃίετ͕ߴ͍৔߹ • όοΫΤϯυΛ ಉ͡γεςϜ ͱଊ͑Δ • ߴ͍ϦϦʔεαΠΫϧ͕ඞཁͳ৔߹ • ΫϥΠΞϯτͷछྨ͕গͳ͍৔߹ • ΞϓϦͱόοΫΤϯυͷ։ൃαΠΫϧΛ߹ΘͤΒΕΔ৔߹ ABEMAͰ͸ͪ͜Βͷଊ͑ํΛબ୒

Slide 49

Slide 49 text

ΞʔΩςΫνϟͷߟ͔͑ͨʢࢲݟʣ • ΞϓϦͷΞʔΩςΫνϟΛߟ͑Δͱ͖͸ • ٕज़ʹด͡ͳ͍ • ࣄۀͱͯ͠༏ઌ͢΂͖ΞʔΩςΫνϟಛੑΛݟఆΊΔ • ΞϓϦʹด͡ͳ͍ • ϓϩμΫτΛܗ࡞ΔʮγεςϜʯશମ͔ΒΞʔΩςΫνϟΛߟ͑Δ • ʮΞʔΩςΫνϟ୲౰ʯʹด͡ͳ͍ • νʔϜʹܾఆ΍ࢦ਑Λల։͢Δ

Slide 50

Slide 50 text

ABEMAͰͰ͖ͯ “͍ͳ͍” ͜ͱ • ΞʔΩςΫνϟಛੑͷ໌จԽ • ·ͩ҉໧తʹͳͬͯ͠·͍ͬͯΔ • νʔϜ΁ͷల։ • ݕূஈ֊ͷ෦෼΋ଟ͘ਁಁ͖ͤ͞Ε͍ͯͳ͍ • GitHub Discussions΍ADR (Architectural Decision Records) ʹΑΓه ࿥ʹ͸࢒࢝͠Ί͍ͯΔ • όοΫΤϯυνʔϜͱͷೝࣝ߹Θͤ • ABEMAશମͰͷυϝΠϯϞσϦϯάͳͲਐߦத

Slide 51

Slide 51 text

ΞʔΩςΫνϟͷͦͷઌ • ςετΞʔΩςΫνϟʢDevOpsʣ • ඼࣭ɾ։ൃαΠΫϧɾίετͷτϨʔυΦϑ • υϝΠϯϞσϦϯά΍Ϣʔεέʔεઃܭͷϓϩηε • DDDʢυϝΠϯۦಈ։ൃʣɺICONIXϓϩηε • ػೳ࢓༷ࣗମ΍UIσβΠϯ΁ͷΞϓϩʔν • UIߏ଄ԽɺϞσϧϕʔεUIσβΠϯ΍OOUIͱͷؔ܎ੑ • ૊৫ߏ଄ͱͷ૬ޓ࡞༻ • ίϯ΢ΣΠͷ๏ଇɾ ٯίϯ΢ΣΠͷ๏ଇ

Slide 52

Slide 52 text

• աڈൃදࢿྉ • ABEMA ϞόΠϧΞϓϦʹ͓͚ΔϦΞʔΩςΫνϟͷऔΓ૊Έͱల๬ (CA BASE NEXT 2021) https://ca-base-next.cyberagent.co.jp/2021/sessions/abema-mobile-rearchitecture/ https://developers.cyberagent.co.jp/blog/archives/29967/ • Multiplatform Engineering Roadmap for the Future (ABEMA Developer Conference 2021) https://developer.abema.io/2021/sessions/bvjpwJEoGP/ • ABEMAϞόΠϧΞϓϦ։ൃͷDevOpsઓུ (CyberAgent Developer Conference 2022) https://cadc.cyberagent.co.jp/2022/program/abema-mobile-app-devops/ • ΞʔΩςΫνϟؔ࿈ • Mark RichardsɺNeal Fordɹஶɺౡా ߒೋɹ༁ʰιϑτ΢ΣΞΞʔΩςΫνϟͷجૅʕΤϯδχΞϦϯάʹجͮ͘ମܥతΞϓϩʔνʱΦϥΠϦʔɾδϟύϯ https://www.oreilly.co.jp/books/9784873119823/ • Robert C. Martin (ஶ), ֯੐య, ∁໦ਖ਼߂ (༁) ʰClean Architecture ୡਓʹֶͿιϑτ΢ΣΞͷߏ଄ͱઃܭʱΞεΩʔυϫϯΰ https://www.kadokawa.co.jp/product/301806000678/ • Titus WintersɺTom ManshreckɺHyrum Wrightɹฤɺ஛ล ༃তɹ؂༁ɺٱ෋໦ ོҰɹ༁ ʰGoogleͷιϑτ΢ΣΞΤϯδχΞϦϯάʕ࣋ଓՄೳͳϓϩάϥϛϯάΛࢧ͑Δٕज़ɺจԽɺϓϩηεʱΦϥΠϦʔɾδϟύϯ https://www.oreilly.co.jp/books/9784873119656/ • ఝٶጏ೭հ, ԣນܓਅʰνʔϜͰҭͯΔAndroidΞϓϦઃܭʱ PEAKSग़൛ https://peaks.cc/books/architecture_with_team • ઃܭɺ։ൃϓϩηε • ΤϦοΫɾΤϰΝϯε ஶ ࠓؔ ߶ ؂༁ ࿨ஐ ӈܡ, ຀໺ ༞ࢠ ຋༁ ʰΤϦοΫɾΤϰΝϯεͷυϝΠϯۦಈઃܭʱᠳӭࣾ https://www.shoeisha.co.jp/book/detail/9784798126708 • ϰΥʔϯɾϰΝʔϊϯ ஶ ∁໦ ਖ਼߂ ຋༁ʰ࣮ફυϝΠϯۦಈઃܭʱᠳӭࣾ https://www.shoeisha.co.jp/book/detail/9784798131610 • μάɾϩʔθϯόʔά, ϚοτɾεςϑΝϯ ஶ ࡾՏ३Ұ, ࠤ౻ཽҰ, ધ໦݈ࣇ ༁ ʰϢʔεέʔεۦಈ։ൃ࣮ફΨΠυʱᠳӭࣾ https://www.shoeisha.co.jp/book/detail/9784798114453 • ʢຊࢿྉͰ௚઀Ҿ༻͍ͯ͠ͳ͍΋ͷ΋ؚΉʣ ࢀߟจݙɾؔ࿈ॻ੶