「Bタイプ」で過去問追加時に、解答記録が消える

アプリは、最大試験回数10回、1つの回につき最大20科目という仕様にしています。
大半の試験はこれで対応できるのですが、科目数が10科目以内の試験は、回を入れるべき所に科目を、科目を入れるべき所に回を入れることで、20回分の試験を収容することができます。こういった試験を「Bタイプ」と呼んでいます。

このBタイプで、過去問を追加すると解答記録が消えるという不具合を発見しました。調べてみると、通常のアプリでは問題なく引き継がれる仕組みが、Bタイプでは科目と回の並びが逆になっているせいで、記録を保存している場所がずれてしまうことが原因でした。

具体的には、過去問を1回分追加すると、それまでの記録が本来の回とは違う回に紐付いてしまい、一番古い回の記録が行き場を失って消えてしまう、という状態でした。

これを直すため、記録を「回の順番」ではなく「問題そのものに振られている固有のID」で管理するように変更しました。順番が入れ替わっても、同じ問題には同じIDがついたままなので、そのIDを頼りに正しい回へ記録を結び付け直す仕組みです。

修正の途中で一度、記録が消えてしまう不具合を自分で作ってしまいました。当初は「通常型・Bタイプどちらでも同じ処理でいけるだろう」と考えていたのですが、通常型では逆に記録を壊してしまうことが分かり、Bタイプだけに処理を限定することでようやく安定しました。何度かログを見ながら原因を絞り込む作業が必要でしたが、最終的には過去問を追加しても、Bタイプのアプリで解答記録がきちんと引き継がれるようになりました。