1. はじめに
Gyroscope APIは、Generic Sensor API [GENERIC-SENSOR] を拡張し、デバイスのローカルX、Y、Z軸まわりの角速度(ラジアン毎秒単位)に関する情報を提供します。
2. ユースケースおよび要件
ユースケースおよび要件は、Motion Sensors Explainer ドキュメントで扱われています。
3. 例
let sensor= new Gyroscope(); sensor. start(); sensor. onreading= () => { console. log( "X軸回りの角速度 " + sensor. x); console. log( "Y軸回りの角速度 " + sensor. y); console. log( "Z軸回りの角速度 " + sensor. z); }; sensor. onerror= event=> console. log( event. error. name, event. error. message);
4. セキュリティとプライバシーに関する考慮事項
センサー 読み取り値は、ジャイロスコープなどの慣性センサーによって提供され、攻撃者によって様々なセキュリティ脅威(例:キーロギング、 位置追跡、フィンガープリンティング、ユーザー識別、さらには盗聴)に悪用される可能性があります。
たとえば[KEYSTROKEDEFENSE]など、セキュリティコミュニティにより発表された研究論文によれば、 周波数を絞ることで成功率を完全に排除できるわけではなく、逆にセンサー利用に正当な理由があるウェブアプリにとっては実用性が大きく損なわれることがあります。
[TOUCHSIGNATURES] では、慣性センサーの利用中に視覚的インジケーターを表示したり、センサー読み取り値へのアクセスに明示的なユーザー同意を要求する実装が提案されています。 これらの緩和策は、Generic Sensor API [GENERIC-SENSOR]で定義されている一般的な緩和策を補完します。
5. パーミッションポリシー統合
この仕様はポリシー管理機能として"gyroscope"を利用します。これは[DEVICE-ORIENTATION]で定義されています。
6. モデル
ジャイロスコープ センサータイプには以下のデータがあります:
- 拡張センサーインターフェース
- センサー許可名
- センサー機能名
- 許可取り消しアルゴリズム
-
Generic Sensor permission revocation algorithm を "
gyroscope" で呼び出します。 - デフォルトセンサー
-
デバイスのメインジャイロセンサー。
- 仮想センサータイプ
最新読み取り値は、Sensor
のジャイロスコープ センサータイプに対し
"x", "y", "z" の3つのエントリを持ち、そのキーは
"x", "y", "z" であり、対応する値には現在の角速度が含まれます。
角速度 は、デバイスが指定軸のまわりを回転する速度であり、デバイスによって定義される ローカル座標系 のもとで計測されます。 単位はラジアン毎秒(rad/s)[SI] です。
現在の角速度の符号は、回転方向に依存し、デバイスで定義されたローカル座標系で右手系規則に従うものとします。すなわち、軸の正方向から見て時計回りの回転を正とします(下図参照)。

6.1. 参照フレーム
ローカル座標系は、Gyroscope 読み取り値の参照フレームであり、デバイス座標系またはスクリーン座標系のいずれかです。
7. API
7.1. ジャイロスコープインターフェース
[SecureContext ,Exposed =Window ]interface :Gyroscope Sensor {constructor (optional GyroscopeSensorOptions = {});sensorOptions readonly attribute double ?;x readonly attribute double ?;y readonly attribute double ?; };z enum {GyroscopeLocalCoordinateSystem ,"device" };"screen" dictionary :GyroscopeSensorOptions SensorOptions {GyroscopeLocalCoordinateSystem = "device"; };referenceFrame
Gyroscopeでサポートされるセンサーオプションは "frequency" および "referenceFrame" です。
7.1.1. Gyroscope.x
x
属性は、Gyroscope
インターフェースの現在のX軸まわりの角速度を示します。
すなわち、この属性は、最新読み取り値から値を取得を
7.1.2. Gyroscope.y
y
属性は、Gyroscope
インターフェースの現在のY軸まわりの角速度を示します。
すなわち、この属性は、最新読み取り値から値を取得を
7.1.3. Gyroscope.z
z
属性は、Gyroscope
インターフェースの現在のZ軸まわりの角速度を示します。
すなわち、この属性は、最新読み取り値から値を取得を
8. 抽象オペレーション
8.1. ジャイロスコープオブジェクトの構築
- 入力
-
object、
Gyroscopeオブジェクト。options、
GyroscopeSensorOptionsオブジェクト。
-
allowedにobjectのセンサータイプを指定してセンサーポリシー管理機能のチェックを呼び出した結果を代入する。
-
もしallowedがfalseなら:
-
SecurityError
DOMExceptionをスローする。
-
-
objectとoptionsでセンサーオブジェクトの初期化を呼び出す。
-
もしoptions.
referenceFrameが"screen"なら:
9. 自動化
このセクションはGeneric Sensor API § 9 Automationを拡張し、Gyroscope固有の仮想センサメタデータを提供します。
gyroscope virtual sensor typeおよび per-type virtual sensor metadata mapの対応するエントリは Device Orientation and Motion § automation で定義されています。
10. 謝辞
Generic Sensor API に関する作業について Tobie Langel に感謝します。
11. 適合性
適合性要件は、記述的な主張およびRFC 2119の用語によって表現されています。規範部分の "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", "OPTIONAL" はRFC 2119で定められたとおりに解釈するものとします。ただし、可読性のためこれらの単語は本仕様で大文字になっていない場合があります。
明示的に非規範的とマークされたセクション、例、注以外、この仕様の本文はすべて規範的です。 [RFC2119]
適合ユーザーエージェントは、本仕様のうちユーザーエージェントに該当する全要件を実装しなければなりません。
この仕様のIDL断片は、Web IDL仕様[WEBIDL]で必要とされる通りに解釈されなければなりません。