Android アーキテクチャ コンポーネントを活用して出会い系アプリの問題点を解決した Tinder

Tinder は世界で最も人気のある出会い系アプリです。出会う方法やデートの仕方が変わったことで知られ、右にスワイプして他のユーザーとつながり、チャットをできるようにします。Tinder で 1 日に行われるマッチングは 2,600 万以上にのぼり、2012 年にリリースされて以来、マッチングの総数は 200 億を超えています。

同社は、ユーザーの需要に応じてアプリを迅速にスケールアップする必要があったものの、データベースの実装が初期段階から取り残され、拡張がますます複雑になっていました。また、ライフサイクルの複雑さを軽減するために、ビューを多用するアーキテクチャを使用していましたが、アクティビティに固有のライフサイクル イベントを把握する必要がありました。この会社には、Cursor オブジェクトのドメイン オブジェクトへのマーシャリング、データベース移行、クエリの継続的な実行といったタスクを処理するための一貫したフレームワークがなかったのです。

Eyecon の取り組み

プロフィールの画像

図 1: Tinder に掲載された写真家の写真

Tinder は、コードをアップグレードするためのソリューションとして Android アーキテクチャ コンポーネントを採用しました。同社は Lifecycle を使用して View にホスト アクティビティのライフサイクルを監視させ、LifecycleObserver を使用して分散型のプラグイン アーキテクチャを促進し、PresenterActivityView オブジェクトの肥大化を防止しました。Room 永続ライブラリは、ローカル データベースを定義、管理、クエリするためのターンキー メソッドを提供しています。

Tinder の開発チームは、わずか 2 週間で LifecycleObserver とプラグイン アーキテクチャを実装し、内部広告 SDK 用の Room をシームレスに実装しました。

Tinder の Android 責任者である Andy Lawton 氏は、次のように述べています。「プラグインやビューの内部でアクティビティのライフサイクルを管理するために、多大な時間を費やす必要がなくなりました。「Room はよく考え抜かれていて、永続化レイヤを簡単に実装できます。内部広告 SDK 用に Room を使用したことで、おそらく、先行開発期間を 1 週間短縮できました」

結果

Tinder は広告 SDK の結果に非常に満足しており、現在、データベース レイヤ全体の Room への移行を進めています。テストは簡単で、Room は登録解除を忘れないように保護することでメモリリークが減少しました。Android アーキテクチャ コンポーネントは、メモリ フットプリントの削減にも役立っています。

「Android アーキテクチャ コンポーネントは、デベロッパーがあらゆる規模で直面する課題の多くを解決するための処方箋を提供してくれます」と Lawton 氏は言います。 「ライフサイクル対応コンポーネントを使用することで、Tinder は開発者の生産性、テストのしやすさ、モジュール性を向上させると同時に、ビューファーストのアーキテクチャを促進できました。Room を使用することで、SQLite を管理するための他のソリューションが不要になり、データベースの管理と照会を設定内で実行できるようになっています」

指標

LifecycleObserver / プラグイン アーキテクチャにより、500 行を超えるコードを MainActivity から削除しました

始める

Android アーキテクチャ コンポーネントは、Android Jetpack の一部として、全デベロッパーに公開されています。Android アーキテクチャ コンポーネントを使ってみる場合は、こちらをご覧ください