Skip to content

architecture

Leo edited this page Dec 30, 2022 · 5 revisions

アプリのアーキテクチャは以下のガイドラインを意識しています。
https://developer.android.com/topic/architecture

実装メモ

  • API KEYなどの秘匿情報は、 local.propertiesで管理する運用にしています。

  • ui layer

    • ComposeのPreviewを行いやすくするために、StatelessなComposableを作成しています。
    • シンプルなロジックであればViewModelで直接Repositoryを呼び出します。
    • エラーハンドリング(try catch)はViewModelで行います。
    • Threading
    • ViewModel はStateHolderに該当します。シンプルな画面であれば、ViewModelなしで、androidx.compose.runtime.saveable.rememberSaveableを使う手もありかもしれない。
  • domain layer

    • Android APIに依存しない、Pure Kotlinで実装する運用にしています。
    • Threading
    • Usecaseは、Dispatchersに(Default Thread)を使う運用にします。
    • Model(Serialize)はこのレイヤで持つ. Parseable使うとAndroid APIに依存しちゃうけど、どっちがいいか..。
    • ViewModelで同じロジックを作成したり、複数のRepositoryを呼び出してViewModelの処理が肥大化する場合はXXXUseCaseクラスを作成し処理を切り分ける運用にする。
  • data layer

    • 小規模アプリでは、domain entitymapperは不要かもしれない。data entityを直接UIレイヤーで使う。
    • 異常系は、シールドクラスで作成したカスタムExceptionをthrowさせる。シールドにしておくとUIレイヤー側でチェック漏れを防げる。
    • Threading
    • Repository or DataSourceには、Dispatchersに(IO Thread)を使う運用にします。
  • Proguard / R8

Clone this wiki locally