ミステリならよく経験している
――現実の世界で、難問ミステリに頻繁に遭遇する職業。
それは、恐らく、探偵ではなく、システムの運行業務をやっている人間なのじゃないか、と僕は時々、そう思ってしまう。
その日は比較的、仕事が楽で、僕は久しぶりにぬるい時間を過ごしていた。ずるいとはどうか思わないでくれ。仕事が入ったら、期限までに終わらせなくちゃならない緊張の時間が始まる訳だから、これくらい許してもらわなくちゃやってられない。
それに、僕の仕事は前置きなしで、突然の緊急事態に陥る事がよくあるんだ…
と思っていたら、早速、横で何やら不穏な気配が漂い始めた。僕の上司が、電話を受けて何事かを喋っているのだ。しかも、自分のパソコンで僕らが担当しているアプリケーションを開き始めた。口調が深刻そうなものに変わっていく。
何かしら悪い予感を覚えた僕は、上司が開いている画面のプログラムを確認し始めた。僕は、ま、プログラマ的な位置付けでこの職場にいる訳だけど、当然の話ながら、全ての画面のプログラミングを充分に把握している訳じゃない。
だから、何かしらトラブルだったなら、迅速に対応できるようにと思って、その内容を確認している訳だ。
すると、案の定、上司が受けていた電話はトラブルだった。しかも、見えてはいけないデータが見えているという、かなりショッキングなもの。
事件発生。
僕はぬるい気分を引き締めて、一気に集中力を高めた。
まずは事件のあらましの把握が肝要。簡単に問題現象を説明しよう。
Aというデータと1というデータが繋がっているとしよう。このデータ構造は一意で、他に繋がりはないはず。ところが、そのAから何故か1だけじゃなく、2というデータも見えてしまっている。それどころか、他のCというデータからも1と2が見えている。
つまり、データとデータの結び付きが滅茶苦茶になってしまっているのだ。
ここで原因特定の作業。直接の原因を見極めなくちゃならない。
その画面で、これまで、そんな問題は一度も発生した事はなかった。ならば、プログラミングのバグだとは考え難い。何らかのデータ不整合の可能性が大きい。
普通、こういう場合、もっとも考えられる原因は、キーの重複。本来なら、重なり合わないはずのキーが重なってしまっている、というもの。
そう判断した僕は、調べる為に、急いで確認用のSQL(DBへアクセスする為のプログラム言語の事です)を作って流す。すると、ビンゴ! 見事に僕の予想通りだった。
上司の指示を待つまでもなく、僕は緊急対処用のSQLを作り始めた。まずはデータの不整合を直ぐに修正し、正常な状態に戻してやらなくちゃならない。
上司は上司で、何も言わなくても僕がSQLを作っている事を理解しているらしく、関係者への連絡や、メンテナンスの為の申請書を作り始めた。
僕がSQLを完成させ、テストも終わらせると、上司は早速、そのSQLとテスト結果を確認し、本番環境でそれを流した。問題なく、SQLは処理を終え、取り敢えず、データは正常に戻る。
さて。
それが終わったなら、原因の調査の続き。今度は根本原因の特定だ。一体、どうしてデータのキー重複なんてものが発生してしまったのか?
それが分からないと、また同様の問題が発生してしまう可能性がある。だから、直ぐに調査する必要があるのだ。
ヒントは、片方は最新データだったが、もう片方は古いデータだという点。もしかしたら、かつてプログラムにバグがあったのかもしれない、或いは…
業務アプリケーションの利用が始まる前に、デモ環境で試に使ってみる、という事がよくある。その場合、デモ環境のデータの一部を、本番に反映させたりする訳だ。このアプリケーションでも、実は同様の事を行っていた。ならば、その時のデータ移行でミスっていたという事はないだろうか?
調べてみると、確かに古いデータの方は、元はデモ環境で作られたものだった。
僕は移行用のプログラムを引っ張り出すと中を読み始めた。すると、やはりあった。データのキーを生成するプログラムが、別のものと勘違いされて使われている。それで、本来なら絶対に一意になるデータが、二つできてしまっていたのだ。
これなら、直ぐに同様の問題が発生することはない。まずは一安心。
僕はその原因を上司に伝える。上司が原因を関係者に連絡し、そして、それでその日の仕事は終わりだった。
時刻を確認すると、夜の十時を過ぎていた。問題が発覚したのが、それなりに遅い時間だったから仕方がない。
もっとも、これで問題の解決が全て終了という訳ではない。この他にも問題データがないかどうか確認しなくちゃならないし、類似の問題が他にないかの確認も必要で、他に問題が見つかったなら、もちろんそれも解決しなくちゃならない。
でも、まぁ、流石にこの時間からだと無理なので、帰るのだけど。
因みに、その他の作業も大変だ。
“ない”事の証明は難しい。問題点がない事を証明するってのは、実はかなり骨が折れるんだ。明日から、僕らはそれをやらなくちゃいけない… 正直、うんざりする。
楽な時間が終わって、忙しくなりそうだった。
もちろん、その間だって、別の事件が発生したなら、また新たなミステリに挑まなくちゃならない。
……推理小説の探偵だって、恐らくはここまで頻繁に事件に遭遇したりしないのじゃないだろうか?
まぁ、これは愚痴の一種なんだけどさ。