「0件の科目」は表示しない

各科目の正解数・不正解数・未回答数を表示する科目一覧画面があります。


この画面においては、「その科目にまだ1問も問題が登録されていない」「対象データが0件」というケースでも、科目名の行がそのまま表示されていました。


数字はすべて「0」か「/」。ユーザーから見れば、押しても意味のない行がずらっと並んでいるだけの状態です。


・選んでも中身が空

・一覧が無駄に長くなる

・本当に見てほしい科目が埋もれる


特に「要チェック問題」や「連続不正解問題」のような、対象を絞り込んで復習する画面では「0件なら、そもそも行を出さなくていいのでは」と思ったわけです。


■どうやって直したか

1.科目ごとに「対象になる問題数(分母)」を計算する

2.分母が0なら、その科目の行を一覧に出さない

3.ただし科目がすべて0件になっても、「集計」行と注意書きだけは残す

4.集計行の数字(合計得点や正解率など)は、これまで通りの計算方法を一切変えない


一番気を使ったのは3番目です。全科目が0件になったからといって画面を空っぽにしてしまうと、「あれ、データが消えた?」とユーザーを不安にさせてしまいます。なので「対象科目はありません」という状態そのものは、集計行としてちゃんと見せることにしました。


また、この画面には「過去問モード」「要チェック(☆)モード」「連続不正解(▲)モード」という3つのモードがあり、それぞれ「分母」の意味がまったく違います。過去問モードなら科目に登録された問題数、☆モードならチェック対象の件数、▲モードなら連続で間違えた問題の件数、という具合です。


ここを一つの共通ルールとして書いてしまうと確実にどこかで壊れるので、モードごとに分母の取得方法を分ける関数を用意し、「行を出す・出さない」の判定だけをその関数の結果に任せる形にしました。判定ロジックと、各モード固有の計算ロジックを分離した、というのがポイントです。


最後に、全科目が非表示になったときの見た目にも少し手を入れました。通常、集計行は目立たせるための色がついているのですが、科目行が1つも無い状態でこの色のままだと、なぜか浮いて見えてしまいます。そこで「全科目0件のときは、直前まで選ばれていた行のハイライト色に寄せる」ようにして、画面全体の統一感を保つようにしました。


■結果

・対象データが無い科目の行が一覧から消え、本当に必要な科目だけが並ぶようになった

・一覧がすっきりして、目的の科目を見つけやすくなった

・全科目0件のときも画面が空にならず、集計行と注意書きで状況が分かるようになった

・保存されているデータの形式や、得点・正解率の計算方法は一切変更していないので、既存ユーザーのデータには影響なし


見た目の変化は地味ですが、「使っていない項目がずっと目に入り続ける」というのは、体験を悪くする要因だったと思います。今回の修正で、科目一覧画面が「今の自分に関係がある情報だけ」を映すようになりました。