【この訳に特有な表記規約】
◎表記記号1. 序論
`Accelerometer$I, `LinearAccelerationSensor$I, `GravitySensor$I ~APIは、 `汎用~sensor~API^cite( `Generic Sensor API^en ) `GENERIC-SENSOR$r ~interfaceを拡張して,~deviceにより定義される`局所~座標系$における~deviceの[ ~X, ~Y, ~Z ]軸に適用される`加速度$についての情報を供する。 ◎ The Accelerometer, LinearAccelerationSensor and GravitySensor APIs extends the Generic Sensor API [GENERIC-SENSOR] interface to provide information about acceleration applied to device’s X, Y and Z axis in local coordinate system defined by device.
2. 例
let %sensor = new Accelerometer(); %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);
`~screen座標系$内の読取りを供する重力~sensorを利用する方法を次の例に示す。 `~screen方位$【!dom screen】が地面に垂直で,描画された~web~pageの下端が下方を指しているとき、 この~code片は,~consoleに~messageを~printすることになる。 ◎ The following example shows how to use gravity sensor that provides readings in the screen coordinate system. The snippet will print message to the console when the dom screen is perpendicular to the ground and bottom of the rendered web page is pointing downwards.
let %sensor = new GravitySensor({frequency: 5, referenceFrame: "screen"}); %sensor.onreading = () => { if (%sensor.y >= 9.8) { console.log("~Web~pageは地面に垂直です。"); } } %sensor.start();
次の例は、 `~screen方位$【!dom screenの方位】に関わらず, ~x軸~沿いの~deviceの揺れ(~gestureなど)を検出する。 ◎ The following example detects shake gesture along x axis of the device, regardless of the orientation of the dom screen.
const %shakeThreshold = 25; let %sensor = new LinearAccelerationSensor({frequency: 60}); %sensor.addEventListener('reading', () => { if (%sensor.x > %shakeThreshold) { console.log("揺れが検出されました。"); } }); %sensor.start();
3. 利用事例と要件
利用事例/要件は、 次に挙げられている ⇒# `MOTION-SENSORS$r `§ 利用事例と要件@~MOTION-SENSORS#usecases-and-requirements$, `~sensorの利用事例@https://w3c.github.io/sensors/usecases.html$cite ◎ The use cases and requirements are listed in the Motion Sensors Explainer and Sensor use cases documents.
4. ~security/~privacyの考慮点
加速度計などの慣性-~sensorにより供された`~sensor読取り$は、 様々な~security脅威を悪用する敵対者により利用され得る — 例えば ⇒# `~UIkeyを~logする@~SENSORS#keystroke-monitoring$, `所在を追跡する@~SENSORS#location-tracking$, `~deviceを指紋収集する@~SENSORS#device-fingerprinting$, `利用者を識別する@~SENSORS#user-identifying$ ◎ Sensor readings provided by inertial sensors, such as accelerometer, could be used by adversaries to exploit various security threats, for example, keylogging, location tracking, fingerprinting and user identifying.
~security~communityにより公表された論文 — 一例として `KEYSTROKEDEFENSE$r — は、 ~frequencyを絞っても,攻撃が成功する~riskを全部的には排せない一方で、 ~sensorを正当な理由で利用している~web~appの有用性には,大きく影響し得ることを指示している。 ◎ Research papers published by security community, for instance, [KEYSTROKEDEFENSE], indicate that by throttling the frequency, risks of successful attacks are not fully eliminated, while throttling may greatly affect usefulness of a web application with legitimate reasons to use the sensors.
`TOUCHSIGNATURES$r, `ACCESSORY$r 論文は、 次を提案する: 実装は[ 慣性-~sensorが利用-中にあるときに視覚的な指示を供する/ `~sensor読取り$に~accessするためには明示的に利用者の同意を要求する ]ことができる。 これらの軽減~策は、 `汎用~sensor~API^cite `GENERIC-SENSOR$r に定義される `汎用な軽減~策@~SENSORS#mitigation-strategies$を補う。 ◎ The [TOUCHSIGNATURES] and [ACCESSORY] research papers propose that implementations can provide visual indication when inertial sensors are in use and/or require explicit user consent to access sensor readings. These mitigation strategies complement the generic mitigations defined in the Generic Sensor API [GENERIC-SENSOR].
この仕様は、[ ~sensor較正~指紋収集 `SENSORID$r, 高-精度な~sensor読取りに依拠する攻撃 ]を軽減するためとして,`加速度計の読取り量子化~algo$を定義する (`最新な読取り~mapから値を取得する$演算から~callされる)。 量子化~algoの詳細は、 `W3C Privacy Interest Group^cite による`推奨@https://github.com/w3c/accelerometer/issues/54$に従う。 ◎ This specification defines an accelerometer reading quantization algorithm (called from the get value from latest reading operation) to mitigate sensor calibration fingerprinting [SENSORID] and attacks that rely on high precision sensor readings. The details of the quantization algorithm follow W3C Privacy Interest Group’s recommendation.
5. 許可~施策の統合
この仕様は、 文字列 `accelerometer$l により識別される`施策により制御される特能$を用立てる — それは、 `DEVICE-ORIENTATION$r にて定義される。 ◎ This specification utilizes the policy-controlled feature identified by the string "accelerometer" defined in [DEVICE-ORIENTATION].
6. ~model
6.1. 加速度計
`~sensor型$ `加速度計@i ( `Accelerometer^en )には、 次に挙げる~dataが結付けられる: ◎ The Accelerometer sensor type has the following associated data:
- `拡張~sensor~interface$ ⇒ `Accelerometer$I ◎ Extension sensor interface • Accelerometer
- `~sensor許可~名~群$ ⇒ { `accelerometer$l } ◎ Sensor permission names • "accelerometer"
- `~sensor特能~名~群$ ⇒ { `accelerometer$l } ◎ Sensor feature names • "accelerometer"
- `許可~revocation~algo$ ⇒ 次を呼出す ⇒ `~sensor許可~revocation~algo$( `accelerometer$l ) ◎ Permission revocation algorithm • Invoke the generic sensor permission revocation algorithm with "accelerometer".
- `既定の~sensor$ ⇒ 当の~deviceの~main加速度計~sensor ◎ Default sensor • The device’s main accelerometer sensor.
- `属する~virtual~sensor型$ ⇒ `accelerometer$vsT ◎ Virtual sensor type • "accelerometer"
`~sensor型$ `加速度計$i の `Sensor$I 用の`最新な読取り~map$は[ `x^l, `y^l, `z^l ]を`~key$mapとする 3 個の`~entry$mapを含む。 それらの各`値$mapは、 対応する軸における~deviceの`加速度$を包含する。 ◎ A latest reading for a Sensor of Accelerometer sensor type includes three entries whose keys are "x", "y", "z" and whose values contain device’s acceleration about the corresponding axes.
`加速度@ ( `acceleration^en )は、 ~deviceの速度における,時間に対する変化-率である。 その単位は、 ~ms2 `SI$r ( `metre per second squared^en )とする。 ◎ The acceleration is the rate of change of velocity of a device with respect to time. Its unit is the metre per second squared (m/s2) [SI].
`加速度$の測定~用の基準~frameは、 慣性系でなければナラナイ — 自由落下している~deviceは、 各~軸の`加速度$値に 0 ~ms2を供することになるような。 ◎ The frame of reference for the acceleration measurement must be inertial, such as, the device in free fall would provide 0 (m/s2) acceleration value for each axis.
`加速度$値の符号は、 `局所~座標系$において右手系に則るモノトスル(下の図を見よ)。 ◎ The sign of the acceleration values must be according to the right-hand convention in a local coordinate system (see figure below).
加速度計の座標系。 ◎ Accelerometer coordinate system.
6.2. 線形~加速度~sensor
`~sensor型$ `線形~加速度計~sensor@i ( `Linear Acceleration Sensor^en ) には、 次に挙げる~dataが結付けられる: ◎ The Linear Acceleration Sensor sensor type has the following associated data:
- `拡張~sensor~interface$ ⇒ `LinearAccelerationSensor$I ◎ Extension sensor interface • LinearAccelerationSensor
- `~sensor許可~名~群$ ⇒ { `accelerometer$l } ◎ Sensor permission names • "accelerometer"
- `~sensor特能~名~群$ ⇒ { `accelerometer$l } ◎ Sensor feature names • "accelerometer"
- `許可~revocation~algo$ ⇒ 次を呼出す ⇒ `~sensor許可~revocation~algo$( `accelerometer$l ) ◎ Permission revocation algorithm • Invoke the generic sensor permission revocation algorithm with "accelerometer".
- `属する~virtual~sensor型$ ⇒ `linear-acceleration$vsT ◎ Virtual sensor type • "linear-acceleration"
`~sensor型$ `線形~加速度計~sensor$i の `Sensor$I 用の`最新な読取り~map$は[ `x^l, `y^l, `z^l ]を`~key$mapとする 3 個の`~entry$mapを含む。 それらの各`値$mapは、 対応する軸における~deviceの`線形~加速度$を包含する。 ◎ A latest reading for a Sensor of Linear Acceleration Sensor sensor type includes three entries whose keys are "x", "y", "z" and whose values contain device’s linear acceleration about the corresponding axes.
`線形~加速度@ ( `linear acceleration^en )は、 ~sensorを~hostしている~deviceに適用される[ `重力$の寄与を含まない,`加速度$ ]である。 ◎ The linear acceleration is an acceleration that is applied to the device that hosts the sensor, without the contribution of a gravity force.
注記: `重力$と`線形~加速度$の関係性は、 `MOTION-SENSORS$r `§ 重力~sensorと線形~加速度~sensor@~MOTION-SENSORS#gravity-and-linear-acceleration$ にて論じられている。 ◎ Note: The relationship between gravity and linear acceleration is discussed in Motion Sensors Explainer § gravity-and-linear-acceleration.
6.3. 重力~sensor
`~sensor型$ `重力~sensor@i ( `Gravity Sensor^en )には、 次に挙げる~dataが結付けられる: ◎ The Gravity Sensor sensor type has the following associated data:
- `拡張~sensor~interface$ ⇒ `GravitySensor$I ◎ Extension sensor interface • GravitySensor
- `~sensor許可~名~群$ ⇒ { `accelerometer$l } ◎ Sensor permission names • "accelerometer"
- `~sensor特能~名~群$ ⇒ { `accelerometer$l } ◎ Sensor feature names • "accelerometer"
- `許可~revocation~algo$ ⇒ 次を呼出す ⇒ `~sensor許可~revocation~algo$( `accelerometer$l ) ◎ Permission revocation algorithm • Invoke the generic sensor permission revocation algorithm with "accelerometer".
- `属する~virtual~sensor型$ ⇒ `gravity@vsT ◎ Virtual sensor type • "gravity"
`~sensor型$ `重力~sensor$i の `Sensor$I 用の`最新な読取り~map$は[ `x^l, `y^l, `z^l ]を`~key$mapとする 3 個の`~entry$mapを含む。 それらの各`値$mapは、 対応する軸における`重力$に因る加速度を包含する。 ◎ A latest reading for a Sensor of Gravity Sensor sensor type includes three entries whose keys are "x", "y", "z" and whose values contain the acceleration due to gravity about the corresponding axes.
`重力@ ( `gravity^en / `gravity force^en )は、 ~deviceの`加速度$の[ 近くの質量体【平たく言えば,地球の中心】へ向かって速度が増加するのに抗する成分 ]である。 短時間でない限り,自由落下している~deviceにおいて算出される`重力$は,不正な値になり得る。 ◎ The gravity is the component of the device’s acceleration that prevents its velocity from increasing toward nearby masses. Devices in free fall for more than a short period of time may compute incorrect values for the gravity.
注記: `重力$と`線形~加速度$の関係性は、 `MOTION-SENSORS$r `§ 重力~sensorと線形~加速度~sensor@~MOTION-SENSORS#gravity-and-linear-acceleration$ にて論じられている。 ◎ Note: The relationship between gravity and linear acceleration is discussed in Motion Sensors Explainer § gravity-and-linear-acceleration.
6.4. 基準~frame
`局所~座標系$は、[ `Accelerometer$I / `LinearAccelerationSensor$I / `GravitySensor$I ]`~sensor読取り$用の基準~frameを表現する。 それは、 `~device座標系$にも`~screen座標系$にもなり得る。 ◎ The local coordinate system represents the reference frame for the Accelerometer, LinearAccelerationSensor, and the GravitySensor readings. It can be either the device coordinate system or the screen coordinate system.
`~device座標系@ ( `device coordinate system^en )は、 物理的~deviceに束縛された 3 次元な~Cartesian座標系として定義される。 ~displayを伴う~device用には,`~device座標系$の:
- 原点は~device~displayの中心とする。
-
~deviceが,その既定の姿勢に保持されている下では:
- ~Y軸は ~displayの上端を指す。
- ~X軸は ~displayの右端を指す。
- ~Z軸は[ ~X軸, ~Y軸 ]の~vector-productであり,~displayから閲覧者へ向かう方を指す
`~device座標系$は【~deviceの~displayに相対的な】`~screen方位$【!dom screenの方位】に関わらず,~stationaryであり続ける(下の図を見よ)。
◎ The device coordinate system is defined as a three dimensional Cartesian coordinate system (x, y, z), which is bound to the physical device. For devices with a display, the origin of the device coordinate system is the center of the device display. If the device is held in its default position, the Y-axis points towards the top of the display, the X-axis points towards the right of the display and Z-axis is the vector product of X and Y axes and it points outwards from the display, and towards the viewer. The device coordinate system remains stationary regardless of the dom screen orientation (see figure below).~device座標系。 ◎ Device coordinate system.
`~screen座標系@ ( `screen coordinate system^en )は、 【~deviceの~displayに相対的な】`~screen方位$【!dom screen】に束縛された 3 次元な~Cartesian座標系として定義される — `~screen座標系$の:
- 原点は、 ~screen【!dom screen】の中心にある。
- ~Y軸は、 常に~screen【!dom screen】の上端を指す。
- ~X軸は、 ~screen【!dom screen】の右端を指す。
- ~Z軸は、 ~X軸, ~Y軸の~vector-productであり,~screen【!dom screen】から閲覧者へ向かう方を指す(下の図を見よ)。
~screen座標系。 ◎ Screen coordinate system.
`~device座標系$と`~screen座標系$の主な相違は、 後者は常に`~screen方位$【!dom screenの方位】に従うことにある — すなわち,~screen【!~device】の`現在の方位~種別$が変化した場合,それに応じて~X軸, ~Y軸が入れ替わることになる。 対照的に,`~device座標系$は、 常に~deviceに相対的に~stationaryであり続ける。 ◎ The main difference between the device coordinate system and the screen coordinate system, is that the screen coordinate system always follows the dom screen orientation, i.e. it will swap X and Y axes in relation to the device if the current orientation type changes. In contrast, the device coordinate system will always remain stationary relative to the device.
7. ~API
7.1. `Accelerometer^I ~interface
[`SecureContext$, `Exposed$=Window] interface `Accelerometer@I : `Sensor$I { `Accelerometer$mc(optional `AccelerometerSensorOptions$I %options = {}); readonly attribute `double$? `x@m; readonly attribute `double$? `y@m; readonly attribute `double$? `z@m; }; enum `AccelerometerLocalCoordinateSystem@I { `device@l, `screen@l }; dictionary `AccelerometerSensorOptions@I : `SensorOptions$I { `AccelerometerLocalCoordinateSystem$I `referenceFrame@mb = "device"; };
`Accelerometer$I が`~supportする~sensor~option群$は ⇒ `frequency^l, `referenceFrame^l ◎ Supported sensor options for Accelerometer are "frequency" and "referenceFrame".
[ `x$m / `y$m / `z$m ]属性は、[ ~x / ~y / ~z ]軸~沿いの`加速度$を表現する。 ◎ ↓
7.2. `LinearAccelerationSensor^I ~interface
[`SecureContext$, `Exposed$=Window] interface `LinearAccelerationSensor@I : `Accelerometer$I { `LinearAccelerationSensor$mc(optional `AccelerometerSensorOptions$I %options = {}); };
`LinearAccelerationSensor$I が`~supportする~sensor~option群$は ⇒ `frequency^l, `referenceFrame^l ◎ Supported sensor options for LinearAccelerationSensor are "frequency" and "referenceFrame".
`LinearAccelerationSensor$I の[ `x$m / `y$m / `z$m ]属性は、[ ~x / ~y / ~z ]軸~沿いの`線形~加速度$を表現する。 ◎ ↓
7.3. `GravitySensor^I ~interface
[`SecureContext$, `Exposed$=Window] interface `GravitySensor@I : `Accelerometer$I { `GravitySensor$mc(optional `AccelerometerSensorOptions$I %options = {}); };
`GravitySensor$I が`~supportする~sensor~option群$は ⇒ `frequency^l, `referenceFrame^l ◎ Supported sensor options for GravitySensor are "frequency" and "referenceFrame".
`GravitySensor$I の[ `x$m / `y$m / `z$m ]属性は、 `重力$に因る[ ~x / ~y / ~z ]軸~沿いの`加速度$の効果を表現する。 ◎ ↓
8. 抽象-演算
`加速度計~objを構築する@ ときは、 所与の ( %~obj, %~option群 ) に対し: ◎ 8.1. Construct an accelerometer object ↓
- ~Assert: %~obj は `Accelerometer$I ~interfaceを実装する ◎ input • object, an Accelerometer, LinearAccelerationSensor or GravitySensor object.
- ~Assert: %~option群 は `AccelerometerSensorOptions$I 辞書である ◎ • options, a AccelerometerSensorOptions object.
- ~IF[ `~sensor施策により制御される特能を検査する$( %~obj の`~sensor型$ ) ~EQ ~F ] ⇒ ~THROW `SecurityError$E ◎ Let allowed be the result of invoking check sensor policy-controlled features with object’s sensor type. ◎ If allowed is false, then: • Throw a SecurityError DOMException.
- `~sensor~objを初期化する$( %~obj, %~option群 ) ◎ Invoke initialize a sensor object with object and options.
- %~obj の`局所~座標系$を %~option群[ "`referenceFrame$mb" ] に応じて, 次になるものと定義する ⇒# `screen^l ならば `~screen座標系$/ `device^l ならば `~device座標系$ ◎ If options.referenceFrame is "screen", then: • Set object’s local coordinate system to the screen coordinate system. ◎ Otherwise, define object’s local coordinate system to the device coordinate system.
`~sensor型$ `加速度計$i は、 `読取り量子化~algo$として次を定義する — それは、 所与の ( `~sensor読取り$ %読取り ) に対し,`~sensor読取り$を返す: ◎ 8.2. Accelerometer reading quantization algorithm ◎ The Accelerometer sensor type defines the following reading quantization algorithm: ◎ input • reading, a sensor reading output • A sensor reading
- ( %x, %y, %z ) ~LET ( %読取り[ `x^l ], %読取り[ `y^l ], %読取り[ `z^l ] ) ◎ ↓
- %量子化された読取り ~LET %読取り ◎ Let quantizedReading be reading.
- ~IF[ %x ~NEQ ~NULL ] ⇒ %量子化された読取り[ `x^l ] ~SET %x に最も近い 0.1 ~ms2 の倍数 ◎ If quantizedReading["x"] is not null, set quantizedReading["x"] to the nearest 0.1 m/s2.
- ~IF[ %y ~NEQ ~NULL ] ⇒ %量子化された読取り[ `y^l ] ~SET %y に最も近い 0.1 ~ms2 の倍数 ◎ If quantizedReading["y"] is not null, set quantizedReading["y"] to the nearest 0.1 m/s2.
- ~IF[ %z ~NEQ ~NULL ] ⇒ %量子化された読取り[ `z^l ] ~SET %z に最も近い 0.1 ~ms2 の倍数 ◎ If quantizedReading["z"] is not null, set quantizedReading["z"] to the nearest 0.1 m/s2.
- ~RET %量子化された読取り ◎ Return quantizedReading.
9. 自動化
この節では、 `GENERIC-SENSOR$r に定義される`自動化@~SENSORS#automation$を拡張する — `加速度計$i に特有な`~virtual~sensor~metadata$を供することにより。 この仕様により利用される`~virtual~sensor型$のうち一部は、 `DEVICE-ORIENTATION$r にて定義される。 ◎ This section extends Generic Sensor API § 9 Automation by providing Accelerometer-specific virtual sensor metadata. Some of the virtual sensor types used by this specification are defined in [DEVICE-ORIENTATION].
9.1. 加速度計の自動化
`加速度計$i が`属する~virtual~sensor型$ `accelerometer$vsT, それに対応する[ `型ごとの~virtual~sensor~metadata$を成す`~entry$map ]は、 `DEVICE-ORIENTATION$r `§ 自動化@~DEVICEORIENTATION#automation$ にて定義される。 ◎ The accelerometer virtual sensor type and its corresponding entry in the per-type virtual sensor metadata map are defined in Device Orientation and Motion § automation.
9.2. 線形~加速度計の自動化
`線形~加速度計~sensor$i が`属する~virtual~sensor型$ `linear-acceleration$vsT, それに対応する[ `型ごとの~virtual~sensor~metadata$を成す`~entry$map ]は、 `DEVICE-ORIENTATION$r `§ 自動化@~DEVICEORIENTATION#automation$ にて定義される。 ◎ The linear-acceleration virtual sensor type and its corresponding entry in the per-type virtual sensor metadata map are defined in Device Orientation and Motion § automation.
9.3. 重力~sensorの自動化
`型ごとの~virtual~sensor~metadata$を与える`~map$は、 次に挙げる`~entry$mapを伴うモノトスル: ◎ The per-type virtual sensor metadata map must have the following entry:
- `~key$map `gravity$vsT ⇒ 対応する`値$mapを与える`~virtual~sensor~metadata$の ⇒# `読取り構文解析~algo$vsMは `~xyzの読取りを構文解析する$ ◎ key • "gravity" value • A virtual sensor metadata whose reading parsing algorithm is parse xyz reading.
謝辞
`Tobie Langel^en 氏による, `汎用~sensor~API^citeの作業に。 ◎ Tobie Langel for the work on Generic Sensor API.
`W3C Privacy Interest Group^cite, `Paul Jensen^en 氏による, ~sensor較正~指紋収集の軽減~提案, その論点に。 ◎ W3C Privacy Interest Group and Paul Jensen for the sensor calibration fingerprinting mitigation proposal and discussion.