各科目の正解数・不正解数・未回答数を表示する科目一覧画面があります。
この画面においては、「その科目にまだ1問も問題が登録されていない」「対象データが0件」というケースでも、科目名の行がそのまま表示されていました。
数字はすべて「0」か「/」。ユーザーから見れば、押しても意味のない行がずらっと並んでいるだけの状態です。
・選んでも中身が空
・一覧が無駄に長くなる
・本当に見てほしい科目が埋もれる
特に「要チェック問題」や「連続不正解問題」のような、対象を絞り込んで復習する画面では「0件なら、そもそも行を出さなくていいのでは」と思ったわけです。
■どうやって直したか
1.科目ごとに「対象になる問題数(分母)」を計算する
2.分母が0なら、その科目の行を一覧に出さない
3.ただし科目がすべて0件になっても、「集計」行と注意書きだけは残す
4.集計行の数字(合計得点や正解率など)は、これまで通りの計算方法を一切変えない
一番気を使ったのは3番目です。全科目が0件になったからといって画面を空っぽにしてしまうと、「あれ、データが消えた?」とユーザーを不安にさせてしまいます。なので「対象科目はありません」という状態そのものは、集計行としてちゃんと見せることにしました。
また、この画面には「過去問モード」「要チェック(☆)モード」「連続不正解(▲)モード」という3つのモードがあり、それぞれ「分母」の意味がまったく違います。過去問モードなら科目に登録された問題数、☆モードならチェック対象の件数、▲モードなら連続で間違えた問題の件数、という具合です。
ここを一つの共通ルールとして書いてしまうと確実にどこかで壊れるので、モードごとに分母の取得方法を分ける関数を用意し、「行を出す・出さない」の判定だけをその関数の結果に任せる形にしました。判定ロジックと、各モード固有の計算ロジックを分離した、というのがポイントです。
最後に、全科目が非表示になったときの見た目にも少し手を入れました。通常、集計行は目立たせるための色がついているのですが、科目行が1つも無い状態でこの色のままだと、なぜか浮いて見えてしまいます。そこで「全科目0件のときは、直前まで選ばれていた行のハイライト色に寄せる」ようにして、画面全体の統一感を保つようにしました。
■結果
・対象データが無い科目の行が一覧から消え、本当に必要な科目だけが並ぶようになった
・一覧がすっきりして、目的の科目を見つけやすくなった
・全科目0件のときも画面が空にならず、集計行と注意書きで状況が分かるようになった
・保存されているデータの形式や、得点・正解率の計算方法は一切変更していないので、既存ユーザーのデータには影響なし
見た目の変化は地味ですが、「使っていない項目がずっと目に入り続ける」というのは、体験を悪くする要因だったと思います。今回の修正で、科目一覧画面が「今の自分に関係がある情報だけ」を映すようになりました。