概要
この仕様は、デバイスのローカルな三つの主要軸まわりの回転率を監視するための具体的なセンサーインターフェースを定義します。
この文書の位置付け
このセクションは、本書が公開された時点のステータスについて説明します。
現在のW3C出版物および本技術レポートの最新版は、
W3C技術レポート一覧 でご覧いただけます。
本書は
Devices and Sensors Working Group
によって、Recommendation track
を用いて、候補勧告ドラフトとして公開されました。本書はW3C勧告となることを意図しています。
本書についてコメントがある場合は、
public-device-apis@w3.org
(登録 ,
アーカイブ )
までお送りください。
メール送信時には、題名に「gyroscope」という文字列を、
次のように記載するのが望ましいです:
“[gyroscope] …コメントの概要… ”。
すべてのコメントは歓迎します。
候補勧告としての公開は、W3C
およびその会員による承認を意味するものではありません。
候補勧告ドラフトは、前回の候補勧告から、作業部会が次回の候補勧告スナップショットに含めようとする変更点を統合したものです。
これはドラフト文書であり、随時更新・置換・廃止される可能性があります。
本書は進行中の作業以外のものとして引用するのは不適切です。
本書が提案勧告段階に進むための基準は、
本仕様のすべての機能を実装した、最低2つの独立かつ相互運用可能なユーザーエージェントが存在することです。
これは、作業部会が作成したテストスイートで定義されるユーザーエージェントテストに合格することで判断されます。
作業部会は進捗を追跡するための実装報告書を準備します。
本書は
W3C特許ポリシー
の下で運営されるグループによって作成されました。
W3Cは当該グループの成果物に関連して
特許開示の公開リスト
を管理しています。
そのページには特許開示方法についての説明もあります。
特許の「必須クレーム」を含むと考えられる特許について実際に知っている個人は、
W3C特許ポリシー第6節
に従って情報を開示する必要があります。
本書は
2025年8月18日版W3Cプロセス文書
によって管理されています。
この仕様は既存のデプロイメントのために保守されている。複数のブラウザーエンジンが
この仕様について懸念を表明している。新しいプロジェクトでは、開発者は
クロスエンジン対応を持つ Device Orientation and Motion
を使用するべきである。
Working Group は、新しいモーション検知機能を Device Orientation and
Motion で開発する意向である。
本書は随時メンテナンスおよび更新されます。本書の一部は進行中の作業です。
目次
1 はじめに
2 ユースケースおよび要件
3 例
4 セキュリティとプライバシーに関する考慮事項
5 パーミッションポリシー統合
6 モデル
6.1 参照フレーム
7 API
7.1 ジャイロスコープインターフェース
7.1.1 Gyroscope.x
7.1.2 Gyroscope.y
7.1.3 Gyroscope.z
8 抽象オペレーション
8.1 ジャイロスコープオブジェクトの構築
9 自動化
10 謝辞
11 適合性
索引
本仕様で定義されている用語
他仕様で定義された用語
参考文献
規範的参考文献
参考情報
IDL索引
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. モデル
ジャイロスコープ センサータイプ には以下のデータがあります:
拡張センサーインターフェース
Gyroscope
センサー許可名
"gyroscope "
センサー機能名
"gyroscope"
許可取り消しアルゴリズム
Generic Sensor permission revocation
algorithm
を
"gyroscope "
で呼び出します。
デフォルトセンサー
デバイスのメインジャイロセンサー。
仮想センサータイプ
"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 referenceFrame = "device";
};
Gyroscope でサポートされるセンサーオプションは "frequency" および "referenceFrame"
です。
7.1.1. Gyroscope.x
x
属性は、Gyroscope
インターフェースの現在のX軸まわりの角速度 を示します。
すなわち、この属性は、最新読み取り値から値を取得 をthis と"x"を引数にして呼び出した値を返します。
7.1.2. Gyroscope.y
y
属性は、Gyroscope
インターフェースの現在のY軸まわりの角速度 を示します。
すなわち、この属性は、最新読み取り値から値を取得 をthis と"y"を引数にして呼び出した値を返します。
7.1.3. Gyroscope.z
z
属性は、Gyroscope
インターフェースの現在のZ軸まわりの角速度 を示します。
すなわち、この属性は、最新読み取り値から値を取得 をthis と"z"を引数にして呼び出した値を返します。
8. 抽象オペレーション
8.1.
ジャイロスコープオブジェクトの構築
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 に感謝します。
適合性要件は、記述的な記述と RFC 2119 用語の組み合わせで表現されます。規範的部分で使われている "MUST"、
"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、
"RECOMMENDED"、"MAY"、"OPTIONAL" というキーワードは RFC 2119 に記載された通りに解釈されます。
ただし、可読性のために、これらの語句は本仕様ではすべて大文字では記載されていません。
本仕様の本文は、例示や注記、非規範的と明示されたセクションを除き、すべて規範的な内容です。[RFC2119]
適合ユーザーエージェント は、
ユーザーエージェントに該当する、本仕様に記載されたすべての要件を実装しなければなりません。
本仕様の IDL 断片は、「Web IDL」仕様に記載された通り、適合する IDL 断片として必須であると解釈されます。[WEBIDL]
索引
本仕様で定義されている用語
角速度 , § 6
適合ユーザーエージェント , § 11
ジャイロスコープオブジェクトの構築 , § 8
constructor() , § 7.1
constructor(sensorOptions) , § 7.1
"device" , § 7.1
ジャイロスコープ
Gyroscope() , § 7.1
GyroscopeLocalCoordinateSystem , § 7.1
Gyroscope(sensorOptions) , § 7.1
GyroscopeSensorOptions , § 7.1
referenceFrame , § 7.1
"screen" , § 7.1
x , § 7.1
y , § 7.1
z , § 7.1
他仕様で定義された用語
[ACCELEROMETER] で定義されている用語:
[DEVICE-ORIENTATION] で定義されている用語:
"gyroscope"
gyroscope 仮想センサータイプ
[GENERIC-SENSOR] で定義されている用語:
Sensor
SensorOptions
check sensor policy-controlled features
default sensor
eavesdropping
extension sensor interface
fingerprinting
generic mitigations
generic sensor permission revocation algorithm
get value from latest reading
initialize a sensor object
keylogging
latest reading
local coordinate system
location tracking
per-type virtual sensor metadata
sensor feature names
sensor permission names
sensor reading
sensor type
supported sensor options
user identifying
virtual sensor type
[INFRA] で定義されている用語:
[PERMISSIONS] で定義されている用語:
permission revocation algorithm
[PERMISSIONS-POLICY-1] で定義されている用語:
[WEBIDL] で定義されている用語:
DOMException
Exposed
SecureContext
SecurityError
double
this
throw
参考文献
規範的参考文献
[ACCELEROMETER]
Anssi Kostiainen. 加速度センサー . URL: https://w3c.github.io/accelerometer/
[DEVICE-ORIENTATION]
Reilly Grant; Marcos Caceres. デバイスの方向と動き . URL: https://w3c.github.io/deviceorientation/
[GENERIC-SENSOR]
Rick Waldron. 汎用センサーAPI . URL: https://w3c.github.io/sensors/
[INFRA]
Anne van Kesteren; Domenic Denicola. Infra標準 .
ライビング・スタンダード. URL: https://infra.spec.whatwg.org/
[PERMISSIONS]
Marcos Caceres; Mike Taylor. パーミッション . URL:
https://w3c.github.io/permissions/
[PERMISSIONS-POLICY-1]
Ian Clelland. パーミッションポリシー .
URL: https://w3c.github.io/webappsec-permissions-policy/
[RFC2119]
S. Bradner. RFCで要求レベルを示すためのキーワード .
1997年3月. 現行の最良慣行. URL: https://datatracker.ietf.org/doc/html/rfc2119
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL 標準 . ライビング・スタンダード.
URL: https://webidl.spec.whatwg.org/
[KEYSTROKEDEFENSE]
Song, Yihang, ほか. 動作ベースのキーストローク推論攻撃に対する2つの新しい防御手法 。2014年。情報提供。URL:
https://arxiv.org/abs/1410.7746
[SI]
SI ブロシュア:
国際単位系(SI)、第8版 。2014年。第8版。URL: http://www.bipm.org/en/publications/si-brochure/
[TOUCHSIGNATURES]
Mehrnezhad, Maryam, ほか. Touchsignatures:
モバイルセンサーデータとJavaScriptによるユーザーのタッチ動作とPINの識別 。2016年。情報提供。URL: https://arxiv.org/abs/1602.04115
IDL索引
[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 referenceFrame = "device";
};
⚠ MDN
Gyroscope/Gyroscope
In only one current engine.
Firefox None Safari None Chrome 67+
Opera ? Edge 79+
Edge (Legacy) ? IE None
Firefox for Android ? iOS Safari ? Chrome for Android ? Android WebView ? Samsung Internet ? Opera Mobile ?
⚠ MDN
Gyroscope/x
In only one current engine.
Firefox None Safari None Chrome 67+
Opera ? Edge 79+
Edge (Legacy) ? IE None
Firefox for Android ? iOS Safari ? Chrome for Android ? Android WebView ? Samsung Internet ? Opera Mobile ?
⚠ MDN
Gyroscope/y
In only one current engine.
Firefox None Safari None Chrome 67+
Opera ? Edge 79+
Edge (Legacy) ? IE None
Firefox for Android ? iOS Safari ? Chrome for Android ? Android WebView ? Samsung Internet ? Opera Mobile ?
⚠ MDN
Gyroscope/z
In only one current engine.
Firefox None Safari None Chrome 67+
Opera ? Edge 79+
Edge (Legacy) ? IE None
Firefox for Android ? iOS Safari ? Chrome for Android ? Android WebView ? Samsung Internet ? Opera Mobile ?
⚠ MDN
Gyroscope
In only one current engine.
Firefox None Safari None Chrome 67+
Opera ? Edge 79+
Edge (Legacy) ? IE None
Firefox for Android ? iOS Safari ? Chrome for Android ? Android WebView ? Samsung Internet ? Opera Mobile ?
⚠ MDN
Headers/Feature-Policy/gyroscope
In only one current engine.
Firefox None Safari None Chrome 67+
Opera ? Edge 79+
Edge (Legacy) ? IE None
Firefox for Android ? iOS Safari ? Chrome for Android ? Android WebView ? Samsung Internet ? Opera Mobile ?