海外旅行予約アプリ「NEWT」(ニュート) のAndroidアーキテクチャ構想用
- Jetpack Compose
- Coroutines
- Hilt
- Navigation Compose
- Apollo GraphQL
- Data Store
- multi-module project
- Clean Archtecture
- Ui/Data/Domainの水平方向の分割と、UI、Data内の垂直方向の分割の組み合わせ
- モジュール分割と実装Classのinternal化で非推奨の依存はコンパイルエラーに仕向ける
- GraphQL(Apollo)には依存させずSchemaはRepository実装モジュールに閉じる方針とする
- Screen
- 表示とイベント受付を担当
- 監視するStateはトップレベルのComposableでのみ保持し各UIに反映
- イベントは全てViewModelに渡す
- ViewModel
- 状態(StateFlow)の保持と更新を担当
- イベントを受けてDomain層に処理を依頼し状態を更新
- プラットフォーム固有のロジック(UseCase)も一旦ここで
- Model
- ビジネスロジックを担当
- Repository
- 永続化層とのデータの入出力を担当
- Domain層にInterface、実装はData層で定義することでデータフローと依存を逆転
- 永続化層のデータはModelに変換して返す
- シングルActivity + JetpackCompose
- 画面構成と遷移はNavigationコンポーネントで定義
- Hilt x NavigationComposeで、状態(UiState of ViewModel)をActivity or NavigationGraph(Screen)にスコープ
| SearchScreen | ProfileScreen | CountryScreen |
|---|---|---|
![]() |
![]() |
![]() |





