sporadic

システムに問題が発生した場合、たいていはその原因が非常に単純なミスから発生しているものです。このため、原因はある程度すぐに想像がつきます。ところが、時として奇奇怪怪な現象に悩むこともあります。たいていの問題は、「これを発生させようとしたらどんなメカニズムが考えられるか」と問うとすぐに答えが出てくるものですが、奇怪な現象は、仮に意図的にやったとしてもどうやってよいのか想像も付かないことがあります。今日の問題がまさにそうでした。
特に、「いつも発生するわけではないが、ランダムに出てくる」という問題が一番厄介ですね。この場合、sporadic errors (散発的なエラー)と表現します。
I expect to have a sporadic access to e-mail.
というと、「不定期にしかメールにアクセスできません」という意味になります。
今日の問題は特定言語の特定条件化でしか発生しないというもの。いったいどうやったらそんなことになるのか。一時は「ハードコード説」まででかかったものの、トレースしてみるとなんてことはない、入力したデータそのものが完全におかしかっただけのことでした。つまり人為的ミス。それでも単に「人がやった」ではすまされません。人間が入力するデータの検証というのはなかなかむずかしいものです。例えば電子メール。入力した電子メール情報が、メール情報なのかどうかをチェックするのは簡単です。正規表現などで@の位置やスペースの有無、ピリオドの位置などを確かめればよいのです。ところが、入力したメールが「本物なのかどうか」を確かめるのはかなり難しいタスクです。例えば、適当にtest@test.comと入れた場合、これはほぼ間違いなく「ウソ」でしょう。それでも、メールデータとしては正しい入力です。この真偽を確かめるには、実際にメールを送信してバウンスしないかどうかなど、いろいろとやってみないことにはわかりません。ですから、メール情報の正確さが大切な場合は、実際にメールを送信し、その返信を確かめるというようなことが必要になってきます。
とにかくユーザーというのは贅沢なもので、「データ入力は自由に、柔軟に、でもミスは確実にチェックせよ」といいます。「飲んでもつかまらない酒を開発せよ」と言っているようなものです。「自由と検証」は二律背反。「酒と運転」も同様・・・とまあ、ユーザーに説教するわけにもいかないしね。つらいもんです。