📝

不具合再現は「消去法」でよりスムーズに!

に公開

\オカウチワニが1人でやっている okauchiwani-hitori Advent Calendar 2025 3日目の記事です!!!/

再現とは「起こらない条件」を削っていく作業

不具合を再現させるというと、つい「起こったときの条件を再現する」ことばかり考えがちです。
でも、実は再現作業の本質は少し違います。再現は"起きない条件をひとつずつ消していく作業"でもあります。

不具合が発生したとき、そこには無数の条件が混ざっています。なので「これは関係なかった」という条件をひとつずつ除外していく必要があります。

再現は当たりを引くゲームではなく、ハズレを捨てていくパズルでもあります。可能性が除外できればより集中すべき条件を絞り込むことにもなるので。

除外条件を集めると、自然と「核が残る」

除外条件を見つけるためには、観察する視点が変わります。

たとえば、次のように切り分けていきます。

  • 同じ操作でも別のアカウントでは起きない → アカウントの状態が怪しい
  • 画面をゆっくり操作すると発生しない → タイミング要因が濃厚
  • リロード後だと発生しない → 初回レンダリング特有の問題
  • PC では発生する、スマホでは発生しない → 同じ機能でも実装の差分

こうして発生しない条件が積み上がると、逆に発生する条件が浮かび上がってくるのです。また除外が進むほど、原因に自然と近づいていきます。

再現性のないあてずっぽうでも良い?

別の例で見てみましょう。アキネーター(人物やアニメや漫画のキャラクターを当てさせるゲーム)に、あなたは"ドラえもん"を想像していることをあてさせようとしたとします。最初のアキネーターの質問は「人間ですか?」でした。当然あなたは「いいえ」と回答をします。この1問しか答えていないのに、アキネーターが「それは"ドラえもん"ですね!」と答えてきたら恐怖を覚えるぐらいの精度です。

なぜなら想像していたのは人間以外の動物かもしれないですし、ポケモンなどのアニメオリジナルのキャラクター、もちろんロボットのキャラクターも無数にあります。はずれる可能性はかなり高いです。
時には当てずっぽうがたまたまあたることもありますが、以降も同じ当てずっぽうが成功するとは限りません。

再現に近づく為にも、確実に違うものを明らかにする

これが何回かやりとりをした後ならどうでしょうか?例えば、

  • 人間ではない
  • 小学生とのやりとりが多い
  • 特定の動物が苦手
  • 姉妹がいる
  • 未来からやってきている
  • 押し入れの中で寝ている

これだけのやりとりがされれば、"ドラえもん"と答えるのもそこまで難しいわけではありませんね。この中にはXXXである、XXXでないという除外条件も含んでいることがわかります。
これを再現できるように不具合が起きたら何を確認するかまとめておくことで再現性のある絞り込みの仕方が確立できますね。

まとめ

不具合を再現させるとは「再現条件を見つける作業」ですが、「除外条件を明らかにしていく作業」でもあります。

  • 起こらない条件が分かるほど、起こる条件が浮かんでくる
  • 再現のコツは「違い」を明らかにすること
  • 絞り込みが進むほど、原因はよりわかりやすくなる

「消去法」で真相に迫る知的な作業です。再現に行き詰まったときこそ"起きなかった条件"に目を向けるというわかっていることを確認することで、より速く再現ができそうですね。

Discussion