元に翻訳・加筆したものです。詳しくは元記事をご覧ください。ファクタで動作するアプリを構築するための強力な基盤を提供します。私たちはデベロッパーのフィードバックに耳を傾けています。堅牢なアプリを作成する際に難題として立ちはだかるのは、複雑なライフサイクルや、推奨されるアプリのアーキテクチャがないといった問題です。堅牢なアプリの記述をもっと簡単に、もっと楽しめるようにして、デベロッパーにイノベーションを実現できる分野へと目を向けてもらわなくてはなりません。コンポーネントの一部を紹介いたします。ライブラリで実現されているものも取り入れています。アプリを設計するために役立つ、一連のガイドラインです。ポイントであり、アプリのアーキテクチャの構成要素ではありません。コンポーネントとの分割を強制するものではなく、またライフサイクルから独立してデータを永続化する明確な方法を提供するものでもありません。コンポーネントは、連携して健全なアプリのアーキテクチャを実現しつつ、デベロッパーの課題にも個別に対処します。最初のコンポーネント集は、次のように皆さんをサポートします。イベントを結びつける構造を提供し、明示的な依存性パスを取り除きます。これは十分シンプルに思えますが、多くの場合、いくつかの非同期呼び出しが同時に実行され、そのすべてでコンポーネントのライフサイクルが管理されます。そのため、エッジケースを見逃してしまう可能性が高くなります。コンポーネントを使うと、こういった点が便利になります。イベントを列挙型で表しています。オブジェクトを返します。イベントを監視できるクラスです。イベントと現在のライフサイクルの状態の両方を問い合わせるライフサイクルを意識したコンポーネントを作成できます。よってオブザーバーの以下の動作が保証されます。設定の変更によって再起動したり、バックスタックから再起動した際に、最新のデータを取得するこれにより、停止したアクティビティへのアップデートが回避されるため、メモリリークに至る多くの経路がふさがれ、クラッシュが減少します。フラグメントやアクティビティなどのライフサイクルの所有権と結びついた複数のリスナーから監視することもできます。ロジックを分離します。設定の変更によってアクティビティやフラグメントが破棄されて再作成される場合も含め、アクティビティやフラグメントのスコープが有効である限り保持されます。データを利用できるようになります。ラッピングすると、そのデータにライフサイクルを意識した監視可能なホームを提供できます。データが適切に保持されることを保証します。ライブラリによって簡略化されています。マッピング抽象化レイヤーを提供します。コンテンツを操作するためのサポートが組み込まれています。強力ですが、かなり低レベルであるため、使うにはかなりの時間と労力が必要です。クエリはコンパイル時に検証されません。クエリを手動でアップデートする必要があります。これは、時間がかかり、エラーも発生しやすいプロセスです。コードを書く必要があります。抽象化レイヤーを提供し、こういった懸念に対処します。つの主要コンセプトがあります。行のデータを示します。オブジェクトを使って作成します。それぞれの表に永続化されます。オブジェクト)は、データベースにアクセスするメソッドを定義します。バインドするためにアノテーションを使います。アノテーションを使ってエンティティのリストとデータベースのバージョンを定義するホルダークラスです。リストが定義されています。ポイントでもあります。アーキテクチャに組み込まれたときに最大の効果を発揮します。ガイドがリリースされました。コンポーネントを使用して、堅牢でモジュール化やテストが可能なアプリを構築する方法を説明しています。コンポーネントを使ったアーキテクチャの実装方法の説明こういった問題に対処しなければならないすべてのデベロッパーは、このガイドを一読することをおすすめします。アーキテクチャに満足しているという方にとっても、ガイドから有用な設計の原則やアイディアを得られることでしょう。デベロッパーがアプリを設計する際に十分な情報に基づく選択を簡単に行えるようにしたいと考えています。私たちが行っていることを確認してフィードバックをお送りください。アプリの開発をもっと簡単かつ楽しいものにしたいという立場で一致しています。アーキテクチャの詳細については、以下をご覧ください。元に翻訳・加筆したものです。詳しくは元記事をご覧ください。ファクタで動作するアプリを構築するための強力な基盤を提供します。私たちはデベロッパーのフィードバックに耳を傾けています。堅牢なアプリを作成する際に難題として立ちはだかるのは、複雑なライフサイクルや、推奨されるアプリのアーキテクチャがないといった問題です。堅牢なアプリの記述をもっと簡単に、もっと楽しめるようにして、デベロッパーにイノベーションを実現できる分野へと目を向けてもらわなくてはなりません。コンポーネントの一部を紹介いたします。ライブラリで実現されているものも取り入れています。アプリを設計するために役立つ、一連のガイドラインです。ポイントであり、アプリのアーキテクチャの構成要素ではありません。コンポーネントとの分割を強制するものではなく、またライフサイクルから独立してデータを永続化する明確な方法を提供するものでもありません。コンポーネントは、連携して健全なアプリのアーキテクチャを実現しつつ、デベロッパーの課題にも個別に対処します。最初のコンポーネント集は、次のように皆さんをサポートします。イベントを結びつける構造を提供し、明示的な依存性パスを取り除きます。これは十分シンプルに思えますが、多くの場合、いくつかの非同期呼び出しが同時に実行され、そのすべてでコンポーネントのライフサイクルが管理されます。そのため、エッジケースを見逃してしまう可能性が高くなります。コンポーネントを使うと、こういった点が便利になります。イベントを列挙型で表しています。オブジェクトを返します。イベントを監視できるクラスです。イベントと現在のライフサイクルの状態の両方を問い合わせるライフサイクルを意識したコンポーネントを作成できます。よってオブザーバーの以下の動作が保証されます。設定の変更によって再起動したり、バックスタックから再起動した際に、最新のデータを取得するこれにより、停止したアクティビティへのアップデートが回避されるため、メモリリークに至る多くの経路がふさがれ、クラッシュが減少します。フラグメントやアクティビティなどのライフサイクルの所有権と結びついた複数のリスナーから監視することもできます。ロジックを分離します。設定の変更によってアクティビティやフラグメントが破棄されて再作成される場合も含め、アクティビティやフラグメントのスコープが有効である限り保持されます。データを利用できるようになります。ラッピングすると、そのデータにライフサイクルを意識した監視可能なホームを提供できます。データが適切に保持されることを保証します。ライブラリによって簡略化されています。マッピング抽象化レイヤーを提供します。コンテンツを操作するためのサポートが組み込まれています。強力ですが、かなり低レベルであるため、使うにはかなりの時間と労力が必要です。クエリはコンパイル時に検証されません。クエリを手動でアップデートする必要があります。これは、時間がかかり、エラーも発生しやすいプロセスです。コードを書く必要があります。抽象化レイヤーを提供し、こういった懸念に対処します。つの主要コンセプトがあります。行のデータを示します。オブジェクトを使って作成します。それぞれの表に永続化されます。オブジェクト)は、データベースにアクセスするメソッドを定義します。バインドするためにアノテーションを使います。アノテーションを使ってエンティティのリストとデータベースのバージョンを定義するホルダークラスです。リストが定義されています。ポイントでもあります。アーキテクチャに組み込まれたときに最大の効果を発揮します。ガイドがリリースされました。コンポーネントを使用して、堅牢でモジュール化やテストが可能なアプリを構築する方法を説明しています。コンポーネントを使ったアーキテクチャの実装方法の説明こういった問題に対処しなければならないすべてのデベロッパーは、このガイドを一読することをおすすめします。アーキテクチャに満足しているという方にとっても、ガイドから有用な設計の原則やアイディアを得られることでしょう。デベロッパーがアプリを設計する際に十分な情報に基づく選択を簡単に行えるようにしたいと考えています。私たちが行っていることを確認してフィードバックをお送りください。アプリの開発をもっと簡単かつ楽しいものにしたいという立場で一致しています。アーキテクチャの詳細については、以下をご覧ください。ForumGooglePrivacyTerms。