読者です 読者をやめる 読者になる 読者になる

標高+1m

Make, Hack, Think

夏の夜中に起きるバグ

f:id:ympbyc:20140715142922j:plain

または代々木の12階に出る妖怪について。

 某P社では、Android入りの巨大モニタに入れた簡単なアプリを勤怠管理のインターフェースに使っているんだけど、夏が近づいてきたある日から、このアプリに不思議な現象が起き始めた。夜中の11時頃から朝方に掛けて、サーバにランダムな複数の社員の出勤/退勤のリクエストが高速に続々と送られて来るんだ。

 ログに残っているUAもIPも例のモニタのものだから、リクエストがあのアプリから送られているのはほぼ間違いない。アプリのバグじゃないかってことでそれを作った張本人であるところの僕に調査依頼が来たんだけど、僕は夜中の11時になにかするようなコードを書いた覚えはない。ソースを見ても特に問題の動作を引き起こしそうな記述はなかった。

 リクエストの回数も不自然だった。高速に何百回も叩かれているのを見れば、当然ソース上で無限ループが発生している可能性を疑うんだけど、それにしては秒間のリクエスト数がいささか少なかった。1秒間のリクエスト回数はたかだか10回程度で、これは頑張れば人間でもできそうな回数だ。

 一応クリックの発生時と、リクエストの送信時にログを吐くように改造したapkを送って、3日ほど運用してもらってログを送ってもらった。「クリックの回数よりリクエスト送信の数が多かったらアプリのバグ、同じなら妖怪の仕業です。」

 ちょうどさっき送ってもらったログを見たところ、クリックの回数とリクエスト送信の回数は完全に一致していて、出退勤ボタンを連打する妖怪が代々木に出没している可能性が高くなった。

 僕はカリフォルニアにいて、P社は東京にあるから、アプリが動いている社内の環境は想像するしかないんだけど、多分虫のせいだと思う。このアプリは、社員全員が退社して電気が消えた後もずっと点けているいるらしくて、ということは社内の最も明るい光源は例のモニタな可能性が高い。そこに蝿やら蛾やらツマグロオオヨコバイやらが壁ずりベクトルで衝突してきたらたまったもんじゃない。まさにバグ。昔のリレーの中で焼け死んだ蛾の例もあるし、虫がコンピュータをおかしくするのはそう珍しいことじゃないのかもしれない。

 多分最終退出者がモニタのサスペンドをするか、モニタに自動ロックを設定するか、モニタの近くにベープでも置くかで運用でカバーすることになる気がするけど、アプリ側での虫対策もできなくはないと思った。

  • ロック画面を自前で作って、マルチタッチとかで開くようにする
  • ボイスコマンド
  • マイクで羽音を拾っている間のクリックは無視する

とか。同様の事例に悩んでいる方は参考にしてください。

以上です。

注) この話はフィクションで実在の企業とは関係があるかもしれないしないかもしれないです。