Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

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

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

Avatar for Ryota Takemoto

Ryota Takemoto

March 12, 2018
Tweet

More Decks by Ryota Takemoto

Other Decks in Programming

Transcript

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

    プレゼンテーションロジック • ビジネスロジック
  2. Model • DB, APIアクセス • ビジネスロジック Activity / Fragment •

    プレゼンテーションロジック • ビジネスロジック
  3. Model • DB, APIアクセス • ビジネスロジック Activity / Fragment •

    プレゼンテーションロジック • ビジネスロジック ビジネスロジックを書く層が必要
  4. Model • DB, APIアクセス • ビジネスロジック Activity / Fragment •

    プレゼンテーションロジック • ビジネスロジック
  5. DbClient / ApiClient • DB, APIアクセス Activity / Fragment •

    プレゼンテーションロジック Model • DbClient / ApiClientの操作 UseCase • ビジネスロジック
  6. DbClient / ApiClient • DB, APIアクセス Activity / Fragment •

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

    プレゼンテーションロジック Model • DbClient / ApiClientの操作 UseCase • ビジネスロジック だが、まだまだ問題が
  8. ViewModel CommandUseCase QueryUseCase ApiClient Repository Activity DataCommand DataQuery UI 画⾯データの管理

    永続化データのI/F データ更新・取得処理の組み⽴て ビジネスロジック
  9. ← データソース(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に保存
  10. interface Repository<T> { fun save(data: T) } apiClient.fetch() .doOnSuccess {

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