Slide 1

Slide 1 text

C A . s w i f t 2 0 2 5 . 3 . 3 株 式 会 社 サ イ バ ー エ ー ジ ェ ン ト A m e b a L I F E 事 業 本 部 小 田 島 直 樹 TCAを用いたAmeba のリアーキテクチャ

Slide 2

Slide 2 text

C A . s w i f t 2 0 2 5 . 3 . 3 小 田 島 直 樹 A m e ba L I F E 事 業 本 部   @ d e v d a z y # 2 2 中 途 # モ ン ハ ン

Slide 3

Slide 3 text

C A . s w i f t 2 0 2 5 . 3 . 3 Contents # 1 A m e b a ア プ リ に つ い て # 2 こ れ ま で の ア ー キ テ ク チ ャ と 課 題 # 3 リ ア ー キ テ ク チ ャ と T C A の 導 入 # 4 導 入 し て の メ リ ッ ト ・ デ メ リ ッ ト # 5 こ れ か ら

Slide 4

Slide 4 text

C A . s w i f t 2 0 2 5 . 3 . 3 #01 A m e ba ア プ リ に つ いて

Slide 5

Slide 5 text

C A . s w i f t 2 0 2 5 . 3 . 3 A m e b a は 2 0 周 年 ! ( 2 0 2 4 / 9 / 1 5 )

Slide 6

Slide 6 text

C A . s w i f t 2 0 2 5 . 3 . 3 ƒ ブ ロ グ 読 み 書 p f H T M L ベ ース の エ ディ タ ・ リ ー ダ V ƒ 広  f 記 事 内 や マ ン ガ の リ ワ ー 5 ƒ P i c g f ア フィ リ エ イ y ƒ マ ン 0 ƒ W i d g e ' f アク セ ス 数 の 表 r ƒ 有 料 プ ラ H f I A P で の サ ブ ス % f 広 告 の 非 表 示 や レ ッ ス ン の 視 聴 ア プ リ は 1 3 年 目

Slide 7

Slide 7 text

C A . s w i f t 2 0 2 5 . 3 . 3 #02 こ れ ま で の アー キ テ ク チ ャ と 課 題

Slide 8

Slide 8 text

C A . s w i f t 2 0 2 5 . 3 . 3 アー キ テ ク チ ャ ( B e fo re ) † M V V M ( + C l e a n A r c h i t e c t u r e a † R x S w i f t で 単 方 向 な デ ー タ フ ロ F † I n p u t : V i e w の イ ベ ン r † O u t p u t : V i e w の 更 新 情 A † V M は V i e w の 状 態 を I F に は 持 た ず、 デ ー タ 流 す ハ ブ

Slide 9

Slide 9 text

C A . s w i f t 2 0 2 5 . 3 . 3 課題はあったの か?

Slide 10

Slide 10 text

C A . s w i f t 2 0 2 5 . 3 . 3 ロ ジ ッ ク の 複 雑 さ の 限 界 ƒ 基 本 的 に 1 画 面 1 V M の 構 成 。 複 雑 な 画 面 の も つ V M , U s e C a s e の 肥 大 化 が 顕 Y ƒ 複 雑 な 条 件 分 岐 を R x S w i f t で 表 現 し つ づ け て き た こ と に よ る 可 読 性 の 低 4 ƒ 保 守 性 ・ 拡 張 性 の 低 4 ƒ → 開 発 速 度 の 低 下

Slide 11

Slide 11 text

C A . s w i f t 2 0 2 5 . 3 . 3 モ ダ ン な 開 発 の 導 入 R V i e w の 状 態 を 保 持 し な い た め 、 S t a t e - D r i v e n な S w i f t U I と 相 性 が 悪 D R I F が R x S w i f t に 完 全 に 依 存 し て い る た め S w i f t C o n c u r r e n c y の 導 入 が 難 し D R チ ー ム の 魅 力 ・ 採 用 力 の D o w n

Slide 12

Slide 12 text

C A . s w i f t 2 0 2 5 . 3 . 3 つまり

Slide 13

Slide 13 text

C A . s w i f t 2 0 2 5 . 3 . 3 効率よく モダンなコード を書きたい

Slide 14

Slide 14 text

C A . s w i f t 2 0 2 5 . 3 . 3 #03 リ アー キ テ ク チ ャ と TC A の 導 入

Slide 15

Slide 15 text

C A . s w i f t 2 0 2 5 . 3 . 3 T h e C o m p o s a b l e A rc h i te ct u re H F l u x / R e d u x パ タ ー ン を 基 に 設 1 H s w i f t - c o m p o s a b l e - a r c h i t e c t u r e

Slide 16

Slide 16 text

C A . s w i f t 2 0 2 5 . 3 . 3 リ アー キ テ ク チ ャ

Slide 17

Slide 17 text

C A . s w i f t 2 0 2 5 . 3 . 3 リ アー キ テ ク チ ャ

Slide 18

Slide 18 text

C A . s w i f t 2 0 2 5 . 3 . 3 I n p u t → A ct i o n

Slide 19

Slide 19 text

C A . s w i f t 2 0 2 5 . 3 . 3 A ct i o n D V i e w の ラ イ フ サ イ ク ル 、 ユ ー ザ ー の 操 作 を A c t i o n と し て 定 義 す & D そ の 機 能 に 必 要 な イ ベ ン ト は すべ て 定 義 す る

Slide 20

Slide 20 text

C A . s w i f t 2 0 2 5 . 3 . 3 b i n d → Re d u ce r + E ffe ct

Slide 21

Slide 21 text

C A . s w i f t 2 0 2 5 . 3 . 3 Re d u ce r + E ffe ct i V i e w か ら の A c t i o n か ら 副 作 用 と な る E ff e c t を 発 8 i こ こ で は 非 同 期 処 2 i E ff e c t 内 で は 状 態 を 更 新 し な 3 i E ff e c t は 結 果 を A c t i o n と し て 送 信 し 、 状 態 を 更 新 す る

Slide 22

Slide 22 text

C A . s w i f t 2 0 2 5 . 3 . 3 #04 導 入 して の メ リ ッ ト ・ デ メ リ ッ ト

Slide 23

Slide 23 text

C A . s w i f t 2 0 2 5 . 3 . 3 ロ ジ ッ ク が 明 確 に な る C A c t i o n は そ の 機 能 で 発 生 す る すべ て の イ ベ ン ト が 定 義 さ れ て い る

Slide 24

Slide 24 text

C A . s w i f t 2 0 2 5 . 3 . 3 ロ ジ ッ ク が 明 確 に な る i A c t i o n は そ の 機 能 で 発 生 す る すべ て の イ ベ ン ト が 定 義 さ れ て い ` i E ff e c t で は S t a t e を 変 更 で き な い た め 、 i ボ タ ン を 押 し た → 読 み 込 み 開 f i 読 み 込 み 成 功 → タ イ ト ル 更 新 発 生 す る A c t i o n に 対 す る 処 理 が 簡 潔 に 網 羅 的 に 表 現 さ れ `

Slide 25

Slide 25 text

C A . s w i f t 2 0 2 5 . 3 . 3 テ ス ト が 自 然 と 網 羅 的 に な る

Slide 26

Slide 26 text

C A . s w i f t 2 0 2 5 . 3 . 3 テ ス ト が 自 然 と 網 羅 的 に な る E ff e c t が 発 行 す る A c t i o n が あ る の に テ ス ト さ れ て い な い

Slide 27

Slide 27 text

C A . s w i f t 2 0 2 5 . 3 . 3 テ ス ト が 自 然 と 網 羅 的 に な る

Slide 28

Slide 28 text

C A . s w i f t 2 0 2 5 . 3 . 3 画 面 遷 移 を シ ーム レ ス に 移 行 で きる V i e w U I V i e w C o n t r o l l e r

Slide 29

Slide 29 text

C A . s w i f t 2 0 2 5 . 3 . 3 画 面 遷 移 を シ ーム レ ス に 移 行 で きる U I H o s t i n g C o n t r o l l e r

Slide 30

Slide 30 text

C A . s w i f t 2 0 2 5 . 3 . 3 TC A x S w i f t U I の 画 面 遷 移 ‡ S w i f t U I の 状 態 管 理 に よ る 画 面 遷 移 を 実 現 し た e ‡ S w i f t U I 側 の 状 態 だ け で 完 結 で き る ( テ ス ト な ど C ‡ フ ル S w i f t U I 化 し た 時 の マ イ グ レ ー シ ョ ン が 少 な く て 済 む

Slide 31

Slide 31 text

C A . s w i f t 2 0 2 5 . 3 . 3 TC A x U I K i t の 画 面 遷 移 t ほ と ん ど の I F が S w i f t U I と 同 Q t 状 態 管 理 に よ る 画 面 遷 5 t S t o r e 側 の コ ー ド は 同 Q t s w i f t - n a v i g a t i o n

Slide 32

Slide 32 text

C A . s w i f t 2 0 2 5 . 3 . 3 ロ ジ ッ ク の 分 割 が 簡 単

Slide 33

Slide 33 text

C A . s w i f t 2 0 2 5 . 3 . 3 ロ ジ ッ ク の 分 割 が 簡 単 A V i e w の よ う な 感 覚 で 、 分 割 と 合 成 が 可 4 A 子 の A c t i o n 、 S t a t e は 親 か ら 観 測 が で き る

Slide 34

Slide 34 text

C A . s w i f t 2 0 2 5 . 3 . 3 学 習 コ ス ト が 大 き い 7 単 純 に フ レ ー ム ワ ー ク を 一 つ 理 解 し な け れ ば な ら な ” 7 特 に F l u x / R e d u x 系 の ア ー キ テ ク チ ャ が 未 経 験 の メ ン バ ー へ の 負 荷 が 高 ” 7 7 C a s e P a t h a b l e : e n u m の c a s e を K e y P a t h の よ う に ア ク セ ス す る T C A 独 自 の 記 法 が 存 在 す d

Slide 35

Slide 35 text

C A . s w i f t 2 0 2 5 . 3 . 3 学 習 コ ス ト が 大 き い Q 例 を 作 ` Q M V V M 時 代 か ら の マ イ グ レ ー シ ョ ン ガ イ ド を 整 え ` Q X c o d e の テ ン プ レ ー ト 機 能 を 使 用 す る

Slide 36

Slide 36 text

C A . s w i f t 2 0 2 5 . 3 . 3 パ フ ォ ー マ ンス は n ot B e st Q R e d u c e r を 分 割 し や す い 分 、 不 要 な V i e w に ま で R e d u c e r を つ け て し ま い が ) Q A c t i o n の 送 信 は 負 荷 が 重 め の 処 理

Slide 37

Slide 37 text

C A . s w i f t 2 0 2 5 . 3 . 3 パ フ ォ ー マ ンス は n ot B e st G A c t i o n を 極 力 減 ら せ る よ う に 吟 Q G テ ス ト へ の 影 響 が 出 る の は

Slide 38

Slide 38 text

C A . s w i f t 2 0 2 5 . 3 . 3 Po i n t- f re e へ の 依 存 リ ス ク c R x S w i f t の 例 に 同 じ く 、 T C A は 開 発 元 の P o i n t - f r e e の 支 え が 大 き Q c 特 に V i e w と R e d u c e r を 繋 ぐ c O S S と は い え 、 サ ポ ー ト さ れ な く な っ た 時 に 更 新 の 継 続 が う ま く い く 保 証 は な い ラ ン タ イ ム ( S t o r e ) の 部 分 は 、 利 用 者 は 意 識 し て い な い た め 、 万 が 一 の 場 合 に 対 応 が 難 し Q

Slide 39

Slide 39 text

C A . s w i f t 2 0 2 5 . 3 . 3 記 法 の ブ レ が か な り 抑 制 さ れ る v チ ー ム 開 発 で は 、 書 き 方 の 部 分 で 揺 れ る こ と が 多 f v T C A は フ レ ー ム ワ ー ク 化 さ れ た ア ー キ テ ク チ F v A P I に な い 書 き 方 は で き な f v ど う すべ き か が 、 G i t H u b や S l a c k で 活 発 に 行 わ れ て い ˜ v チ ー ム 内 で 議 論 が で き な い / 議 論 が 薄 ま る と 言 う 点 で は B A D … か も

Slide 40

Slide 40 text

C A . s w i f t 2 0 2 5 . 3 . 3 #05 こ れ か ら

Slide 41

Slide 41 text

C A . s w i f t 2 0 2 5 . 3 . 3 ま ず は や り 切 る G 中 途 半 端 に 移 行 し 、 複 数 の ア ー キ テ ク チ ャ が 混 ざ っ て し ま ! G G 何 よ り の 技 術 的 負 債 S w i f t 6 、 C o c o a P o d s な ど 対 応 し な け れ ば な ら な い こ と が 複 数 あ r G 中 長 期 的 な 計 画 を 立 て て 進 め て い く

Slide 42

Slide 42 text

C A . s w i f t 2 0 2 5 . 3 . 3 引 き 続 き より 良 い 方 法 を 求 め て い く G T C A の 動 向 を チ ェ ッ ク す る G O S S の 強 み を 活 か し て 情 報 収 ( G v 1 の リ リ ー ス か ら も か な り 扱 い や す く な っ て き — G S w i f t D a t a と の 連 携 な ど 、 ま だ ま だ 進 化 し て い u G 世 界 中 の i O S e r が 課 題 と 解 決 策 を 提 示 し て く れ て い u G A m e b a で 出 た 課 題 は 大 体 す で に 解 決 さ れ て い る

Slide 43

Slide 43 text

C A . s w i f t 2 0 2 5 . 3 . 3 ご 清 聴 あ り が と う ご ざ い ま し た !