モバイルアプリには少なくとも3つの状態があると思っている。この状態はより細かく分けても、分けなくても良い。私は4つくらいに分けて考えたほうが扱いやすいのではないかとも思っている。
- モバイルアプリ外の状態
- モバイルアプリ内の永続化されている状態
- モバイルアプリ内の一時的な状態
- 単一の画面の状態
- 複数画面に渡る状態
モバイルアプリ外の状態
大抵のモバイルアプリは、アプリ単体では完結しておらずサーバーと通信して情報を表示している。サーバーの状態は通信してみるまでわからないし、変化しているかもしれない。サーバー側から送りつける方法があるが、取得してみるまでわからないとして扱った方が合理的である。 OSの設定や通信状況、現在時刻等のアプリがコントロールできない部分もモバイルアプリ外の状態として扱った方が良いかもしれない。
モバイアプリ内で永続化されている状態
モバイアプリ内で永続化されていて、アプリを再起動しても変化がない状態がある。これはログイン情報やアプリの設定、通信のキャッシュ等です。永続化される方法は、ファイルかローカルDBかSharedPreferences、UserDefaultsかを問わない。アプリにとって最も重要な状態なので丁寧に壊れないように扱う。
モバイアプリ内で一時的な状態
モバイルアプリを再起動したら消される状態がある。ユーザーの入力間違えの時のエラーの表示等のことです。画面や一連の操作が終わるまではローカルで保持しておき、終わったら破棄するもののことです。
単一の画面の状態
単一の画面でのユーザーの入力途中の情報やその画面だけでのエラーの表示は単一の画面内に閉じた状態として扱う。
複数画面に渡る状態
新規登録画面は複数画面に渡ってユーザーに入力を求めることが多い。新規登録中に前の画面に入れた情報が失われるのは、問題がある。複数画面に渡って扱うべき情報は単一の画面での情報と分けて扱った方が齟齬が減るように思う。