UIにおける一つの真理

ユーザーは何度でもボタンを押したがる!

古いサービスの保守をやっている中で、ユーザーからのクレームないし調査依頼のうち一定の割合を占めるのが「同じ操作がいつの間にか二重で行われてしまった」というもの。命名するなら「過失による多重POST問題」。

コメントの多重投稿程度ならまだしも、それが決済に関わるような操作においても平気で*1二重クリック、三重クリックとしてしまって、それが後々問題になるパターンは多い(月会費を二重に売上してしまったとか)。「時間がかかりますのでボタンは必ず一度だけ押してください」なんて注釈が書いてあっても、そんなの関係ねぇ!

大方リクエストの間隔が1秒未満とは限らないところを見ると、いわゆるダブルクリック操作をしているというわけではなく、なかなか画面が切り替わらない間に「ボタンまだ押してなかったかな?」みたいな感覚で(あるいは無意識で)何度もカチカチとクリックしている光景がなんとなく想像できる。概ねユーザーのPCリテラシーが低いほど何度もボタンを押したがる傾向があるが、これがIT系のエンジニアであったりしても長期に渡って利用していると大抵一度や二度は遭遇するように思う。

個人的にリクエストの待機中に同一のリクエストを何度でも実行できてしまうのはブラウザ側の問題だと思っているが*2、多重に実行されると困る処理については、JavaScriptで多重送信を防ぐ対策を入れるなり、サーバ側で短時間かつ同一内容のリクエストは弾くといった対策を施しておくのが現実的な解か。

*1:おそらく気付いてないだけだとは思うが

*2:サーバからのレスポンス待ちな状況で再度同じリクエストを行いたい場面なんて、DoSくらいしか考えられない。せめてダイアログくらい出すべきじゃ?