GUIDE 05
ポーリングレートと測定の限界 — CPSの記録はどこまで正確か
マウスのポーリングレート、ブラウザのイベント時刻、キーリピート、モニターのリフレッシュレートがCPS測定に与える影響と限界を解説します。
Webで測るCPSは「指がボタンを押した瞬間」ではなく「ブラウザが入力イベントを受け取った瞬間」を基準にしています。その間にはいくつもの段階があり、段階ごとに小さな誤差が生じます。何が影響し、何が影響しないのかをまとめました。
入力が画面に届くまで
- スイッチが押され、マウスのファームウェアがデバウンスを経て押下を確定します。
- マウスは決められた周期ごとにパソコンへ状態を報告します(ポーリング)。
- OSが入力を受け取り、ブラウザに渡します。
- ブラウザがイベントを作って時刻を付け、ページのスクリプトに渡します。
ポーリングレート
ポーリングレートは、マウスが1秒間に何回状態を報告するかです。報告間隔は 1000 ÷ ポーリングレート(ms)です。
| ポーリングレート | 報告間隔 |
|---|---|
| 125 Hz | 8 ms |
| 500 Hz | 2 ms |
| 1000 Hz | 1 ms |
クリック数そのものにはほとんど影響しません。1秒間に20回クリックしてもクリック同士の間隔は50 msで、125 Hzの報告間隔よりずっと長いからです。ただし、各クリックの時刻が報告間隔の単位で遅れることがあるため、間隔の分布は数msずつぼやける ことがあります。
ブラウザの時刻精度
CPSメーターは、イベントに付いた時刻(event.timeStamp)と performance.now() を使います。ブラウザはセキュリティ上の理由でこの時刻の精度をわざと下げることがあるので、間隔を小数点以下まで信じるより、数ms単位で読むのが適切です。ページが重い処理をしている最中でも、イベントの時刻は入力が入ったときを基準にするので、カウントが抜けることはありません。
モニターのリフレッシュレートは関係ない
60 Hzでも240 Hzでも、画面のリフレッシュレートが変えるのは数字が 表示される速さ だけです。入力のカウントは画面の更新とは別に行われるので、リフレッシュレートのせいで記録が変わることはありません。
ワイヤレス・Bluetooth
ワイヤレス接続では、報告がときどきまとめて届いたり遅れたりすることがあります。クリック数はたいてい変わりませんが、間隔の分布が広がることがあります。厳密に比べたいなら、同じ接続方式同士で比較しましょう。
キーリピート
キーボードのキーを押しっぱなしにすると、OSが一定間隔で入力を繰り返し生成します。CPSメーターはイベントのリピートフラグ(KeyboardEvent.repeat)を確認し、さらにキーを離した記録がなければ新しい入力として数えません。そのため、押しっぱなしにしているだけでは記録は伸びません。
開始と終了の扱い
- 開始:最初の入力がタイマーを始めるので、反応時間は含まれません。
- 終了:指定時間がちょうど過ぎた後の入力は捨てます。画面に「測定終了」が遅れて表示されても、カウントはイベント時刻が基準です。
- 離脱:測定中に別のタブへ移るとブラウザがタイマーを遅らせることがあるため、測定をキャンセルします。
結論
何度か測って傾向を見る用途なら、Webでの測定で十分です。0.1 CPS前後の差は機材や接続状態でも生じるので、同じ条件で何度か比べてください。