本文へ移動
仕事実践ラボ
, ,

ブラウザーごとに判定が違うゲームを修正|初期化後スコア0まで確認

ブラウザーごとに判定が違うゲームを修正|初期化後スコア0まで確認の内容を表すアイキャッチ画像

連続回数の値がない状態を、実装が0回と誤認していました。JavaScriptの型変換自体は仕様どおりですが、値なしを確認する前に数値化した順番が問題です。最新のテスト記録1件へ絞り、3が0へ変わる地点を追いました。

修正後は複数の確認ブラウザーで表示を比較し、初期化後に新しい1件が保存されるところまで確認しています。ただし、ブラウザー差の理由は完全には確定していません。

値なしを0回として扱う誤認が起きた

一方のブラウザーでは連続回数が表示され、別のブラウザーでは全員が完全達成に見えるなど、表示が揺れました。データには連続回数の直接列がなく、履歴配列から復元する構成でした。

最初はキャッシュも疑いましたが、新しいブラウザーでも問題が出ました。そこで画面から原因を推測せず、データ取得、履歴作成、判定、表示直前の順に値を追いました。

連続回数3の最新1件へ対象を絞った

過去記録をまとめて見ると条件の違うデータが混ざります。連続回数3と分かっている最新のテスト記録1件だけを基準にし、正常なら3の値がどこで0になるか確認しました。

これは「別々のテストを連続3回実施した」という記録ではありません。確認できたのは、連続成功回数3の最新1件を追跡したことです。

値なしを先に判定してから数値化した

確認した値はnullでした。これを先にNumberへ渡すと0になり、プログラムは「連続回数0」と判断して履歴復元へ進みませんでした。

const count = value === null || value === undefined || value === ""
  ? null
  : Number(value);

null、undefined、空文字は値なしのまま残し、それ以外だけ数値へ変換しました。広い範囲を直さず、値が変化した正規化処理だけを修正しています。

修正後の検証と未確認範囲

  • 確認:修正コードの保存内容
  • 確認:複数の確認ブラウザーで同じ記録の表示を比較
  • 確認:サーバー側記録とブラウザー内保存を初期化
  • 確認:初期化後に新しいテスト1件を保存
  • 未確認:すべてのブラウザーで同じ結果になること
  • 未確定:ブラウザーごとに表示が揺れた技術的理由
前の記事
次の記事