# Gamepad Tester

> あらゆるコントローラーをブラウザでテスト：ボタンとトリガーをライブ可視化、スティックのドリフト測定、デッドゾーン、振動テスト、ポーリングレート推定。

- URL: https://bytescope.dev/ja/gamepad-test/
- Locale: ja · Also: [en](https://bytescope.dev/en/gamepad-test.md) · [zh-Hant](https://bytescope.dev/zh-Hant/gamepad-test.md)
- Runs: すべてブラウザの中で動くので、何もアップロードされません。
- Requires: Any modern browser (Chrome, Edge, Firefox, Safari), desktop and mobile.
- Updated: 2026-09-08

## What it does

USBまたはBluetoothでコントローラーを接続し、いずれかのボタンを押して起こします（Gamepad APIは入力があって初めてパッドを公開します — ページがこの手順を案内します）。押すそばからコントローラー図の各ボタンが点灯し、トリガーは0〜1のアナログ値を表示し、複数のコントローラーを並べてテストできます。

スティック分析がこのツールの心臓部です。軌跡付きのライブXY散布図が各スティックの位置を正確に示し、円形性テストではスティックを縁に沿って回して可動範囲の問題を明らかにし、拡大した中心ビューは静止時のオフセットを可視化し、ガイド付きドリフトテスト — コントローラーから手を離して10秒 — は平均偏差とピーク偏差を測定し、「左スティックが3.2%ドリフトしています。正常範囲を超えています」のような平易な判定を出します。スティックドリフトは現代のコントローラーを象徴する故障であり、測定することは推測に勝ります。

仕上げに：強/弱モーターを別々のスライダーで制御するデュアルランブル振動テスト、タイムスタンプの差分から推定するポーリングレート（有線パッドの125 Hzとeスポーツ用パッドの1000 Hzがはっきり分かります）、そして当サイトのキーボードテスターと同じ、素早い再トリガーのチャタリング検出。すべてブラウザ内でローカルに動作します — 入力データがデバイスから外に出ることはありません。

上級者向けの3つの追加機能がこのワークベンチを完成させます。入力遅延テストはプロンプトを点滅させ、押下を同時に2通りで計測します：反応値（点滅から押下まで。これには正直あなた自身の反応時間が含まれます）と、Gamepad APIのタイムスタンプと状態が最初に読み取れるフレームとの差を取って人間の反応を取り除いたパイプライン値 — サンドボックス化されたページがデバイス＋ポーリング遅延に最も近づける値です。コントローラーを2台接続すると、並列比較モードが両方の図とスティック散布図を同じビューに並べ、良品パッドを疑わしいドリフト品と直接比較できます。そしてエクスポートボタンは診断結果一式をJSONとしてダウンロードします — id、マッピング、ボタン数と軸数、現在値と観測された最小/最大範囲、ポーリングレート推定値、そしてドリフト結果 — 保証請求やフォーラム投稿にそのまま添付できます。

## Limits

Does not remap buttons, update firmware or fix drift; it shows live Gamepad API input.

## Machine output

Copy JSON copies an envelope `{ tool, url, generatedAt, userAgentHint, result }`. `tool` is `"gamepad-test"`; `result` is per-pad button/axis aggregates. An unpressed button is never reported as unresponsive.

- `gamepadApiPresent` (boolean | null) — `null` = not probed yet; `false` = probed, `navigator.getGamepads` missing; `true` = API present.
- `connectedCount` (number) — How many pads are listed in `pads`.
- `pads` (array of objects) — Connected pads, sorted by `index`. Each pad: index, id, mapping, buttonCount, axisCount; `pressedButtonIndexes` / `notPressedButtonIndexes` / `movedAxisIndexes` (sorted number[] or `null` when this pad was not the selected readout — not observed; `[]` means observed, none); `unresponsiveButtonIndexes` (always `null` — this page has no dead-button confirmation); `axisMovedThreshold` (number or `null` when not observed); `axisObservedRanges` (per-axis max−min, or `null` on the whole field if not observed; unobserved axes inside the array are `null`); `vibrationActuatorPresent` (boolean or `null` when not the selected pad / not probed); `measuredPollHz` (number or `null` when not enough timestamp deltas); `snappedPollHz` (number or `null` when nothing nearby); `pollRateIsLowerBound` (`null` = poll rate not measured; `true` = timestamps look quantized so `measuredPollHz` is a lower bound; `false` = measured, not flagged as quantized).

## FAQ

### コントローラーが表示されません — どうすればいいですか？

まず何かボタンを押してください：ブラウザはプライバシー保護のため、入力を受け取るまでゲームパッドを隠します。それでも表示されない場合は、OSレベルでペアリング/接続されているか確認し、別のUSBポートを試すかBluetoothを再ペアリングしてください。ごく古いパッドや特殊なパッドは標準マッピングを実装しておらず、通常と異なるボタン番号で現れることがあります。

### スティックドリフトはどのくらいが正常ですか？

静止時、健全なスティックは中心から約1〜2%以内に収まるべきです（ゲームはこれをデッドゾーン、通常5〜10%の中に隠しています）。約3〜5%を超える一貫した静止オフセット、または触れていないのにさまようスティックは、意図しない動きとしてゲームプレイに現れます — これがクリーニング、再キャリブレーション、修理を要する典型的な摩耗したポテンショメータの故障です。

### 振動テストはすべてのコントローラーで動作しますか？

Gamepad APIのデュアルランブルアクチュエーターを使っており、Chromium系ブラウザではほとんどのXboxおよびPlayStationパッドで動作します。一部のブラウザやパッド（およびmacOSでのほとんどのBluetooth接続）はランブルを公開しません — ツールは黙って失敗するのではなく、アクチュエーターが利用できないときにそう伝えます。

### Switch ProコントローラーやJoy-Conは使えますか？

テストには使えます：Bluetoothでペアリングし、ほとんどのブラウザで標準マッピングを公開します。ただし、ブラウザはコントローラーを読み取れるだけで — 他のPCゲーム向けのシステム全体の仮想ゲームパッドに変えることはできません。それにはBetterJoyやSteam Inputのようなドライバーレベルのツールが必要です。

### ポーリングレートの数値は何を意味しますか？

コントローラーがどのくらいの頻度で状態を報告するかで、更新間のタイムスタンプから推定されます。125 Hz（8 ms）が一般的な基準で、ハイエンドの有線パッドは1000 Hz（1 ms）に達します。低いことは故障を意味しません — ただし「1000 Hz」のパッドが125 Hzと測定される場合は、有線接続とモードを確認してください。

### 入力遅延テストはどのくらい正確ですか？

2つの数値を報告します。反応値（緑の点滅からボタン押下まで）はあなた自身の反応時間が支配的です — 環境の比較には役立ちますが、コントローラーの評価には向きません。パイプライン値はハードウェアについてより正直です：Gamepad APIのタイムスタンプとフレーム時刻の差を取り、requestAnimationFrameのループが最初にパッドの状態に対応できる時点で、その状態がどれだけ古いかを測ります。ブラウザのサンドボックスでは真のエンドツーエンドの表示遅延は測れず、タイムスタンプの粒度とポーリング間隔がパイプライン値の下限を作るため、実験室級の数値ではなく入力の鮮度の上限として読んでください。

### 2台のコントローラーを同時に比較できますか？

はい — 2台のパッドを接続し、比較モードに切り替えてください。各コントローラーが独自のライブ図とスティック散布図/ドリフト表示を並べて持ち、摩耗したスティックを健全なものと見比べる最速の方法です。接続中のパッドのどの2台を各列に置くかを選べます。

### エクスポートされるJSONには何が含まれますか？

選択したパッドのid、標準マッピング名、ボタン数と軸数、各コントロールの現在値とテスト中に観測された最小値・最大値、ポーリングレート推定値、そして実行した場合はドリフトテストの結果です。すべてブラウザ内で生成され直接ダウンロードされます — どこにも送信されません。観測範囲を完全にするため、エクスポート前に各スティックを縁に沿って一周させ、両方のトリガーを握り込んでください。
