スマートフォンやタブレットのモーションセンサーを確認します。加速度センサーで作った水準器、案内付きの軸チェック、コンパスの一周、そして端末を静止させたまま測るドリフト測定。すべてブラウザの中で動きます。
最初の値を待っています
端末を手に取って動かしてください。実際に何かを報告するまで、センサーについては何も断定しません。加速度センサーがどこにもないデスクトップでも、ブラウザは同じイベントを用意し、中身を空の値で埋めるからです。
加速度センサーの値はまだありません
水準器には重力が必要で、重力は加速度センサーから届きます。端末を動かすか、上で動きへのアクセスが許可されているか確認してください。
確認したい端末でこのページを開いてください。デスクトップパソコンにはこれらのセンサーが一つもなく、どのブラウザもそれを作り出したりはしません。
スマートフォンの動き検出は、一つの装置のふりをした三つの別々の部品です。どちらが下かを感じるチップ、回転を感じるチップ、地磁気を感じるチップ。それぞれが独立して、それぞれのやり方で壊れます。だから上では別々に確かめます。
加速度センサーが測るのは力で、静止していればその力は重力です。端末はそうやって上下を知り、画面の回転と歩数計にはそれだけで足ります。ジャイロスコープは回転を測り、素早いパンでカメラを、頭の動きでヘッドセットを支えます。重力が落ち着くまでの一瞬を待つのに対し、こちらはミリ秒で応えるからです。磁力計は地磁気を測り、他の二つに拠りどころとなる北を与えます。安価な端末には加速度センサーしか入っていません。ゲームが「非対応の端末です」と言うとき、たいてい足りないのはジャイロスコープです。
どんな加速度センサーにもオフセット、つまり測定値に加算される小さな定数があり、端末は工場出荷時の値を引いています。落としたり画面を交換したりすると、センサーの基準系が校正時の筐体に対してずれ、補正が合わなくなります。その結果、完全に水平な面でも1度や2度ずれた表示になり、一度の測定では見抜けません。端末を180度回すことが両者を分ける唯一の方法で、上の確認はそれを行います。
静止したジャイロスコープはごくわずかなゼロでない回転を報告し、その上に成り立つものはすべて、その数値を引き続けなければなりません。数値が安定していれば引き算は機能し、誰も気づきません。経年、温度、衝撃でその数値が大きくなると補正が追いつかなくなり、ゲームのカメラがひとりでに流れ、机の上で静止した端末のコンパスが回り、ヘッドセットの世界がゆっくり回転します。それを測るには、何もしない20秒があれば十分です。
磁力計が測っているのは0.5ガウス程度の磁場で、身の回りのたいていのものはそれより強力です。マグネット式のケース、車載ホルダー、スピーカー、ノートパソコンの天板、床の鉄筋。コンパスの故障に見えるものの大半は干渉であり、地図アプリが求める8の字の動きは、新しい方向のデータから補正を作り直しているだけです。本物の故障は形が違います。方位が滑らかに動かず、飛ぶのです。上のテストが一度の測定ではなく一周を求めるのはそのためです。
センサーはメインボードの上にあり、校正の基準となる座標系は筐体のものです。画面交換、バッテリー交換、こじ開けて閉じ直した筐体は、その両方をずらすことがあります。急に狂いはじめた水準器、絶えず校正を求めるコンパス、以前はしなかったドリフトをするジャイロスコープ。開けたばかりの端末では、これらをまとめて確かめる価値があります。
動きのデータからは、入力中の文字を推測することも、センサー固有の誤差から端末を特定することもできます。そのためWebKitは無条件に渡すのをやめました。iPhoneとiPadでは、ページがhttpsの上で実際のタップから要求しなければなりません。AndroidのChromeは尋ねません。だから一方にはボタンが出て、もう一方には出ないのです。いずれにせよ測定値はこのページの中にとどまります。ここから外へは何も送られません。