Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Introduction to RIBs
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yuji Hato
March 06, 2019
Technology
1.5k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Introduction to RIBs
Introduction to RIBs
Yuji Hato
March 06, 2019
More Decks by Yuji Hato
See All by Yuji Hato
ABEMAにおける 生成AI活用の現在地 / The Current Status of Generative AI at ABEMA
dekatotoro
1
1.3k
ABEMAモバイルアプリ開発のDevOps戦略
dekatotoro
1
800
Multiplatform Engineering Roadmap for the Future
dekatotoro
1
190
継続的な開発スタイル 「AbemaTV iOSアプリを週一で リリースしている話」
dekatotoro
6
4.3k
iOS Adaptive UI - 解像度の異なるデバイスや画面の向きに対応する 最適なレイアウトへ -
dekatotoro
0
560
動画アプリをなめらかに動かす技術 - iOS -
dekatotoro
0
520
5分で学ぶ差分更新とRxDataSources
dekatotoro
0
390
AbemaTV モバイルアプリの開発体制と 開発プロセスの話
dekatotoro
0
290
Apple TV - tvOS入門 -
dekatotoro
0
230
Other Decks in Technology
See All in Technology
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
2
830
新米を「売り越さない」、Aurora DSQLで作る在庫ゼロ死守の限定ドロップEC
yama3133
0
190
サボる子はいねぇがー!AgentCoreハーネスの脆弱性に学ぶ、エージェントの入力バリデーション
iwamot
PRO
5
310
GCASアップデート(202607-202610)
techniczna
1
240
Microsoft Entra Kerberos で実現するクラウド デバイス管理
tamaiyutaro
2
650
Lint の層を組み直した話
bengo4com
3
330
プロダクションコードにおける encoding/json から encoding/json/v2 へのスムーズな移行
sansantech
PRO
1
190
自治体AIコンタクトセンター、何をどこに任せる?~Amazon Connect Customer +Amazon Bedrockの実践知~ / 20261107 Satoshi Torano
shift_evolve
PRO
1
110
属人化したISMS運用をGitHubとAIで仕組み化した1年間の記録
sioncojp
1
850
仕様と現実の間で落とし所を探るリモートMCPの認証・認可 — Sansanの認証基盤における課題と実践
sansantech
PRO
2
150
Copilot Coworkで「みのるん式」やってみた
minorun365
PRO
2
1.6k
並列度を下げたら速くなった — go build の重複コンパイルを実測で見る
tomoaki25
2
950
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
350
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
70
68k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
340
Designing Experiences People Love
moore
143
24k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
620
Building Better People: How to give real-time feedback that sticks.
wjessup
371
20k
Ruling the World: When Life Gets Gamed
codingconduct
0
440
Site-Speed That Sticks
csswizardry
13
1.6k
What's in a price? How to price your products and services
michaelherold
247
13k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.7k
Transcript
Introduction to RIBs CA.swift 2019/03/06 Yuji Hato
ށ ༐ೋ • Contributed services dekatotoro @dekatotoro yuji.hato
Agenda 1. What are RIBs 2. Parts of RIB 3.
Communication Between RIBs 4. RIBs Tooling 5. RIBs practice 6. Conclusion
1 What are RIBs
What are RIBs RIBs is Uber’s cross-platform architecture framework
What are RIBs • େنͳϞόΠϧΞϓϦέʔγϣϯ༻ʹઃܭ͞Ε͍ͯΔ • άϩʔόϧͳঢ়ଶΛ࠷খݶʹ͑Δ • ςετ༰қੑ •
ͱґଘ͕ؔ໌֬ • ΦʔϓϯɾΫϩʔζυͷݪଇ(OCP) • ϏδωεϩδοΫυϦϒϯͷtreeߏ • λΠϓηʔϑ ಛ
What are RIBs • RIBҎԼͷ಄จࣈ - Router - Interactor -
Builder • RIBsRIBͷू߹ମ ༝དྷ
What are RIBs ߏ • RIB tree - RIBsͰϏδωεϩδοΫͷ୯ҐͰ͚ͨ ʮRIBʯΛҰͭͷմͱͯ͠ѻ͏
- RIBΛtreeߏͰߏங͢Δ - UI֊ͱҰக͠ͳͯ͘Α͍ - RIBಉ࢜ʹࢠ͕ؔ͋Γɺґଘؔͦ͜ ʹ͚ͩଘࡏ͢Δ - ґଘ͕ؔͳ͍RIBӨڹ͠ͳ͍
2 Parts of RIB
Parts of RIB RIB Overall
Parts of RIB RIB Overall • Interactor • Router •
Builder • View(Controller) (optional) • Presenter (optional) • Component
Parts of RIB Interactor • ϏδωεϩδοΫ Streamͷߪಡɺঢ়ଶͷมߋΛߦ͍ɺ RIBView(Controller)ॲཧΛҕ ৡ͢Δ
Parts of RIB Router • ϧʔςΟϯά RIBsࢠؔΛ࣋ͬͨπϦʔߏʹ ͳ͓ͬͯΓɺRouterInteractorΛ ࢹͯ͠ࢠRIBͱͷଓ/அΛߦ͏
Parts of RIB Builder • RIBߏཁૉͷੜ - Router - Interactor
- View(Controller) (optional) - ࢠRIB (optional) • DI ֤ཁૉͷґଘੑͷղܾΛߦ͏
Parts of RIB View(Controller) • UIͷදࣔ - ViewͷੜϨΠΞτௐ - Interactor͔Βҕৡ͞ΕͨUIߋ৽
- Router͔Βҕৡ͞Εͨը໘ભҠ - RIBͷoptionalཁૉ
Parts of RIB Presenter • DataModelͷม - BusinessModel → ViewModel
ม - ViewModel → BusinessModel ม - มॲཧͷTestability - RIBͷoptionalཁૉͰলུ͞Εͨ ߹ɺมॲཧView(Controller)·ͨ Interactor͕୲͏
Parts of RIB Component • RIBͷґଘؔΛཧ - Builderͷิॿ - ࣗͷґଘੑΛॴ༗
- RIBΛߏங͢ΔͨΊʹඞཁͳ֎෦ґଘͷΞΫ ηε - ଞͷRIB͔ΒͷΞΫηε੍ޚ • DIྫ ࢠRIBʹґଘΛͨ͢ΊʹRIBͷComponent ΛࢠRIBͷBuilderʹೖ͢Δ
Parts of RIB Object references in RIB • Router -
Interactor - View(Controller) • Interactor - Presenter - View(Controller) - weak Router • View(Controller) - weak Interactor
3 Communication Between RIBs
Communication Between RIBs RIB tree downward A RIB B RIB
C RIB • ࢠRIBͷBuilder.build()ʹύϥϝʔλͰ͢ • ComponentΛ༻͍ͨDIͰRx StreamsΛ͢
Communication Between RIBs RIB tree upwards A RIB B RIB
C RIB • RIBͷInteractorࢠRIBͷListenerΠϯλʔϑΣʔ εΛ࣮ • ࢠRIB͕ListenerΛհͯ͠RIBͷInteractorͷϏδω εϩδοΫΛ࣮ߦ • RIB͕ࢠRIBͷRx StreamsΛsubscribe͠ͳ͍ - ϝϞϦϦʔΫΛ͙ - ૄ݁߹ɺtestability
4 RIBs Tooling
RIBs Tooling RIBs Xcode Templates • RIBΫϥεͷੜ • RIBςετΫϥεͷੜ •
Component Extensionͷੜ
RIBs Tooling RIBΫϥεͷੜ • Builder • Interactor • Router •
View(Controller) (optional)
RIBs Tooling RIBςετΫϥεͷੜ • InteractorTests • RouterTests
RIBs Tooling Component Extensionͷੜ • ࢠRIBʹґଘͨ͠ComponentΛੜ RIB͔ΒࢠRIBʹඞཁͳґଘੑΛೖͨΊͷ Extension
5 RIBs practice
RIBs practice RIBs simple sample https://github.com/dekatotoro/RIBsSample RootRIB SearchRIB DetailRIB
5 Conclusion
Conclusion • UIKitʹґଘ͠ͳ͍ϥΠϑαΠΫϧ • ͱঢ়ଶͷείʔϓΛ໌֬ʹͰ͖Δ • ϏδωεϩδοΫυϦϒϯͷtreeߏͰυϝΠϯߏͷݟ͑Δ ԽͱӨڹൣғ͕Ѳͦ͢͠͏ • େنͰͳͯ͘ಋೖΛݕ౼ͯ͠ྑͦ͞͏
Thank you ࢀߟࢿྉ https://github.com/uber/RIBs/wiki https://www.slideshare.net/dhaval2025/ubers-new-mobile-architecture https://www.youtube.com/watch?v=FfwZSk6VRVY https://blog.japantaxi.co.jp/2018/12/09/1991