この記事は Mobility Technologies Advent Calendar 2021 の17日目です。 タクシーアプリ「GO」の iOS アプリを開発している今入です。日々複雑化するアプリをどのように設計して開発しているかについて紹介します。 はじめにタクシーアプリ「GO」の iOS アプリでは RIBs アーキテクチャを採用しています。RIBs アーキテクチャは「RIB」と呼ばれるコンポーネントを組み合わせることで、木構造で iOS アプリを構築させることができます。「RIB」同士の依存関係をどのように組み立てていくかがアプリの設計の肝となります。 タクシーアプリ「GO」および「JapanTaxi」アプリに RIBs アーキテクチャを採用し 3 年が経ちました。様々な機能開発を通し RIBs アーキテクチャにおける iOS アプリの設計を行ってきました。振り返ってみるとその設
The VIPER architectural pattern is an alternative to MVC or MVVM. And while the SwiftUI and Combine frameworks create a powerful combination that makes quick work of building complex UIs and moving data around an app, they also come with their own challenges and opinions about architecture. It’s a common belief that all of the app logic should now go into a SwiftUI view, but that’s not the case. V
RIBs is Uber’s cross-platform architecture framework. This framework is designed for large mobile applications that contain many nested states. When designing this framework for Uber, we were adhering to the following principles: Encourage Cross-Platform Collaboration: Most of the complex parts of our apps are similar on both iOS and Android. RIBs present similar development patterns for Android a
IntroIn large scale projects, and arguably in any project, the capability for creating, running and testing parts in isolation is a necessity. A change in one part should not require to recompile the entire app until it is really necessary. In this article, I’m going to explain how we can create a modular architecture using Cocoapods and Xcode. Something that looks like this: MotivationImagine we
※本記事は Mobility Technologies の前身である JapanTaxi 時代に公開していたもので、記事中での会社やサービスに関する記述は公開当時のものです。 この記事は、JapanTaxi Advent Calendar 2018の9日目の記事です。 はじめに2018年3月から9月までの半年間、「JapanTaxi」iOSアプリのUIリニューアルを行いました。積み重なる技術的負債と闘いながら開発を続けてきましたが、これを良い機会とし、iOSアプリの設計も一から見直すことになりました。結果として、MVVMからRIBsへアーキテクチャを変更することに成功しました。この記事では、「JapanTaxi」iOSアプリの設計方針をはじめ、RIBsとは何か、そしてRIBsを採用したことによる変化について紹介します。 設計について2018年3月、iOSチームメンバでアプリの設計について議
Backpressure (or back pressure) is something nearly every software engineer will have to deal with at some point, and for some it’s a frequent problem. But the term itself isn’t nearly as understood and recognized as such. In this post I’m going to elaborate on what exactly backpressure is, when it’s common, and the strategies we can use to mitigate it. I recently gave a talk about this at Reactiv
iOS Interview Questions and Answers for Senior Developers Part 1 - Swift I recently got into the position of leading the technical interview when my client was searching for a new senior iOS developer. It's a challenging task to evaluate the skills and knowledge of another developer. So in this post, I want to share my results of the most useful iOS and Swift questions and answers with you. I cate
The iOS Developer Community Survey shows that Model-View-ViewModel (MVVM) is the second most popular architectural pattern for designing iOS apps. It makes a good reason to study the state of modern MVVM with SwiftUI and Combine. In this article we’ll cover: The purpose of MVVM. The components of the MVVM pattern. The flow of data and dependencies in MVVM. Why should we use unidirectional data flo
In Lambda, concurrency is the number of in-flight requests that your function is currently handling. There are two types of concurrency controls available: Reserved concurrency – This represents the maximum number of concurrent instances allocated to your function. When a function has reserved concurrency, no other function can use that concurrency. Configuring reserved concurrency for a function
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く