ハイゼンバグ(Heisenbug)とは、デバッグしようとすると挙動が変わり、バグが消えてしまう現象を指す。追跡しづらいバグの一種。ハイゼンベルクの不確定性原理が由来らしい。
他にもそういう「なんちゃらバグ」があるのか調べたら、1990年にウェブに公開されたThe Jargon Fileという古典1にいろいろ載っていた。それを参照元としてWikipediaのHeisenbugにもまとめられている。
バグ名 | 特徴 | 由来・比喩 |
---|---|---|
Heisenbug | 観測すると消えるバグ | ハイゼンベルグの不確定性原理 |
Bohrbug | 常に再現可能な安定したバグ | ニールス・ボーアの古典的物理モデル |
Schrödinbug | 読むまでバグと気づかないが、実はバグってる | シュレーディンガーの猫 |
Mandelbug | あまりに複雑で原因が特定できないバグ | マンデルブロ集合の複雑性 |
Hindenbug | 発生するとシステム全体を壊滅的に破壊するバグ | 飛行船ヒンデンブルク号 |
Phase-of-the-Moon Bug | 理由が不明で、まるで月の満ち欠けで変わるようなバグ | オカルト的な比喩 |
Higgs-Bugson | 存在が予測されているが、まだ観測されていないバグ | ヒッグス粒子のような存在 |
ほぼ初耳。
ChatGPTに聞いたら他にZombiebugとかGremlinbugも挙げてきたけど、それぞれゾンビプロセスとかカオスエンジニアリングツールGremlin2とかのハルシネーションだろうか。
大抵の教科書的なコーディング本には、「まずはエラーを安定化させよ」とある。以下は、CODE COMPLETEからの引用
欠陥を検出するための効果的な方法は、次のようになる
- エラーを安定させる(確実に再現させる)。
- エラーの原因を特定する。
- 欠陥を修正する。
- 修正をテストする。
- 同様のエラーを探す。
CODE COMPLETE 下 p96
これがデバッグにおける科学的アプローチと解説している。
エラーを安定化させる
エラーを確実に再現することができなければ、診断することはほぼ不可能である。ときどきしか発生しないエラーを予測可能にすることは、デバッグにおいて最も困難なことである。
CODE COMPLETE 下 p97
ハイゼンバグはその出だしで躓く感じ。
1970年ごろからまとめられたも用語集を源流としているので、本当に古典の域 ↩︎