- 構造面
- 役割毎にモジュールを分割し、その組み合わせでアプリを構築する
- 式年遷宮できるように、なるべく置換しやすい単位で実装する
- 何かしらのインスタンスを生成する場合は、システム的に正しい状態になるように実装する
基本的にはModel-View-ViewModel(MVVM) ですが、各階層をより細かく管理していくために、下記の概念を追加する。
- Model
- Entity -> システムのデータ定義
- Repository Pattern
- UseCase -> システムでどうデータを取り扱うかの定義
- View
- Atomic Design
- Navigation Pattern
色々な設計パターンで整理すると、下記となります。
モジュール | パス | Atomic Design | Clean Architecture | MVVM | 備考 |
---|---|---|---|---|---|
app | ./ | - | 外 | - | アプリ本体 |
app | atoms/ | atoms | 外 | V | |
app | molecules/ | molecules | 外 | V | |
app | organisms/ | organisms | 外 | V | |
app | pages/ | pages | 外 | V, VM | 各画面実装 |
app | repositories/ | - | 外 | M | |
app | templates/ | templates | 外 | V | |
app_core | entities/ | - | 中心 | M | 取り扱うデータの定義 |
app_core | usecases/ | - | 中心 | M | 取り扱い方法の定義 |
github_connector | ./ | - | 外 | M | GitHub とのデータ交換方法の定義 |
- Jetpack
- Navigation
- Single Activity, Many Fragments
- ViewModel
- Navigation
- Kotlin coroutines