【この訳に特有な表記規約】
◎表記記号1. 序論
`GeolocationSensor$I ~APIは、 `Sensor$I ~interface `GENERIC-SENSOR$r を拡張して,~hostしている~deviceの`地理所在$についての情報を供する。 ◎ The GeolocationSensor API extends the Sensor interface [GENERIC-SENSOR] to provide information about the geolocation of the hosting device.
`GeolocationSensor$I の特能~集合は `地理所在~API^cite `GEOLOCATION-API$r のそれに類似するが、[ `現今の各種~sensor~API@https://www.w3.org/das/roadmap$ にわたって一貫した,現代の~API ]を通して表面化され, `~security/~privacy@~SENSORS#security-and-privacy$ を改善し,`拡張-可能@~SENSORS#extensibility$である。 この~APIは、 既存の`地理所在~API^citeの上層に `~polyfill可能@https://github.com/kenchris/sensor-polyfills/blob/master/src/geolocation-sensor.js$になることを目指す (`例@https://kenchris.github.io/sensor-polyfills/run-geolocation.html$)。 ◎ The feature set of the GeolocationSensor is similar to that of the Geolocation API [GEOLOCATION-API], but it is surfaced through a modern API that is consistent across contemporary sensor APIs, improves security and privacy, and is extensible. The API aims to be polyfillable (example) on top of the existing Geolocation API.
2. 例
毎秒ごとに新たな地理所在~読取りを取得する: ◎ Get a new geolocation reading every second:
const %geo = new GeolocationSensor({ frequency: 1 }); %geo.start(); %geo.onreading = () => console.log(``^緯度: ${%geo.latitude}, 経度: ${%geo.longitude}``^); %geo.onerror = event => console.error(event.error.name, event.error.message);
単発の地理所在~読取りを取得する: ◎ Get a one-shot geolocation reading:
GeolocationSensor.read() .then(%geo => console.log(``^緯度: ${%geo.latitude}, 経度: ${%geo.longitude}``^)) .catch(%error => console.error(%error.name));
3. ~security/~privacyの考慮点
注記: `汎用~sensor~API^cite ( `Generic Sensor API^en ) `GENERIC-SENSOR$r により軽減されない,地理所在に特有な[ ~security/~privacy ]の考慮点を究明して、 地理所在に特有な軽減策を定義する。 ◎ Note: Investigate any geolocation-specific security and privacy considerations that are not mitigated by the Generic Sensor API [GENERIC-SENSOR], and define geolocation-specific mitigations.
4. ~model
用語 `地理所在@ は、 ~hostしている~deviceの現実世界における地理的な所在を指し, 地理-座標 `WGS84$r で表現される。 ◎ The term geolocation refers to the real-world geographic location of the hosting device represented in geographic coordinates [WGS84].
注記: 実装は、 複数の所在~情報~sourceを利用して,`地理所在$情報を獲得できる。 この仕様は、 それらの~sourceについては問わない。 ◎ Note: An implementation can use multiple location information sources to acquire geolocation information, and this specification is agnostic with respect to those sources.
`~sensor型$ `地理所在~sensor@i は:
- `Sensor$I 下位class【`拡張~sensor~interface$】として、 `GeolocationSensor$I が結付けられる。 ◎ The Geolocation Sensor sensor type’s associated Sensor subclass is the GeolocationSensor class.
- その`~sensor許可~名~群$は、 `geolocation^l のみからなる。 ◎ The Geolocation Sensor has an associated PermissionName which is "geolocation".
- `施策により制御される特能$であり,文字列 `geolocation^l により識別される。 その`既定の許容list$は `'self'^l とする。 ◎ The Geolocation Sensor is a policy-controlled feature identified by the string "geolocation". Its default allowlist is 'self'.
- それが`属する~virtual~sensor型$は、 `geolocation@vsT とする。 ◎ The Geolocation Sensor has an associated virtual sensor type which is "geolocation".
`最新な地理所在~読取り@ とは、 `~sensor型$ `地理所在~sensor$i の `Sensor$I 用の`最新な読取り~map$である。 それは、 次に挙げる各~文字列を`~key$mapに伴う`~entry$mapからなり, それらの`値$mapは~deviceの`地理所在$を包含する ⇒# `latitude^l, `longitude^l, `altitude^l, `accuracy^l, `altitudeAccuracy^l, `heading^l, `speed^l ◎ A latest geolocation reading is a latest reading for a Sensor of Geolocation Sensor sensor type. It includes entries whose keys are "latitude", "longitude", "altitude", "accuracy", "altitudeAccuracy", "heading", "speed" and whose values contain the device’s geolocation.
【!注記:】 地球~用の標準~座標系の視覚呈示を追加する。 ◎ Note: Consider adding a visual of the standard coordinate system for the Earth.
5. ~API
この仕様を成す側面のうち,~backgroundな地理所在を~supportすることに触れるものには、 いくつか関係する課題がある。 `課題 #62@https://github.com/w3c/geolocation-sensor/issues/62$ “`Background geofencing^en” は、 ~backgroundな~geofence法を特定的に追跡するために利用される。 ◎ Issue #62 on GitHub: “Background geofencing” ◎ There are a couple of related issues touching on aspects of supporting background geolocation. Let's use this one to track background geofencing specifically.
誰かがこの作業をとり挙げるよう求める場合、 `@mkruisselbrink@https://github.com/mkruisselbrink$ 氏が`提案した~API@https://lists.w3.org/Archives/Public/public-geolocation//2014Sep/0012.html$ (それは、 遡って 2014 年に, `Geolocation WG mailing list^en へ送信された) が開始する場として適理な様に見受けられる。 ◎ For reference, @mkruisselbrink sent a proposed API to the Geolocation WG mailing list back in 2014. That seems like a reasonable place to start if someone wants to pick up this work.
これを書いた時点では、[ ~backgroundな地理所在/~backgroundな~geofence法 ]用の~APIを開発することに関心がある実装者は,居そうにないことに注意。 なので、 この~groupにおいて行われる仕様~作業は,純粋に投機的である。 ◎ Note that at time of writing no implementers appear to be interested in developing an API for background geolocation or geofencing and so any specification work done in this group will be purely speculative.
5.1. `GeolocationSensor^I ~interface
[`SecureContext$,
`Exposed$=(DedicatedWorker, Window)]
interface `GeolocationSensor@I : `Sensor$I {
`GeolocationSensor$mc(optional `GeolocationSensorOptions$I %options = {});
static `Promise$<`GeolocationSensorReading$I> `read$m(optional `ReadOptions$I %readOptions = {});
readonly attribute `unrestricted double$? `latitude$m;
readonly attribute `unrestricted double$? `longitude$m;
readonly attribute `unrestricted double$? `altitude$m;
readonly attribute `unrestricted double$? `accuracy$m;
readonly attribute `unrestricted double$? `altitudeAccuracy$m;
readonly attribute `unrestricted double$? `heading$m;
readonly attribute `unrestricted double$? `speed$m;
};
dictionary `GeolocationSensorOptions@I : `SensorOptions$I {
/*
`GeolocationSensor^I に特有な~option群の保持場
◎
placeholder for GeolocationSensor-specific options
*/
};
dictionary `ReadOptions@I : `GeolocationSensorOptions$I {
`AbortSignal$I? `signal@mb;
};
dictionary `GeolocationSensorReading@I {
`DOMHighResTimeStamp$I? `timestamp@mR;
`double$? `latitude@mR;
`double$? `longitude@mR;
`double$? `altitude@mR;
`double$? `accuracy@mR;
`double$? `altitudeAccuracy@mR;
`double$? `heading@mR;
`double$? `speed@mR;
};
注記: `地理所在~API^citeの `Coordinates$I ~interfaceに対する規範的な変更点は: ◎ Normative changes to the Coordinates interface of the Geolocation API are the following:
- [ `NaN^jv, `+Infinity^jv / `-Infinity^jv ]に対し `TypeError^E を投出しないよう `unrestricted double$c を利用する。 (`地理所在~API^citeは、 `heading$c 用に `NaN^jv を妥当な値として定義するが,まだその型として `double^c を利用している。) ◎ Use unrestricted double to not throw TypeError on NaN, +Infinity or −Infinity. (Geolocation API defines NaN as a valid value for heading, yet uses double as its type.)
- すべての属性は、既定で ~NULL になるのを許容するため,`~nullable$を利用する( `地理所在~API^citeは、これらの属性に~accessする同期的な手段を供さない — したがって,[ `latitude^m, `longitude^m, `altitude^m(緯度, 経度, 高度) ]は ~nullableでなく, “すべての実装は~supportするモノトスル” とされていた)。 【代わりに,~UAは、当の属性が 自身が~supportできない~sensor~optionを表現している場合, ~NULL をあてがう(`と思われる@~SENSORS#supported-sensor-options$)。】 ◎ Use nullable to allow all attributes to default to null. (Geolocation API does not provide synchronous means to access these attributes, thus latitude, longitude, and altitude are not nullable and "must be supported by all implementations".)
`read(options)@m ~method~手続きは: ◎ 5.1.1. GeolocationSensor.read() ◎ The read() method, when called, must run the following algorithm: ◎ input • options, a ReadOptions object. ◎ output • p, a promise.
- %p ~LET 新たな~promise ◎ Let p be a new promise. ◎ Let options be the first argument.
- %通達 ~LET %options[ "`signal$mb" ] ◎ Let signal be the options’ dictionary member of the same name if present, or null otherwise.
- ~IF[ %通達 ~NEQ ~NULL ]~AND[ %通達 は`中止-済み$aBである ] ⇒# %通達 の`中止-事由$aB で %p を却下する; ~RET %p ◎ If signal is aborted, then reject p with signal’s abort reason and return p.
- %geo ~LET 新たな `GeolocationSensor$I ~obj ◎ ↓
- `地理所在~sensor~objを初期化する$( %geo, %options ) ⇒ 例外が投出されたときは、~catchして ⇒# その例外 で %p を却下する; ~RET %p ◎ Let geo be the result of invoking construct a Geolocation Sensor object with options. If this throws a DOMException, catch it, reject p with that DOMException, and return p.
- %geo 上の `start$m ~method手続き() ◎ Invoke geo.start().
-
~IF[ %通達 ~NEQ ~NULL ]: ◎ If signal is not null,\
-
`通達に~algoを追加する$( %通達, 次を走らす手続き ): ◎ then add the following abort steps to signal:
- %geo 上の `stop$m ~method手続き() ◎ Invoke geo.stop().
- %通達 の`中止-事由$aB で %p を却下する ◎ Reject p with signal’s abort reason and abort these steps.
-
-
この段は`並列的$に走らす: 【上で呼出した `start$m ~method手続きの中で非同期に】 ◎ Run these steps in parallel:
- `~errorを通知する$( %geo, %例外 ) が呼出されたときは ⇒# %geo 上の `stop$m ~method手続き(); %例外 で %p を却下する ◎ If notify error is invoked with geo, invoke geo.stop(), and reject p with the DOMException passed as input to notify error.
- `新たな読取りを通知する$( %geo ) が呼出されたときは ⇒ `地理所在~promiseを解決する$( %geo, %p ) ◎ If notify new reading is invoked with geo, then resolve a geolocation promise with geo and p.
- ~RET %p ◎ Return p.
注記: 実装は、 `read()$m に対する複数の同時並行な~callに対し — 同じ閲覧~文脈の中で,かつ 同じ引数が渡されたならば — 同じ~promiseを再利用できる。 ◎ Implementations can reuse the same promise for multiple concurrent calls within the same browsing context if the arguments passed to read() are the same.
上で `地理所在~promiseを解決する@ ときは、次の手続きを走らす: ◎ To resolve a geolocation promise means to run the following steps:
- %読取り ~LET 新たな `GeolocationSensorReading$I ◎ Let reading be a GeolocationSensorReading.
- `最新な地理所在~読取り$を成す ~EACH( %~key → %値 ) に対し ⇒ %読取り[ %~key ] ~SET %値 ◎ For each key → value of latest geolocation reading: • Set reading[key] to value.
- %geo 上の `stop$m ~method手続き() ◎ Invoke geo.stop().
- %読取り で %p を解決する ◎ Resolve p with reading.
`latitude@m 取得子~手続きは ⇒ ~RET `最新な読取り~mapから値を取得する$( コレ, `latitude^l ) ◎ 5.1.2. GeolocationSensor.latitude ◎ The latitude attribute of the GeolocationSensor interface returns the result of invoking get value from latest reading with this and "latitude" as arguments. \
結果は、`地理所在$の緯度~座標を `decimal degrees$en† で表現する。 `WGS84$r 【†すなわち、小数部は “分/秒” ~~単位を`表すものではない^em。】 ◎ It represents the latitude coordinate of the geolocation in decimal degrees [WGS84].
`longitude@m 取得子~手続きは ⇒ ~RET `最新な読取り~mapから値を取得する$( コレ, `longitude^l ) ◎ 5.1.3. GeolocationSensor.longitude ◎ The longitude attribute of the GeolocationSensor interface returns the result of invoking get value from latest reading with this and "longitude" as arguments.\
結果は、 `decimal degrees$en による`地理所在$の経度~座標を表現する。 `WGS84$r ◎ It represents the longitude coordinate of the geolocation in decimal degrees [WGS84].
`altitude@m 取得子~手続きは ⇒ ~RET `最新な読取り~mapから値を取得する$( コレ, `altitude^l ) ◎ 5.1.4. GeolocationSensor.altitude ◎ The altitude attribute of the GeolocationSensor interface returns the result of invoking get value from latest reading with this and "altitude" as arguments.\
結果は、`地理所在$を `WGS84$r 楕円体から~~天への~meter数で表現する。 ◎ It represents the geolocation in meters above the WGS 84 ellipsoid [WGS84].
`accuracy@m 取得子~手続きは:
- ~IF[ コレ上の `latitude$m 取得子~手続き() ~EQ ~NULL ]~OR[ コレ上の `longitude$m 取得子~手続き() ~EQ ~NULL ] ⇒ ~RET ~NULL
- ~RET `最新な読取り~mapから値を取得する$( コレ, `accuracy^l )
結果は、現在の[ `latitude$m / `longitude$m ]の正確度【誤差】を~meter数で表現する — 正確度の確度~levelは 95% とする【誤差の誤差は 5% あってもよい】。
◎ 5.1.5. GeolocationSensor.accuracy ◎ The accuracy attribute of the GeolocationSensor interface returns the result of invoking get value from latest reading with this and "accuracy" as arguments.\ It represents the accuracy of the latest reading["latitude"] value and latest reading["longitude"] value in meters with a 95% confidence level. ◎ If the latest reading["latitude"] value is null or latest reading["longitude"] value is null, it must return null.`altitudeAccuracy@m 取得子~手続きは:
- ~IF[ コレ上の `altitude$m 取得子~手続き() ~EQ ~NULL ] ⇒ ~RET ~NULL
- ~RET `最新な読取り~mapから値を取得する$( コレ, `altitudeAccuracy^l )
結果は、現在の `altitude$m の正確度【誤差】を~meter数で表現する — 正確度の確度~levelは 95% とする【誤差の誤差は 5% あってもよい】。
◎ 5.1.6. GeolocationSensor.altitudeAccuracy ◎ The altitudeAccuracy attribute of the GeolocationSensor interface returns the result of invoking get value from latest reading with this and "altitudeAccuracy" as arguments.\ It represents the accuracy of the latest reading["altitude"] value in meters with a 95% confidence level. ◎ If the latest reading["altitude"] value is null, it must return null.`heading@m 取得子~手続きは ⇒ ~RET `最新な読取り~mapから値を取得する$( コレ, `heading^l ) ◎ 5.1.7. GeolocationSensor.heading ◎ The heading attribute of the GeolocationSensor interface returns the result of invoking get value from latest reading with this and "heading" as arguments.\
結果は、~deviceの進行方向を~degree数で表現する — 真北から時計回りに, 0 以上 360 以下の範囲で。 ◎ It represents the direction of travel in degrees counting clockwise relative to the true north in the range 0 ≤ heading ≤ 360.
`speed@m 取得子~手続きは ⇒ ~RET `最新な読取り~mapから値を取得する$( コレ, `speed^l ) ◎ 5.1.8. GeolocationSensor.speed ◎ The speed attribute of the GeolocationSensor interface returns the result of invoking get value from latest reading with this and "speed" as arguments.\
結果は、速度の水平~成分の~magnitudeを[ 秒あたりの~meter数 ]で表現する。 ◎ It represents the magnitude of the horizontal component of the velocity in meters per second.
6. 抽象-演算
`地理所在~sensor~objを初期化する@ ときは、所与の ( %geo, %~option群 ) に対し: ◎ 6.1. Construct a geolocation sensor object
- ~Assert: %geo は `GeolocationSensor$I ~interfaceを実装する ◎ ↓
- ~Assert: %~option群 は `GeolocationSensorOptions$I 辞書である ◎ input • options, a GeolocationSensorOptions object. ◎ output • A GeolocationSensor object.
- ~IF[ `~sensor施策により制御される特能を検査する$( `地理所在~sensor$i【!`GeolocationSensor$I】 ) ~EQ ~F ] ⇒ ~THROW `SecurityError$E ◎ Let allowed be the result of invoking check sensor policy-controlled features with GeolocationSensor. ◎ If allowed is false, then: • Throw a SecurityError DOMException.
- `~sensor~objを初期化する$( %geo, %~option群 ) ◎ Let geo be the new GeolocationSensor object. ◎ Invoke initialize a sensor object with geo and options. ◎ Return geo.
【 原文の この~algoは,新たな~instanceを作成して返しているが、 `WEBIDL$r の`構築子~手続き$の規約に則って,この訳では初期化のみ行うよう改めている。 】
7. 自動化
この節では、 `GENERIC-SENSOR$r に定義される`自動化@~SENSORS#automation$を拡張する — `地理所在~sensor$i に特有な`~virtual~sensor~metadata$を供することにより。 ◎ This section extends Generic Sensor API § 9 Automation by providing Geolocation 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 `geolocation$vsT ⇒ 対応する`値$mapを与える`~virtual~sensor~metadata$の ⇒# `読取り構文解析~algo$vsMは `地理所在の読取りを構文解析する$ ◎ key • "geolocation" ◎ value • A virtual sensor metadata whose reading parsing algorithm is the geolocation reading parsing algorithm.
7.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.
-
« `latitude^l, `longitude^l, `altitude^l, `accuracy^l, `altitudeAccuracy^l, `heading^l, `speed^l » を成す ~EACH( %~key ) に対し ◎ Let keys be the list « "latitude", "longitude", "altitude", "accuracy", "altitudeAccuracy", "heading", "speed" ». ◎ 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].
- ~RET %読取り ◎ Return reading.
8. 利用事例
8.1. 利用事例の分類法
以下で言及される利用事例は、概ね,次の 4 分類に~group化できる: ◎ The mentioned use cases can roughly be grouped into four categories:
-
`~foreground^stgな演算: ◎ Foreground operations:
- `地理所在の更新を単発的^stgに取得する ◎ Getting a one-off geolocation update.
- `地理所在の更新を継続的に^stg取得する(`いわゆる^em ~foreground~geotrack法) 【 “地理所在の追跡” 】 ◎ Getting continuous geolocation updates (aka. foreground geotracking).
-
`~background^stgな演算: ◎ Background operations:
- `地理所在の更新を継続的^stgに取得する(`いわゆる^em ~background~geotrack法) ◎ Getting continuous geolocation updates (aka. background geotracking).
- `~geofence~alertを単発的^stgに取得する(`いわゆる^em ~background~geofence法) 【~geofence( “地理柵” )は `geolocation fence^en ( “地理所在を囲う~~仮想の柵” )の略称。】 ◎ Getting a one-off geolocation fence alert (aka. background geofencing).
注記: `GEOLOCATION-API$r でアリであったのは、`~foreground演算^stgに限られていた。 `~background演算^stgは、完全に新規である。 ◎ Note: Only the foreground operations were possible with [GEOLOCATION-API], the background operations are completely novel.
地理所在を得するときの中核的な拘束は、`正確度^stg( `決定された位置は利用者の実際の位置にどれだけ近いか^em )と`待時間^stg( `利用者は結果をどこまで長く待機したいと求めるか^em )にあり,一方は他方の引換えになる — より速く結果を得たければ,正確度は下がり、その逆も同様になる。 ◎ Core constraints when obtaining the gelocation are accuracy (how close to the actual position of the user is the determined position) and latency (how long does the user want to wait for a result). Both are tradeoffs: one can trade faster results for lower accuracy and vice versa.
共通的な~~流れでは、まず大まかな見積もりを得してから,時間~越しに精緻化する — 例えば、初期~時には周囲の~WiFi信号に基づいて(速く得られる),最終的には精確な~GPS~dataに基づく(信号を見出すまで多少時間をとる)など。 ◎ A common theme is to first obtain a rough estimation that then gets refined over time, for example based initially on surrounding WiFi signals (which is fast to obtain) and then eventually based on precise GPS data (which may take some time to find a signal).
以上で定義した分類に基づく利用事例を以下に挙げる。 ◎ In the following, we list use cases based on the previously defined categories.
注記: これらの分類は、排他的ではなく,重合するものもある。 ある~taskは、~foregroundで開始して,~backgroundに継続してから(例えば,利用者が~~着信した~emailに素早く応答する間),最終的に利用者~multitaskから戻ったとき~foregroundで終了する。 ◎ Note: The categories are not mutually exclusive and overlaps exist. A task might start in the foreground, then continue in the background (for example, while the user quickly responds to an incoming email), and then eventually terminate in the foreground when the user multitasks back.
8.2. ~foreground — 単発的な地理所在の更新
8.2.1. 利用者の所在を地図~上に示す
地図用~appは、利用者の地理所在~sensor~APIの~dataを利用して,利用者の所在を地図~上に示せる — 要は “自分は,今どこに居るか?” の問いに応答する。 ◎ A mapping application can use the Geolocation Sensor API data of a user to locate them on the map, essentially responding to the question "Where am I right now?"
8.2.2. 利用者の区域~内で関心地点を見出す
外国の都市を訪問している誰かは、[ 観光客~向け~attractionの~databaseを探索したり閲覧する ]ことを利用者に許容する~web~appに~accessすることもある。 ~web~appは、地理所在~sensor~APIを利用して,近似的な[ 利用者の現在の位置 ]への~accessを得ることで、利用者の所在からの近接度により探索-結果を~rank付け可能になる。 ◎ Someone visiting a foreign city could access a web application that allows users to search or browse through a database of tourist attractions. Using the Geolocation Sensor API, the web application has access to the user’s approximate current position and is therefore able to rank the search results by proximity to the user’s location.
8.3. ~foreground — 継続的な地理所在の更新
8.3.1. ~~最新の地域-情報
[ 利用者の現在の区域に関連な天気や~newsを示す,~widget ]の様な~web~appは、地理所在~sensor~APIを利用して,所在の更新-用に登録できる。 ~widgetは、利用者~位置の変化に応じて,内容を順応できる。 ◎ A widget-like web application that shows the weather or news that are relevant to the user’s current area can use the Geolocation Sensor API to register for location updates. If the user’s position changes, the widget can adapt the content accordingly.
8.3.2. 関心地点が利用者の近辺にあるとき~alertする
観光~guide~web~appは、地理所在~sensor~APIを利用して,利用者の位置を監視して、近辺に興味を引く場所があるとき,視覚-や音声による通知を誘発できる。 ~online~task管理~systemは、利用者が ある種の~taskに結付けられた~landmarkに近付いたとき,~reminderを誘発できる。 この利用事例は、~appは~foregroundで作動中にある用法と見做す。 ◎ A tour guide web application can use the Geolocation Sensor API to monitor the user’s position and trigger visual or audio notifications when interesting places are in the vicinity. An online task management system can trigger reminders when the user is in the proximity of landmarks that are associated with certain tasks. This use case assumes active usage of the application in the foreground.
8.3.3. 利用者の位置を地図~上に示す
道に迷った利用者は、自身の位置を確かめたく,携帯~deviceを利用して[ 地理所在~sensor~APIを利用して地図~上で利用者の正確な所在を~~特定できる,地図用~web~app ]を~navigateする。 利用者は、現在の位置から欲する行先へ運転する方向を供するよう~web~appに依頼する — 要は, “自分はどこへ向かっているか?” の問いに応答する。 ◎ A user finds themselves in an unfamiliar area. They want to check their position so they use their handheld device to navigate to a web-based mapping application that can pinpoint their exact location on the map using the Geolocation Sensor API. They then ask the web application to provide driving directions from their current position to their desired destination, essentially responding to the question "Where am I going?".
8.4. ~background — 継続的な地理所在の更新
8.4.3. ~sports活動の追跡
~web~appは、利用者の~sports活動を追跡できる — 例:~marathon-runや自転車~race。 したがって~appは、~screen上にある必要はないが,利用者が — 携帯~deviceを腕に巻付けるなどして — 活動を遂行する間は~backgroundにあることになる。 ◎ A web application can track a user’s sports activity, for example, a marathon run or a bicycle race. Therefore, the application does not need to be on the screen, but would be backgrounded while the user performs their activity, maybe with their handheld device strapped to their arm.
8.4.4. 不動産~探索
携帯~device上の~web~appは、利用者が通りがかった近所で,関心がある~propについて以前に指定した探索-判定基準 — 例:~balcony付きで, 寝室が 3 つある住居 — に合うものがあれば,利用者に通知できる。 これは、合致するものが膨大にあり得る — すなわち、要求される~geofenceの量が多過ぎるため,~geofenceでは実現不可能である — という前提に基づいている。 ◎ A web application on a handheld device can notify a user of interesting available properties in a neighborhood they are passing by where the property fits the user’s previously specified search criteria, for example, 3 bedroom apartments with balcony. This is based on the assumption that the number of possible matches is high, that is, impossible to realize with geofences as the amount of required geofences would be too high.
8.4.5. 文化的~空間
美術館, 祭り, 見本市, 等々の様な文化的~空間においては、~web~appは,利用者がどこに居て何を見ているかに反応して,異なる体験や内容を合図できる ◎ In cultural spaces like museums, festivals, exhibitions, etc., web applications can react to where the user is or what they are seeing to cue different experiences and content.
8.5. ~background — 単発的な~geofence~alert
8.5.1. `reminder and to-do^en ~app
ヤルコトをオモイダス ~web~appは、~geofenceを利用して,利用者がやるべき何かを — 例えば、 ~supermarketに通りがかったなら,牛乳を買うよう — 促すことができる。 ◎ Reminder and to-do web applications can use a geofence to remind the user to do something when they cross it, for example, to buy milk when they are near the supermarket.
8.5.2. 旅行~app
旅行~appは、~geofence境界の中に限り,利用者の[ ~WiFi~password, ~booking確認, 等々 ]の様な,開催地に特有な~dataを示せる。 ◎ Travel applications can show venue specific data like WiFi passwords, the user’s booking confirmation etc. only within geofence boundaries.
8.5.3. ~booking確認
~booking~appは、利用者が[ ~concertや~sports~eventの開催地に近づいた,~rental-car-counterに到着した, 等々 ]したなら,~QR~codeや~bar~codeで~ticket通知を持出せる。 ◎ Ticketing or booking applications can bring up a ticket notification with a QR or bar code once the user is near the venue of a concert or sports event or when they reach their rental car counter or similar.
8.5.5. 小売~特別~提供品
携帯~deviceに,利用者の同意の下で~installされた小売店の~web~appは、利用者の所在に基づいて,店舗の近辺に来たとき割引券を特別~提供することについて~alertできる。 店内の体験を更に豊かにすることもできる — 例えば,小売店は、利用者が探していた何かが実際に~~入荷して,近くで持ち帰れることを知ってもらうこともできる。 ◎ Given their previous consent, a user with a retailer’s web application installed on their handheld device can be alerted about special offers or location-based coupons when they are in vicinity of a physical presence of the retailer. Further, the in-store experience can be enriched, for example, the retailer can let the user know something they have looked at before is actually available for pick up nearby.
謝辞
`汎用~sensor~API^cite, 早期の geolocation.js ~polyfillの作業を為された `Tobie Langel^en 氏に。 ◎ Thanks to Tobie Langel for the work on Generic Sensor API and the early geolocation.js polyfill.
geolocation-sensor.js ~polyfillと揺籃期における 設計~提案を為された `Kenneth Rohde Christiansen^en 氏に。 ◎ Thanks to Kenneth Rohde Christiansen for the geolocation-sensor.js polyfill and design proposals during the incubation phase.
Geolocation ~WGによる 2008 年 〜 2017 年までの`地理所在~API^citeの作業の参加者たちに特別な謝意を。 ◎ Special thanks to the Geolocation Working Group participants for their work on the Geolocation API from 2008 until 2017.