近接センサー

W3C 作業草案,

この文書についての詳細
このバージョン:
https://www.w3.org/TR/2026/WD-proximity-20260514/
最新公開バージョン:
https://www.w3.org/TR/proximity/
編集者草案:
https://w3c.github.io/proximity/
以前のバージョン:
履歴:
https://www.w3.org/standards/history/proximity/
フィードバック:
public-device-apis@w3.org 件名行を「[proximity] … メッセージのトピック …」にして送信 (アーカイブ)
GitHub
編集者:
Anssi Kostiainen (Intel Corporation)
Rijubrata Bhaumik (Intel Corporation)
元編集者:
Dzung D Tran (Intel Corporation)
バグ報告:
GitHub 上の w3c/proximity リポジトリ 経由
課題追跡:
課題
テストスイート:
GitHub 上の web-platform-tests

概要

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

この文書のステータス

この節は、公開時点におけるこの文書のステータスを説明する。 現在の W3C 公開文書およびこの技術報告の最新改訂版の一覧は、 W3C 技術報告 インデックスで見つけることができる。

この文書は、 Devices and Sensors Working Group により、 Recommendation track を用いた作業草案として公開された。この文書は W3C 勧告となることを意図している。

この文書についてコメントしたい場合は、 public-device-apis@w3.org (購読, アーカイブ) へ送信すること。 メールを送信する際は、 件名に “proximity” というテキストを含め、 できれば次のようにすること: “[proximity] …コメントの要約…”。 すべてのコメントを歓迎する。

作業草案としての公開は、 W3C およびそのメンバーによる承認を意味しない。この文書は草案であり、 いつでも他の文書により更新、置換、または 廃止される可能性がある。この文書を進行中の作業以外のものとして引用することは不適切である。

この文書は、 W3C Patent Policy の下で運営されるグループにより作成された。 W3C は、グループの成果物に関連して行われた 特許開示の公開リスト を管理しており、 そのページには特許を開示するための指示も含まれている。 自身が Essential Claim(s) を含むと信じる特許について実際の知識を持つ個人は、Essential Claim(s) に関する情報を、W3C Patent Policy の第 6 節に従って開示しなければならない。

この文書は、2025年8月18日 W3C Process Document に従う。

この仕様は、いかなるブラウザーエンジンにも実装されていない。現在の形式では W3C 勧告へ進むことは見込まれていない。

Devices and Sensors Working Group は、水平レビューを依頼する前に、 API のセキュリティおよびプライバシー面について自己レビューと 改訂を一巡行う予定である。既存のセキュリティ およびプライバシーの課題が利用可能である。

1. 序論

Proximity Sensor は Generic Sensor 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. セキュリティおよびプライバシーの考慮事項

近接センサーは、センサーと近くのオブジェクトとの近さに関する情報を提供する。 したがって、ユーザー識別 および/または フィンガープリンティング攻撃のための、プライバシー上機微な情報を露出する可能性がある。

これらを軽減するため、ユーザーエージェントは、次の軽減 戦略の一方または両方を使用するべきである:

これらの軽減戦略は、Generic Sensor API [GENERIC-SENSOR] で定義される 一般的な 軽減策 を補完する。

4. Permissions Policy 統合

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

5. モデル

Proximity Sensor センサー型は、次の関連データを持つ:

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

ProximitySensor

センサー権限名

"proximity"

センサー機能名

"proximity-sensor"

権限失効アルゴリズム

"proximity" を用いて 汎用センサー権限失効 アルゴリズムを呼び出す。

既定のセンサー

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

仮想センサー型

"proximity"

Proximity Sensor センサー型Sensor に対する最新の読み取り値は、"distance"、"max"、"near" である キーを持ち、かつ distancemax、および near 値を含む を持つ、3 つの エントリを含む。

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 値を提供できない場合、 near 値を distance の値から推定できる。 たとえば、distancemax と等しくない場合、それは 検知範囲内に物理オブジェクトが存在することを意味し得る。

7. 抽象操作

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

入力

optionsSensorOptions オブジェクト。

出力

ProximitySensor オブジェクト。

  1. ProximitySensor を用いて センサーポリシー制御 機能をチェックするを呼び出した結果を allowed とする。

  2. allowed が false なら、次を実行する:

    1. SecurityError DOMException投げる

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

  4. proximity_sensor および options を用いて センサーオブジェクトを初期化するを呼び出す。

  5. proximity_sensor を返す。

8. 自動化

この節は、Generic Sensor API § 9 Automation を拡張し、Proximity Sensor 固有の仮想センサーメタデータを提供する。

型ごとの仮想センサーメタデータ マップ は、次のエントリを持たなければならない:

キー

"proximity"

仮想センサーメタデータであって、その 読み取り値解析アルゴリズム近接読み取り値解析アルゴリズムであるもの。

8.1. 近接読み取り値解析アルゴリズム

入力

parameters、JSON Object

出力

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

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

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

  3. keys の各 key について、反復する

    1. parameters および key を用いて 単一値数値読み取り値を解析する を呼び出した結果を value とする。

      1. valueundefined なら。

        1. undefined を返す。

    2. reading[key] を value[key] に 設定する

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

    1. near の型が Boolean でないなら

      1. undefined を返す。

    2. reading["near"] を near設定する

  5. reading を返す。

9. 近接センサーの制限

ほとんどの近接センサーは電磁放射 (例: 赤外線 または磁場) を検出するため、特定の材料特性が、物理オブジェクトの存在を検知する センサーの能力を妨げる可能性がある。センサーを妨げる可能性があるものには、 材料の半透明性、反射性、色、温度、化学組成、さらには物理オブジェクトが 放射をセンサーへ反射して戻す角度などが含まれるが、これらに限定されない。 したがって、近接センサーを距離を測定する手段として信頼するべきではない。 近接センサーから推論できる唯一のことは、ある程度の確実性をもって、 物理オブジェクトが最小検知距離と最大検知距離の間のどこかに存在するということである。

10. 謝辞

Generic Sensor API に関する作業およびこの仕様への入力について Tobie Langel に感謝する。 初期プロトタイプについて Doug Turner に、 テストスイートについて Marcos Caceres に感謝する。

11. 適合性

適合性要件は、記述的な表明と RFC 2119 用語の組み合わせで表現される。この文書の規範部分における キーワード "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" は、 RFC 2119 で説明されるように解釈されるものとする。 ただし、読みやすさのため、これらの語はこの仕様では すべて大文字では現れない。

この仕様のすべてのテキストは、非規範として明示的に示された節、 例、および注を除き、規範的である。 [RFC2119]

適合ユーザー エージェントは、ユーザーエージェントに適用される、この仕様に列挙された すべての要件を実装しなければならない。

この仕様の IDL 断片は、Web IDL 仕様で説明される適合 IDL 断片に要求されるものとして 解釈されなければならない。 [WEBIDL]

索引

この仕様で定義される用語

参照により定義される用語

参照文献

規範参照

[ECMASCRIPT]
ECMAScript Language Specification. URL: https://tc39.es/ecma262/multipage/
[GENERIC-SENSOR]
Rick Waldron. Generic Sensor 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. Key words for use in RFCs to Indicate Requirement Levels. March 1997. 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;
};