設計にみるAWA Androidアプリのこれまでとこれから

設計にみるAWA Androidアプリのこれまでとこれから

AWA Androidアプリの設計に関する過去と未来の話。

51599b694b52e34258f54a98257036b9?s=128

Ryota Takemoto

March 12, 2018
Tweet

Transcript

  1. 8.

    Model • DB, APIアクセス • ビジネスロジック Activity / Fragment •

    プレゼンテーションロジック • ビジネスロジック
  2. 9.

    Model • DB, APIアクセス • ビジネスロジック Activity / Fragment •

    プレゼンテーションロジック • ビジネスロジック
  3. 10.

    Model • DB, APIアクセス • ビジネスロジック Activity / Fragment •

    プレゼンテーションロジック • ビジネスロジック ビジネスロジックを書く層が必要
  4. 11.

    Model • DB, APIアクセス • ビジネスロジック Activity / Fragment •

    プレゼンテーションロジック • ビジネスロジック
  5. 19.

    DbClient / ApiClient • DB, APIアクセス Activity / Fragment •

    プレゼンテーションロジック Model • DbClient / ApiClientの操作 UseCase • ビジネスロジック
  6. 20.

    DbClient / ApiClient • DB, APIアクセス Activity / Fragment •

    プレゼンテーションロジック Model • DbClient / ApiClientの操作 UseCase • ビジネスロジック ビジネスロジックを書く層 ◎ Modelの責務を分割 ◎
  7. 21.

    DbClient / ApiClient • DB, APIアクセス Activity / Fragment •

    プレゼンテーションロジック Model • DbClient / ApiClientの操作 UseCase • ビジネスロジック だが、まだまだ問題が
  8. 26.
  9. 34.

    ViewModel CommandUseCase QueryUseCase ApiClient Repository Activity DataCommand DataQuery UI 画⾯データの管理

    永続化データのI/F データ更新・取得処理の組み⽴て ビジネスロジック
  10. 43.

    ← データソース(API)を意識してる ← 保存先は知らない interface Repository<T> { fun fetch(): Single<T>

    fun save(data: T) } repository.fetch() .doOnSuccess { repository.save(it) } repository.fetch() repository.save(it) APIからデータを取得し、DBに保存
  11. 44.

    interface Repository<T> { fun save(data: T) } apiClient.fetch() .doOnSuccess {

    repository.save(it) } ← APIからの取得を意識する apiClient.fetch() repository.save(it) ← 保存先は知らない APIからデータを取得し、DBに保存
  12. 61.