1. 序論
`近接~sensor^cite( `Proximity Sensor^en )は、 `汎用~sensor~API^cite( `Generic Sensor API^en ) `GENERIC-SENSOR$r を拡張して,~deviceの首な近接~sensorにより検出される近接~levelについて情報を供する。 近接~levelは、 ~sensorから最も近い可視~面までの距離として(~centimeterで)報告される。 `§ 近接~sensorの制限@#limitations-proximity-sensors$にて、 あり得る制限について,もっと述べる — [ 検出~手法, ~sensorの構成, 等々 ]の相違に因り,報告される精確な距離~値が~deviceにより異なるわけについてなど。 さらには,一部の近接~sensorは、 近くに物体があるかどうかを指示する真偽値だけしか供せないかもしれず、 絶対的な距離より,その有無の検出の様になる。 ◎ The Proximity Sensor extends the Generic Sensor API [GENERIC-SENSOR] to provide information about proximity level, as detected by the device’s primary proximity sensor. The proximity level is reported as the distance (in centimeter) from the sensor to the closest visible surface. § 8 Limitations of Proximity Sensors describes more about the potential limitations, why the precise distance value reported by different devices can be different, due to differences in detection method, sensor construction, etc. Moreover some proximity sensors might be only able to provide just a boolean to indicate if there is a physical object which is near, more like presence detection, than an absolute value for the distance.
2. 例
let %sensor = new ProximitySensor(); %sensor.start(); %sensor.onreading = () => console.log(%sensor.distance); %sensor.onerror = %event => console.log(%event.error.name, %event.error.message);
3. ~security/~privacyの考慮点
近接~sensorは、 ~sensorの近くにある~objの近接性について情報を供する。 したがって、[ `利用者を識別する@~SENSORS#user-identifying$ / `指紋収集する@~SENSORS#device-fingerprinting$ ]攻撃に対し,~privacyに敏感な情報を公開し得る。 ◎ Proximity sensor provides information about closeness of the sensor to nearby objects, thus, may expose privacy sensitive information for user identifying and/or fingerprinting attacks.
これらを軽減するため、 ~UAは,次に挙げる`軽減~策@~SENSORS#mitigation-strategies$のうち一方または両方を利用するベキである — `~sensor読取り$の: ◎ To mitigate these, user agents should use one or both of the following mitigation strategies:
- `正確度を抑制する@~SENSORS#reduce-accuracy$ ◎ reduce accuracy of a sensor reading
- `最大~標本化~frequencyを制限する@~SENSORS#limit-max-frequency$ ◎ limit maximum sampling frequency
これらの軽減~策は、 `汎用~sensor~API^cite `GENERIC-SENSOR$r に定義される`汎用な軽減~策@~SENSORS#mitigation-strategies$を補う。 ◎ These mitigation strategies complement the generic mitigations defined in the Generic Sensor API [GENERIC-SENSOR].
4. 許可~施策の統合
この仕様は、 文字列 `proximity-sensor@pF により識別される`施策により制御される特能$を定義する。 その`既定の許容list$は `'self'^l とする。 ◎ This specification defines a policy-controlled feature identified by the string "proximity-sensor". Its default allowlist is "self".
5. ~model
`~sensor型$ `近接~sensor@i ( `Proximity Sensor^en )には、 次に挙げる~dataが結付けられる: ◎ The Proximity Sensor sensor type has the following associated data:
- `拡張~sensor~interface$ ⇒ `ProximitySensor$I ◎ Extension sensor interface • ProximitySensor
- `~sensor許可~名~群$ ⇒ { `proximity@l } ◎ Sensor permission names • "proximity"
- `~sensor特能~名~群$ ⇒ { `proximity-sensor$pF } ◎ Sensor feature names • "proximity-sensor"
- `許可~revocation~algo$ ⇒ 次を呼出す ⇒ `~sensor許可~revocation~algo$( `proximity$l ) ◎ Permission revocation algorithm • Invoke the generic sensor permission revocation algorithm with "proximity".
- `既定の~sensor$ ⇒ ~deviceの~main近接~検出器 ◎ Default sensor • The device’s main proximity detector.
- `属する~virtual~sensor型$ ⇒ `proximity@vsT ◎ Virtual sensor type • "proximity"
`~sensor型$ `近接~sensor$i の `Sensor$I 用の`最新な読取り~map$は[ `distance^l, `max^l, `near^l ]を`~key$mapとする 3 個の`~entry$mapを含む。 それらの各`値$mapは、[ `距離$, `~max$, `~near$ ]を包含する。 ◎ A latest reading for a Sensor of Proximity Sensor sensor type includes three entries whose keys are "distance", "max", "near" and whose values contain distance, max and near values.
`距離@ は、 `~senseしている範囲@ の中で,~deviceから物体の最も近い可視~面までの距離を表現する値である。 その単位は~centimeter( cm )とする。 ◎ The distance is a value that represents the distance between a device and the closest visible surface of the physical object within the sensing range. Its unit is the centimeter (cm).
`~max@ は、 ~main近接~検出器が`~senseしている範囲$の最大を~centimeter数で表現する値である。 ◎ The max is a value that represents the maximum sensing range of the main proximity detector, in centimeters.
`~near@ は、 ~main近接~検出器の近辺に可視~面が在ることを表現する値である。 ◎ The near is a value that represent the presence of a visible surface in the vicinity of the main proximity detector.
6. ~API
6.1. `ProximitySensor^I ~interface
[`SecureContext$, `Exposed$=Window] interface `ProximitySensor@I : `Sensor$I { `ProximitySensor$mc(optional `SensorOptions$I %sensorOptions ={}); readonly attribute `double$? `distance$m; readonly attribute `double$? `max$m; readonly attribute `boolean$? `near$m; };
`distance@m 取得子~手続きは:
- ~IF[ 物体は`~senseしている範囲$の外側にある ] ⇒ ~RET ~NULL
- ~RET `最新な読取り~mapから値を取得する$( コレ, `distance^l )
`near@m 取得子~手続きは:
- ~IF[ 物体は`~senseしている範囲$の外側にある ] ⇒ ~RET ~NULL
- ~RET `最新な読取り~mapから値を取得する$( コレ, `near^l )
注記: 実装は、 `~near$値を供せない場合,`距離$の値から`~near$値を推定することもできる。 例えば,`距離$が`~max$に等しくない場合【?】、 `~senseしている範囲$内に物体があることを黙示し得る。
◎ 6.1.3. The near attribute ◎ The near attribute of the ProximitySensor interface returns the result of invoking get value from latest reading with this and "near" as arguments. ◎ If the physical object is outside the sensing range, the attribute must return null. ◎ Note: If the implementation is unable to provide the near value, it could infer the near value from the value of distance. For example, if distance is not equal to max, it could imply there is a physical object in the sensing range.7. 抽象-演算
`近接~sensor~objを初期化する@ ときは、 所与の ( %近接~sensor, %~option群 ) に対し: ◎ 7.1. Construct a proximity sensor object
- ~Assert: %近接~sensor は `ProximitySensor$I ~interfaceを実装する ◎ ↓
- ~Assert: %~option群 は `SensorOptions$I 辞書である ◎ input • options, a SensorOptions object. ◎ output • A ProximitySensor object.
- ~IF[ `~sensor施策により制御される特能を検査する$( `近接~sensor$i【!`ProximitySensor$I】 ) ~EQ ~F ] ⇒ ~THROW `SecurityError$E ◎ Let allowed be the result of invoking check sensor policy-controlled features with ProximitySensor. ◎ If allowed is false, then: • Throw a SecurityError DOMException.
- `~sensor~objを初期化する$( %近接~sensor, %~option群 ) ◎ Let proximity_sensor be the new ProximitySensor object. ◎ Invoke initialize a sensor object with proximity_sensor and options. ◎ Return proximity_sensor.
【 原文の この~algoは,新たな~instanceを作成して返しているが、 `WEBIDL$r の`構築子~手続き$の規約に則って,この訳では初期化のみ行うよう改めている。 】
8. 自動化
この節では、 `GENERIC-SENSOR$r に定義される`自動化@~SENSORS#automation$を拡張する — `近接~sensor$i に特有な`~virtual~sensor~metadata$を供することにより。 ◎ This section extends Generic Sensor API § 9 Automation by providing Proximity Sensor-specific virtual sensor metadata.
`型ごとの~virtual~sensor~metadata$を与える`~map$は、 次に挙げる`~entry$mapを伴うモノトスル: ◎ The per-type virtual sensor metadata map must have the following entry:
- `~key$map `proximity$vsT ⇒ 対応する`値$mapを与える`~virtual~sensor~metadata$の ⇒# `読取り構文解析~algo$vsMは `近接の読取りを構文解析する$ ◎ key • "proximity" ◎ value • A virtual sensor metadata whose reading parsing algorithm is the proximity reading parsing algorithm.
8.1.近接の読取りを構文解析する
所与の ( ~JSON `Object$jt %~parameter群 ) に対し,[ `~sensor読取り$/ `undefined^jv ]を返す: ◎ input • parameters, a JSON Object ◎ output • A sensor reading or undefined
- %読取り ~LET 新たな`~sensor読取り$ ◎ Let reading be a new sensor reading.
-
« `distance^l, `max^l » を成す ~EACH( %~key ) に対し: ◎ Let keys be the list « "distance", "max" ». ◎ For each key of keys
- %値 ~LET `一数の読取りを構文解析する$( %~parameter群, %~key ) ◎ Let value be the result of invoking parse single-value number reading with parameters and key.
- ~IF[ %値 ~EQ `undefined^jv ] ⇒ ~RET `undefined^jv ◎ • If value is undefined. •• Return undefined.
- %読取り[ %~key ] ~SET %値[ %~key ] ◎ Set reading[key] to value[key].
- %~near ~LET %~parameter群 から`~propを取得する$( `near^l ) ◎ Let near be the result of invoking get a property from parameters with "near".
- ~IF[ %~near は `Boolean$jt 型でない ] ⇒ ~RET `undefined^jv ◎ • If near’s type is not Boolean •• Return undefined.
- %読取り[ `near^l ] ~SET %~near ◎ Set reading["near"] to near.
- ~RET %読取り ◎ Return reading.
9. 近接~sensorの制限
ほとんどの近接~sensorは, 電磁~放射を検出するので(例:赤外線や磁場)、 ある種の物性は,物体が在ることを~senseする~sensorの能に干渉し得る。 ~sensorに干渉し得るものには、 素材の[ 透明度, 反射度, 色, 温度, 化学組成 ]に加え,物体が~sensorに戻るよう放射を反射している角度すらも含まれる。 そのようなわけで、 距離を測定する手段として,近接~sensorに依拠するベキではない。 近接~sensorから演繹できるのは、 ある程度の確度で[ 物体が[ ~senseしている最小~距離から~senseしている最大~距離まで ]のどこかにあること ]に限られる。 ◎ Since most proximity sensors detect electromagnetic radiation (e.g., an infrared light or a magnetic field), certain material properties can interfere with the sensor’s ability to sense the presence of a physical object. Things that can interfere with a sensor include, but are not limited to, the material’s translucency, reflectiveness, color, temperature, chemical composition, and even the angle at which the physical object is reflecting the radiation back at the sensor. As such, proximity sensors should not be relied on as a means to measure distance. The only thing that can be deduced from a proximity sensor is that a physical object is somewhere in the distance between the minimum sensing distance and the maximum sensing distance with some degree of certainty.
謝辞
`汎用~sensor~API^citeの作業を為され,この仕様に~~意見を寄せられた `Tobie Langel^en 氏に。 初期~原型と, ~test一式を寄せられた `Marcos Caceres^en 氏に。 ◎ Tobie Langel for the work on Generic Sensor API and inputs on this specification. Doug Turner for the initial prototype and Marcos Caceres for the test suite.