Zillow: Android アーキテクチャ コンポーネントを使用して、わかりやすい新しいコードを作成
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。

オンライン不動産市場のリーダーである Zillow は、消費者が住宅を購入、賃貸、売却する際に必要なリスト、データ、計算ツールを提供しています。サイトは、ユーザーを地域の不動産仲介業者、住宅ローン融資会社、住宅デザイナーと結び付ける役割も担っています。
2006 年に設立され、シアトルに本社を置く Zillow が管理するデータベースには、1 億 1,000 万を超える米国の住宅が登録されています。また、Zillow が運営するモバイル向け不動産アプリは好評を博しており、その数は 24 を超えています。Zillow では 2017 年 7 月に Android モバイルアプリのコードの大規模な点検を開始したとき、コードの可読性を高め、新しいチームメンバーでもコードを容易に理解できるようにすることで、デベロッパーの作業を簡素化したいと考えました。
Eyecon の取り組み
Zillow は、Android アーキテクチャ コンポーネントを使用してコードを刷新しました。「私たちはさまざまな種類のアーキテクチャを調査していました」と、Zillow のソフトウェア エンジニアの Aayush Raj 氏は述べています。「アーキテクチャ コンポーネントにはライフサイクル認識という利点があり、コードの管理がはるかに容易になりました。」
ViewModel を使用すると、構成の変更(画面の回転など)後もデータを引き継ぐことができます。一方、LiveData は監視可能なデータホルダー クラスです。Zillow はこれらのクラスを組み合わせて使用することで、Model-View-ViewModel(MVVM)を実装するための強力なテンプレートを提供しました。Raj 氏は次のように述べています。「おかげでコードをテストしやすくなります。また、Room 永続ライブラリを使用することで、ローカル キャッシュ レイヤを簡単に構築できるため、アプリがネットワークからデータを頻繁に pull する必要がなくなり、「パフォーマンスとユーザー エクスペリエンスが向上」しました。
結果
Raj 氏はさらに、データ更新用のコードをアクティビティから ViewModel に大量に移行したことで、コードベース全体の可読性が向上したことが「間違いなく役立った」と述べています。デベロッパーはアプリ全体を ViewModel に変換していませんが、ViewModel を使用しているコンポーネントにはライフサイクル関連のバグはありません。アクティビティとフラグメントへのデータ更新の伝達も非常にうまく機能しています。
Zillow のシニア ソフトウェア開発エンジニアである Sumiran Pradhan 氏は、次のように述べています。「Android アーキテクチャ コンポーネントを使用することで、開発者の生産性は大幅に向上します。アーキテクチャ コンポーネントは、ゼロから構築する際のガイダンスを提供しますが、既存のコードベースでも有用です。「新しいデベロッパーは、ロジックが ViewModel のどこにあるかを理解すれば、それを気に入ってくれます」と、Pradhan 氏は付け加えます。
始める
Android アーキテクチャ コンポーネントは、Android Jetpack の一部として、全デベロッパーに公開されています。Android アーキテクチャ コンポーネントを使ってみる。
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2018-05-03 UTC。
[null,null,["最終更新日 2018-05-03 UTC。"],[],[],null,["# Zillow builds clear new code with Android Architecture Components\n\nZillow is a top online real estate marketplace that provides consumers with\nthe listings, data, and calculators they need to help them buy, rent, or sell\na home. The site also connects users with local agents, mortgage providers,\nand home designers.\n\nLaunched in 2006 and headquartered in Seattle, Zillow maintains a database\nof more than 110 million U.S. homes. They also operate a popular suite of\nover two dozen mobile real estate apps. When they began a major overhaul of\ntheir code in their Android mobile app in July 2017, Zillow wanted to simplify\ntheir developers' lives by making the code more readable and easier for\nnew team members to understand.\n\nWhat they did\n-------------\n\nZillow revamped their code using\n[Android Architecture Components](/topic/libraries/architecture).\n\"We were investigating different kinds of architecture,\" says Aayush Raj,\nZillow software engineer. \"Architecture Components had the added advantage of\nlifecycle awareness, which made code much easier to manage.\"\n\n[ViewModel](/topic/libraries/architecture/viewmodel) allows data to\nsurvive configuration changes (such as screen rotations), while\n[LiveData](/topic/libraries/architecture/livedata) is an observable\ndata-holder class. Both were used by Zillow, and together, they provided a\npowerful template for implementing Model-View-ViewModel (MVVM). \"It helped make\nour code more testable,\" Raj says. The\n[Room](/topic/libraries/architecture/room) persistency library also\nmade it easy to build a local cache layer, so the app didn't have to pull data\nfrom the network as often, \"improving performance and the user experience.\"\n\nResults\n-------\n\nMoving lots of code for data updates from activities to\n[ViewModels](/topic/libraries/architecture/viewmodel) has\n\"definitely helped\" make the whole code base more readable, Raj adds.\nThey haven't yet converted the whole app to\n[ViewModel](/topic/libraries/architecture/viewmodel),\nbut components that are using\n[ViewModel](/topic/libraries/architecture/viewmodel)\nhaven't had any lifecycle-related bugs. Communicating\ndata updates to activities and fragments also works very well.\n\n\"Developers are absolutely more productive using Android Architecture\nComponents,\" says Sumiran Pradhan, Zillow senior software development engineer.\nArchitecture Components gives them guidance when starting from scratch,\nbut is also useful in the existing code base. \"Once new developers\nunderstand where the logic lives in the\n[ViewModel](/topic/libraries/architecture/viewmodel), they love it,\"\nPradhan adds.\n\nGet started\n-----------\n\nAndroid Architecture Components is open to all developers as part of\n[Android Jetpack](/jetpack). Get\nstarted with [Android Architecture Components](/jetpack/arch)."]]