存在しない画面表示を溢れ出させない、ステートマシンで管理するアプリと画面の状態 by くろるり

iOSDC Japan 2024
レギュラートーク(20分)

存在しない画面表示を溢れ出させない、ステートマシンで管理するアプリと画面の状態

kuroruri くろるり kuroruri

突然ですが貴方はデザイン上想定されない画面表示、仕様上存在しない画面表示を生み出したことはありますか?
画面の表示内容を isLoading: Bool / response: Reponse? / error: Error? のようなプロパティだけで扱っていたとしたら、通信終了後に isLoading を切り替え忘れるだけで通信が終わって結果が表示されたのに通信中表示が出たままになっている、そのような存在しない画面表示がすぐ出来上がります
上記は非常に簡単な例でしたが、画面表示内容だけに注目したデータ構造で扱っているとこのような存在しない画面表示が生まれるでしょう

本トークではそのような問題に対し、状態遷移を整理しデータ構造を作り、ステートマシンを列挙型と単方向データフローのアーキテクチャで管理することで存在しない画面表示を防止する方法を、下記のような内容で話します

  • 表示内容に注目したデータ構造が生む想定外の画面表示
  • ステートマシンの簡単な説明
  • 単方向データフローと列挙型によるステートマシンの導入
  • なぜ表示内容ではなく状態遷移からデータ構造を設計するのか
  • 複雑な画面を階層化されたステートマシンで整理する例