止まるバグは、こちらに助けを求めている。厄介なのはそちらではなく、正しい顔をして出てくる数字のほうだ。今月ひとつ見つけた。見つけたのが私たちではなかったことが、いちばん応えた。
KAZENA Order はレジだ。会計を打って、レシートを出して、1日の終わりに日計を出す。日計には支払方法ごとの内訳と、その日の総額が並ぶ。総額は毎日合っていた。合っていないほうを、誰も見ていなかった。
テストに付き合ってくれている店から、締めの現金が合わない、と連絡が来た。画面は現金 18,650ペソと出ているのに、引き出しには 16,250ペソしかない。差は 2,400ペソだった。
最初は打ち間違いだと思った。実際、そういうことは起きる。翌日もほぼ同じ形で足りなくて、3日分を並べてみたら、足りない金額がその日の電子決済の合計と、毎回ぴたりと同じだった。
支払方法はコードで引く。コードから名前と区分を引く表があって、引けなかったときは現金として扱う、とソフトに書いてある。その1行を書いたのは私だ。まだ表が空だった時期に、画面が落ちるのが嫌で置いた。
5週間前、支払方法のコードを 2文字から 3文字に変えた。表は入れ替えた。伝票も入れ替えた。入れ替わらなかったのは、店の端末が起動したときに読み込んだ古いコードの一覧だった。あの端末は変更の前からつけっぱなしで、それきり落としていない。
だからその端末は、いまも 2文字のコードを送っていた。3文字の表に 2文字で聞けば、何も返ってこない。何も返ってこなければ、現金になる。
事務所では一度も再現しなかった。こちらは試すたびにアプリを立ち上げ直すので、一覧はいつも新しい。動かし続けている場所でしか出ないものを、動かしては止める場所で探していた。
5週間で 8,600件のうち 412件、金額にして 63,000ペソが、現金として集計されていた。1ペソも消えてはいない。ただ、ちがう箱に入っていた。この店は支払いのほとんどが現金で、電子決済は全体の 5%ほどしかない。5週間も表に出なかったのは、そのおかげであり、そのせいでもある。
いちばん悪かったのは、検算を入れてあったことだ。内訳の合計と総額を突き合わせる処理があって、毎日通っていた。分からない分を現金に寄せているのだから、合計は何があっても合う。あの検算が確かめていたのは、自分自身だった。
止まるバグなら、その日のうちに直る。静かに間違える数字は、直るまでのあいだ、ずっと信用されている。412件は、信用されたまま 5週間、帳簿に流れ続けた。
直したのは2か所。引けなかったら現金、をやめた。引けないコードは不明のまま、伝票にも日計にも出す。画面に不明と並ぶのは格好が悪いが、格好が悪いものは人が直す。もうひとつは検算で、レジがその場で積み上げた金額と、日計の問い合わせが集計した金額を突き合わせる形にした。同じ表から出てきた2つの数字を比べても、何も分からない。
半日で終わると見積もって、5日かかった。4日は過去の 412件を戻す作業だ。結局これを見つけたのは、引き出しの現金を数えた人だった。ソフトの外で作られた数字だから、ソフトと食い違うことができた。事務所ではいま、照合を足すときに、この2つは別々のところで作られているか、を先に聞くようにしている。