なぜ
アプリに「エックス線作業主任者」と「潜水士」を新しく追加しました。どちらも、科目によって1問の配点が2.5点です。
ところがアプリは、配点が「1点」「10点」のような整数であることを前提に作られていました。2.5という値は読み取れず、0点として数えていました。そのため、エックス線で全問正解しても、2.5点の2科目ぶんが抜けて、100点満点で50点と表示される状態でした。
経過
まず、得点を扱っている場所を洗い出しました。得点の計算は3つの画面にまたがっていました。解答画面、科目一覧の画面、起動時に要チェック問題の成績を計算し直す処理です。どれも整数で計算していたので、1か所だけ直すと、次の画面で小数を読んだときにアプリが落ちるおそれがありました。3か所をまとめて直す必要がありました。
次に、今までのユーザーに影響が出ないかを確かめました。開発用のパソコンに、これまでの53アプリぶんの問題データが残っていました。約37万問の配点を一つずつ調べ、新しい読み方で結果が変わる問題を探しました。見つかったのは、エックス線と潜水士の2.5点の問題だけでした。ほかの試験は1点も変わらないことが分かりました。
画面の表示も確かめました。1科目の最高は「22.5」、全体の最高は「97.5」で、どちらも今までの表示枠に収まります。
あわせて、端末の言語設定の問題にも手を打ちました。言語によっては「2.5」が「2,5」と書かれます。アプリは成績をカンマ区切りで保存しているので、そうなると保存データが崩れます。言語設定に関係なく、小数点は常に「.」で扱うようにしました。
結果
- 2.5点の問題が正しく数えられ、「12.5点」のように小数で表示されるようになりました。
- 整数の配点の試験は、表示も保存データも今までとまったく同じです。