近接センサー

W3C作業草案,

この文書の詳細
このバージョン:
https://www.w3.org/TR/2025/WD-proximity-20250212/
最新公開版:
https://www.w3.org/TR/proximity/
編集者草稿:
https://w3c.github.io/proximity/
以前のバージョン:
履歴:
https://www.w3.org/standards/history/proximity/
フィードバック:
public-device-apis@w3.org 件名 “[proximity] … message topic …” (アーカイブ)
GitHub
編集者:
Anssi Kostiainen (Intel Corporation)
Rijubrata Bhaumik (Intel Corporation)
前編集者:
Dzung D Tran (Intel Corporation)
バグ報告:
GitHubのw3c/proximityリポジトリ経由
課題管理:
課題
テストスイート:
GitHub上のweb-platform-tests

要約

本仕様は、物理的接触なしに近くの物体の存在を監視するための具体的なセンサーインターフェースを定義します。

この文書の位置付け

このセクションは、本書が公開された時点での文書の状態について説明します。現在のW3C出版物の一覧および本技術レポートの最新版はW3C技術レポートインデックス https://www.w3.org/TR/で確認できます。

本書はDevices and Sensors Working Groupによって勧告トラックを用いて作業草案として公開されました。本書はW3C勧告となることを意図しています。

この文書にコメントを提供したい場合は、public-device-apis@w3.org (購読, アーカイブ) に送信してください。電子メール送信時は 件名に “proximity” を含めてください。できれば “[proximity] ...コメント要約...” のような形式にしてください。 どんなコメントも歓迎します。

作業草案として公開されていることは、W3Cおよびそのメンバーからの承認を意味しません。本書はドラフトであり、いつでも他の文書によって更新・置換・廃止されることがあります。進行中の作業以外として本書を引用するのは適切ではありません。

本文書はW3C特許ポリシーのもとに作業するグループによって作成されました。 W3Cは、グループの成果物に関連してなされた特許開示の公開リストを管理しています; このページには特許開示の方法も記載されています。 いずれかの特許に必須クレームが含まれると判断した場合、その情報をW3C特許ポリシーセクション6に従い開示しなければなりません。

本書は2023年11月3日W3Cプロセス文書に従って管理されています。

Devices and Sensors Working Groupは、APIのセキュリティおよびプライバシー面で自己レビューと改訂を行い、水平レビューを要求する予定です。既存のセキュリティおよびプライバシーの検討事項が利用可能です。

1. イントロダクション

近接センサーは、デバイスの主要な近接センサーによって検出される近接レベルに関する情報を提供するために、汎用センサーAPI [GENERIC-SENSOR]を拡張します。近接レベルはセンサーから最も近い可視表面までの距離(センチメートル単位)として報告されます。§ 9 近接センサーの制限事項では、検出方法やセンサー構造などの違いにより、異なるデバイスで報告される正確な距離値が異なり得る理由など、潜在的な制限についてさらに説明しています。さらに、一部の近接センサーは距離の絶対値ではなく、近くに物理的な物体があるかどうかを示すブール値のみを提供できる場合があり、これは存在検知に近いものです。

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. セキュリティとプライバシーに関する考慮事項

近接センサーは、センサーが近くの物体とどれだけ近いかに関する情報を提供するため、ユーザー識別フィンガープリント攻撃向けにプライバシーに敏感な情報を露出する可能性があります。

これらに対処するため、ユーザーエージェントは次のいずれかまたは両方の緩和策を用いるべきです:

これらの緩和策は、汎用センサーAPIで定義されている汎用的な緩和策を補完します。[GENERIC-SENSOR]

4. Permissions Policyとの統合

この仕様は、"proximity-sensor" という文字列で識別されるポリシー制御機能を定義します。 その既定の許可リストは "self" です。

5. モデル

近接センサーセンサータイプには、次の関連データがあります:

拡張センサーインターフェース

ProximitySensor

センサー許可名

"proximity"

センサー機能名

"proximity-sensor"

許可の取消しアルゴリズム

Generic Sensor Permission Revocation Algorithmを "proximity" で呼び出す。

デフォルトセンサー

デバイスの主な近接検出器。

仮想センサータイプ

"proximity"

Sensor近接センサーセンサータイプ最新の読み取り値には、キーが "distance", "max", "near" である3つのエントリが含まれ、それぞれのにはdistancemaxnearの値が入ります。

distanceは、デバイスと検知範囲内で最も近い物理的物体の可視表面との距離を表す値です。 単位はセンチメートル(cm)です。

maxは、主な近接検出器の最大検知範囲をセンチメートル単位で表す値です。

nearは、主な近接検出器の近傍に可視表面が存在することを表す値です。

6. API

6.1. ProximitySensor インターフェース

[SecureContext, Exposed=Window]
interface ProximitySensor : Sensor {
  constructor(optional SensorOptions sensorOptions = {});
  readonly attribute double? distance;
  readonly attribute double? max;
  readonly attribute boolean? near;
};

ProximitySensor オブジェクトを構築するには、ユーザーエージェントは近接センサーオブジェクトの構築抽象操作を呼び出さなければなりません。

6.1.1. distance属性

distance 属性は、ProximitySensor インターフェースの属性であり、thisと "distance" を引数に、最新の読み取り値から値を取得を実行した結果を返します。

物理的な物体が検知範囲外にある場合、この属性はnullを返さなければなりません。

6.1.2. max属性

max 属性は、ProximitySensor インターフェースの属性であり、thisと "max" を引数に、最新の読み取り値から値を取得を実行した結果を返します。

6.1.3. near属性

near 属性は、ProximitySensor インターフェースの属性であり、thisと "near" を引数に、最新の読み取り値から値を取得を実行した結果を返します。

物理的な物体が検知範囲外にある場合、この属性はnullを返さなければなりません。

注: 実装がnear値を提供できない場合、distance値からnear値を推論することができます。例えば、distancemaxと等しくない場合、検知範囲に物理的な物体が存在すると推測できます。

7. 抽象操作

7.1. 近接センサーオブジェクトの構築

入力

optionsSensorOptions オブジェクト。

出力

ProximitySensor オブジェクト。

  1. allowedを、センサーポリシー制御機能を確認ProximitySensor を引数に呼び出した結果とする。

  2. allowed が false の場合:

    1. SecurityError DOMException を送出する。

  3. proximity_sensor を新しいProximitySensor オブジェクトとする。

  4. センサーオブジェクトの初期化proximity_sensoroptions で呼び出す。

  5. proximity_sensor を返す。

8. 自動化

このセクションは、Generic Sensor API § 9 Automationを拡張し、近接センサー固有の仮想センサーメタデータを提供します。

タイプごとの仮想センサーメタデータ マップは、次のエントリを持たなければなりません:

キー

"proximity"

仮想センサーメタデータで、その読み取り値パースアルゴリズム近接値パースアルゴリズムとなるもの。

8.1. 近接値パースアルゴリズム

入力

parameters、JSON Object

出力

センサー読み取り値またはundefined

  1. reading を新しいセンサー読み取り値とする。

  2. keysリスト « "distance", "max" »とする。

  3. key について

    1. 単一値数値読み取りパースparameterskeyで呼び出した結果をvalueとする。

      1. valueundefinedの場合、

        1. undefinedを返す。

    2. Set reading[key] to value[key].

  4. プロパティ取得parametersと"near"で呼び出した結果をnearとする。

    1. nearの型がBooleanでない場合

      1. undefinedを返す。

    2. Set reading["near"] to near.

  5. readingを返す。

9. 近接センサーの制限事項

ほとんどの近接センサーは電磁波(例:赤外線や磁場)を検出するため、特定の物質特性がセンサーの検出能力に干渉する場合があります。センサーに干渉し得るものには、素材の半透明性、反射率、色、温度、化学組成、さらには物理物体がセンサーに対して放射を反射する角度などが含まれますが、これらに限定されません。そのため、近接センサーを距離測定手段として頼るべきではありません。近接センサーからわかることは、物理的な物体が最小検知距離と最大検知距離の間のどこかに一定の確度で存在する、ということだけです。

10. 謝辞

Tobie Langel(Generic Sensor APIへの貢献および本仕様への意見)、Doug Turner(初期プロトタイプ)、Marcos Caceres(テストスイート)に感謝します。

11. 適合性

適合性要件は、記述的な主張とRFC 2119の用語を組み合わせて表現されます。「MUST」「MUST NOT」「REQUIRED」「SHALL」「SHALL NOT」「SHOULD」「SHOULD NOT」「RECOMMENDED」「MAY」「OPTIONAL」といったキーワードは、RFC 2119に記載された意味で解釈されます。ただし、本仕様ではこれらの単語はすべて大文字で表記されていません。

本仕様の全テキストは、明示的に非規範的と示されたセクション・例・注記を除き規範的です。[RFC2119]

適合ユーザーエージェントは、ユーザーエージェントに適用可能な本仕様に記載されたすべての要件を実装しなければなりません。

本仕様のIDL断片は、Web IDL仕様書 [WEBIDL]にある適合IDL断片として解釈されなければなりません。

索引

本仕様で定義される用語

参照文献で定義された用語

参考文献

規範参考文献

[ECMASCRIPT]
ECMAScript言語仕様. URL: https://tc39.es/ecma262/multipage/
[GENERIC-SENSOR]
Rick Waldron. 汎用センサーAPI. URL: https://w3c.github.io/sensors/
[INFRA]
Anne van Kesteren; Domenic Denicola. Infra Standard. Living Standard. URL: https://infra.spec.whatwg.org/
[PERMISSIONS]
Marcos Caceres; Mike Taylor. Permissions. URL: https://w3c.github.io/permissions/
[PERMISSIONS-POLICY-1]
Ian Clelland. Permissions Policy. URL: https://w3c.github.io/webappsec-permissions-policy/
[RFC2119]
S. Bradner. RFCで要件レベルを示すためのキーワード. 1997年3月. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[WEBDRIVER2]
Simon Stewart; David Burns. WebDriver. URL: https://w3c.github.io/webdriver/
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL Standard. Living Standard. URL: https://webidl.spec.whatwg.org/

IDL索引

[SecureContext, Exposed=Window]
interface ProximitySensor : Sensor {
  constructor(optional SensorOptions sensorOptions = {});
  readonly attribute double? distance;
  readonly attribute double? max;
  readonly attribute boolean? near;
};