Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIBs でのダイエット
Slide 2
Slide 2 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved ⾃⼰紹介 2 • Tatsunori Kuri (@kuritatu18) • iOS app Developer • JapanTaxi (2018.9 ~)
Slide 3
Slide 3 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved 今⽇話すこと 3 - 1.RIBsとは - 2. 画⾯ が複雑なときのダイエット⽅法 - 3.ロジックが複雑なときのダイエット⽅法 - 4.まとめ
Slide 4
Slide 4 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIBs との出会い 4 応募 2018.4 2018.6 内定 2018.9.12 2018.9.16 ⼊社 v4リニューアル RIBs 採⽤
Slide 5
Slide 5 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIBs とは 5
Slide 6
Slide 6 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIBs とは 6 (https://github.com/uber/RIBs/wiki より)
Slide 7
Slide 7 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIBs のコンポーネント 7 - Router - RIB のルーティング - Interactor - ビジネスロジックを持つ - View(Presenter) - レイアウト、ユーザー操作の処理
Slide 8
Slide 8 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIBs のコンポーネント 8 - Builder - RIB内の構成要素 Router, Interactor, ViewController と ⼦RIB Builderのインスタンス化 - RIB 内部への依存性の注⼊と、RIB 間の依存関係の解決
Slide 9
Slide 9 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIB 内のコミュニケーション 9 Router Interactor View Controller Builder Routing Presentable PresentableListener Build()
Slide 10
Slide 10 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIB のルーティングとライフサイクル 10 Child RIB Router Interactor View Controller Builder Parent RIB Router Interactor View Controller Builder Child RIB の Router を attach
Slide 11
Slide 11 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIB のルーティングとライフサイクル 11 Child RIB Router load() Interactor View Controller Builder Parent RIB Router Interactor View Controller Builder Child RIB の Router を attach
Slide 12
Slide 12 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIB のルーティングとライフサイクル 12 Child RIB Router load() Interactor activate() View Controller Builder Parent RIB Router Interactor View Controller Builder Child RIB の Router を attach
Slide 13
Slide 13 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIB のルーティングとライフサイクル 13 Child RIB Router Interactor View Controller Builder Parent RIB Router Interactor View Controller Builder Child RIB の Router を detach
Slide 14
Slide 14 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIB のルーティングとライフサイクル 14 Child RIB Router Interactor deactivate() View Controller Builder Parent RIB Router Interactor View Controller Builder Child RIB の Router を detach
Slide 15
Slide 15 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIB間のコミュニケーション 15 Child RIB Router Interactor View Controller Builder Parent RIB Router Interactor View Controller Builder Listener経由で 親RIBの処理を呼ぶ
Slide 16
Slide 16 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved 16 https://blog.japantaxi.co.jp/2018/12/09/1991
Slide 17
Slide 17 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIBs の特徴:ツリー構造 17 ※注⽂導線の⼀部抜粋:2020年2⽉6⽇時点
Slide 18
Slide 18 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved 18 https://github.com/srea/RIBsTreeViewerClient
Slide 19
Slide 19 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved 画⾯が複雑になってきたとき 19
Slide 20
Slide 20 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIBs × MicroViewController 20
Slide 21
Slide 21 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved MicroViewControllerとは 21 https://www.icloud.com/keynote/0vgTYDXyHQTd0l1FKTiF1jT7g#MicroViewController-en
Slide 22
Slide 22 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved ⼦ViewController の追加 22 - View - StackView
Slide 23
Slide 23 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved 利⽤例 23
Slide 24
Slide 24 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved 注⽂詳細画⾯ 24
Slide 25
Slide 25 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved 注⽂詳細画⾯のViewHierarchy 25
Slide 26
Slide 26 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved 注⽂詳細画⾯のViewHierarchy 26
Slide 27
Slide 27 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIBs × MicroViewController 27 - Builder.build()
Slide 28
Slide 28 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIBs × MicroViewController 28 - Builder.build()
Slide 29
Slide 29 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIBs × MicroViewController 29 - Builder.build()
Slide 30
Slide 30 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIBs × MicroViewController 30 - ViewControllable - Router.Init()
Slide 31
Slide 31 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIBs × MicroViewController 31 - Router.didLoad()
Slide 32
Slide 32 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIBs × MicroViewController 32 - Router.didLoad()
Slide 33
Slide 33 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved ViewHierarchy と RIBsツリー 33
Slide 34
Slide 34 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved 画⾯全体は複雑でも 1つ1つはスリムになった 34
Slide 35
Slide 35 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved ロジックが複雑になってきたとき 35
Slide 36
Slide 36 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved View の無い RIB に切り出す 36
Slide 37
Slide 37 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved View の無いRIB 37
Slide 38
Slide 38 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved View の無いRIB の追加 38 Owns corresponding view の チェックを外す ViewController の無い RIB が作成される Templete から RIB を選択
Slide 39
Slide 39 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIB の分割前 39 Parent RIB Router Interactor ・処理A ・処理B ・処理C View Controller Builder
Slide 40
Slide 40 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIB の分割後 40 Parent RIB Router Interactor ・処理A View Controller Builder B Child RIB Router Builder Interactor ・処理B C Child RIB Router Builder Interactor ・処理C B Child Listener C Child Listener
Slide 41
Slide 41 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved 利⽤例 41
Slide 42
Slide 42 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved 乗⾞地選択画⾯ 42
Slide 43
Slide 43 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved 乗⾞地選択画⾯の下の部分 43
Slide 44
Slide 44 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved View の無い RIB 44
Slide 45
Slide 45 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved View の無い RIB 45 地図を動かした際の緯度/経度でAPI から住所を取得するRIB
Slide 46
Slide 46 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved View の無い RIB 46 APIから乗⾞の禁⽌エリア取得と禁⽌ エリア内かの判定をするRIB
Slide 47
Slide 47 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved View の無い RIB 47 次の画⾯に必要な情報をAPIから取得 するRIB
Slide 48
Slide 48 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved View の無い RIB 48 View の無いRIBから別のViewのある RIB にルーティングすることもある
Slide 49
Slide 49 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved 複雑なロジックを分散することで 1つ1つはスリムになった 49
Slide 50
Slide 50 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved まとめ 50 - 画⾯とロジックの両⾯からダイエットをすることが可能 - ViewController の平均⾏数:154、500⾏超え1つ - Interactorの平均⾏数:141、500⾏超え2つ - 1つ1つの RIB がスリムになる - 責務が明確になる - 追加、修正による影響が最⼩限に - テストが書きやすい
Slide 51
Slide 51 text
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved RIBs とっても良いですよ 51
Slide 52
Slide 52 text
จষɾը૾ͷ༰ͷແஅసࡌٴͼෳͷߦҝ͝ԕྀ͍ͩ͘͞ɻ Proprietary and Confidential ©2020 JapanTaxi, Inc. All Rights Reserved ˟102-0094ɹ౦ژઍా۠لඌҪொ3-12 3-12 Kioicho Chiyoda-ku, Tokyo 102-0094 Japan TEL 03-6265-6265ɹFAX 03-3239-8115 www.japantaxi.co.jp