by 唐草 [2017/05/22]
ぼくが書いた学習支援プログラムで不具合が起きていた。
課題提出ができないことがある。
かなり致命的な問題であるが、ポイントは「絶対できない」のではなくて「できないことが割とよくある」という点。確実にできないのであれば、明らかにぼくが悪い。でも、確率で出来たり出来なかったりするとなると原因がどこにあるか特定しにくい。プログラムが悪い可能性もあるが、実行しているサーバや利用しているネットワークが悪い可能性も否定できない。
現に先週の不具合は、ネットワークトラブルが原因だった。アクセス過多でネットワークが死にかけていたらしい。
と言うわけで、この不具合もぼくのせいではないだろうと読んでいた。
ただ、ネットワークが復旧した今週も状況が改善していなかった。
こうなると、分が悪くなってくる。今までほとんど疑惑の目を向けてこられなかったが、そろそろ行動を起こさないと風当たりが強くなってしまう。他人のせいにして逃げ回れるのもこれぐらいが限界だ。
と言う訳で、重い腰を上げて原因の調査を始めた。
まず初めに確認したのは、ネットワーク。管理者ではないので細かいことは分からないが、一利用者として問題が無いことを断言できるほどの証拠がそろってしまった。残念だが、事実を認めなければならない。悪いのは、このぼくだ。
ちょっと前に修正を施したソースコードを読んでいく。
どうも、課題の二重投稿防止機構が誤作動しているような印象がある。
送信ボタンをクリックしたことを検知して、連打による二重投稿を防ぐという簡単な機能だ。どうも、これがぼくの期待通りに動いていないようだ。
クリックを検知した段階で処理が止まって、送信(submit)が実行されていないように見える。
さらに調査を進めたら、MacとWindowsでイベント処理の順番が異なっていそうだということが判明した。
つまり、ぼくの実装はMac専用となっていた。なんてこった。というか、onclickイベントを検知するとsubmitが止まるってどういうことなんだ?同じchromeでも、バージョンによってこんな細部に差があるなんて思いもしなかった。