今どんな感じでアプリ開発を進めているかまとめてみる
仕事でAndroidアプリ開発をやって行く中で、自分のスタイルができつつあるので整理してみる。今作っているアプリによるところが大きいと思うので別のケースに対応できるかどうかはわからない。いろいろありそうなのでいくつかに分けてまとめることにする。続くかどうかはわからない。
作っているアプリのこと
最初の目標:Activityの状態と画面遷移のルールをActivityのViewModelに落とし込む
- トップレベルメニューの画面をActivityにし、それ以外の画面はいずれかのActivityの中にさしこむFragmentとする
- ActivityにToolbarとFragment用のコンテナになるViewGroupを持たせ、Activity内の画面遷移はタイトルの変更とFragmentの差し替えで実現する
- Activityの状態をViewModelで管理する
- Activity内で表示するFragmentやダイアログをActivityの状態と考える。便宜的に遷移中の状態を定義してもよいことにする
- ViewModelの中でLiveDataに状態をsetして、Activityでobserveして状態に対応する画面を作る(FragmentManager.beginTransaction()やstartActivity()を呼ぶ)
- 状態と遷移のルールを洗い出してViewModelのテストを書く
- PlantUMLを使って状態遷移図を描いている
- Repository(またはUseCase)はモックする
- 状態ごとに内部クラスに分ける
- TestRuleで初期化処理などを共通化しておくと便利
JetpackのNavigationでやってくれるようなことを自分で実装しているだけなのかもしれない。仕事のコードを乗せることはできないが、似たようなことを別の自分の趣味アプリでやって公開できれば説明しやすくなるだろうか。