W3C

High Resolution Time — 高精度計時

2012 年 12 月 17 日付 W3C 勧告

このバージョン:
http://www.w3.org/TR/2012/REC-hr-time-20121217/
最新バージョン:
http://www.w3.org/TR/hr-time/
以前のバージョン:
http://www.w3.org/TR/2012/PR-hr-time-20121023/
編集:
Jatinder Mann, Microsoft Corp., <>
Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.

公式の修正が含まれ得る,この文書の 正誤表 も参照願います。 Please refer to the errata for this document, which may include some normative corrections.

翻訳 もご覧ください。 See also translations.

要約

この仕様は、サブミリ秒の精度の,システムクロックのスキュー/調整の対象にならない,現在時刻を供する JavaScript インタフェースを規定する。 【サブミリ秒の精度( sub-millisecond resolution ):ミリ秒より(少なくとも一桁は)小さい単位の時間分解能を表す,この仕様を通して概念的に用いられる語であるが、具体的にはマイクロ秒の精度が念頭に置かれている。】【スキュー(クロックスキュー, clock skew ):概念的には、システムやネットワーク( NTP )など,外部に起因する時刻同期のずれを指すと思われる。】 This specification defines a JavaScript interface that provides the current time in sub-millisecond resolution and such that it is not subject to system clock skew or adjustments.

この文書の位置付け

この節では、発行時点における… 【 以下、この節の内容の一部は W3C 日本語訳 共通ページ に委譲 】

これは W3C 勧告( Recommendation ) "High Resolution Time Specification" です。 勧告候補の段階で 2012 年に作成された, High Resolution Time テストスイート に基づく 実装報告書 が入手できます。 This is the W3C Recommendation for "High Resolution Time Specification". An implementation report, produced during the Candidate Recommendation phase in 2012, is available based on the High Resolution Time test suite.

コメントがあれば、件名の先頭に [HighResolutionTime] と記した上で public-web-perf@w3.org (archived) 宛まで送られるよう願います。 Please send comments to public-web-perf@w3.org (archived) with [HighResolutionTime] at the start of the subject line.

勧告候補の期間にこの仕様に加えられた変更点はありません。 No changes were done to this specification during the Proposed Recommendation period.

この文書は Web Performance Working Group により制作されました。 This document is produced by the Web Performance Working Group.

1. 序論

この節は規定ではない。 This section is non-normative.

ECMAScript 言語仕様 は、 1970 年 1 月 1 日 UTC から経過したミリ秒単位の時間を表現する時刻値として, Date オブジェクトを定義する。 ほとんどの目的においては、この,ミリ秒単位の値で 1970 年 1 月 1 日 UTC から約 28 万 5616 年間の,どの時刻も表現し得る定義で十分である。 DOMTimeStamp も同様に定義されている。 The ECMAScript Language Specification defines the Date object as a time value representing time in milliseconds since 01 January, 1970 UTC. For most purposes, this definition of time is sufficient as these values represent time to millisecond precision for any instant that is within approximately 285,616 years from 01 January, 1970 UTC. The DOMTimeStamp is defined similarly.

実施上,これらの定義による時刻は、システムクロックのクロックスキューと調整のいずれの対象にもなる。 時刻値は常に単調増加するとは限らず,後続の値が減少, もしくはそのまま変わらないこともある。 In practice, these definitions of time are subject to both clock skew and adjustment of the system clock. The value of time may not always be monotonically increasing and subsequent values may either decrease or remain the same.

例えば,次のスクリプトは、正の値, 負の値, ゼロを出力し得る。 For example, the following script may log a positive number, negative number, or zero.

var mark_start = Date.now();
doTask(); // Some task
if (window.console) {
   window.console.log('Duration of task: ' + (Date.now() - mark_start));
}

ある種のタスクでは、この定義による時刻では,サブミリ秒の解像度はなく, システムクロックスキューの対象になるので、不十分になる。 例えば, For certain tasks this definition of time may not be sufficient as it does not allow for sub-millisecond resolution and is subject to system clock skew. For example,

この仕様は Date.now() のふるまいの変更を提案するものではない。 それは、暦における現在の時刻値を決定する点においては純粋に有用であり,長い利用の歴史がある。 サブミリ秒の精度で単調増加する時刻値を供する DOMHighResTimeStamp 型と Performance インタフェースの now メソッドが、この節に要約された課題を解決するものになる。 This specification does not propose changing the behavior of Date.now() as it is genuinely useful in determining the current value of the calendar time and has a long history of usage. The DOMHighResTimeStamp type and the now method of the Performance interface resolve the issues summarized in this section by providing a monotonically increasing time value in sub-millisecond resolution.

2. 適合性の要件

【 この節の内容は W3C 日本語訳 共通ページ に委譲 】

3. 語法

【 この節の内容は W3C 日本語訳 共通ページ に委譲 】

4. High Resolution Time — 高精度計時

4.1. 概要

この節は規定ではない。 This section is non-normative.

この仕様は、システムクロックのスキューや調整の対象にならない,サブミリ秒の精度による現在時刻を供するインタフェースを定める。 This specification defines an interface that provides the current time in sub-millisecond resolution and such that it is not subject to system clock skew or adjustments.

4.2. DOMHighResTimeStamp

DOMHighResTimeStamp 型は、[ PerformanceTiming インタフェースの navigationStart 属性 [NavigationTiming] — すなわち 文書のナビゲーションの開始時から相対的に計測された時刻値 ], あるいは[ 2つの DOMHighResTimeStamp の間の時間差を表現する時刻値 ]の記録に利用されるものである。 正誤表 による修正 — 次の注記も同様 】 The DOMHighResTimeStamp type is used to store a time value measured relative to the navigationStart attribute of the PerformanceTiming interface [NavigationTiming], the start of navigation of the document, or a time value that represents a duration between two DOMHighResTimeStamps.

注記: DOMHighResTimeStamp 型の属性による,文書のナビゲーション開始の時刻値は 0 に等しい。 DOMTimeStamp 型による同じ時刻値は、 PerformanceTiming インタフェースの navigationStart 属性 [NavigationTiming] によるものに等しい。 The time value of the start of navigation of the document in an attribute of type DOMHighResTimeStamp is equal to 0. The same time value described with an attribute of type DOMTimeStamp is equal to the navigationStart attribute of the PerformanceTiming interface [NavigationTiming].

typedef double DOMHighResTimeStamp;

DOMHighResTimeStamp は、ミリ秒単位の数をミリ秒の 1000 分の 1 の精度で表現するべきである。 A DOMHighResTimeStamp SHOULD represent a number of milliseconds accurate to a thousandth of a millisecond.

注記: 利用者エージェントは、ハードウェアまたはソフトウェア上の制約から,ミリ秒の 1000 分の 1 の精度の時刻値を供することができない場合、 DOMHighResTimeStamp をミリ秒精度による数として,表現できる。 If the User Agent is unable to provide a time value accurate to a thousandth of a millisecond due to hardware or software constraints, the User Agent can represent a DOMHighResTimeStamp as a number of milliseconds accurate to a millisecond.

4.3. Performance インタフェースに対する拡張

partial interface Performance {
  DOMHighResTimeStamp now();
};
now メソッド

now メソッドは、文書のナビゲーションの開始時点,すなわち PerformanceTiming インタフェースの navigationStart 属性 [NavigationTiming] から, now メソッドの呼び出しが生じた時点までの、ミリ秒数を表現する DOMHighResTimeStamp を返さなければならない The now method MUST return a DOMHighResTimeStamp representing the number of milliseconds from the navigationStart attribute of the PerformanceTiming interface [NavigationTiming], the start of navigation of the document, to the occurrence of the call to the now method.

注記: nowメソッドは現在時刻を返すものなので、文書が hidden [Page Visibility] である間, あるいは fully active [HTML5] でない間に経過した時間も、このメソッドの目的においては,織り込まれる。 As the now method returns the current time, time spent while a document is hidden or not fully active is included for the purpose of this method.

4.4. 単調増加クロック

now メソッドを呼び出した際に返される時刻値は、単調増加しなければならず,システムクロック調整やシステムクロックスキューの対象にはならない。 now メソッドから返されるどの2つの時刻値についても、より未来の時点の値の,より過去の時点の値に対する差分が,負になってはならない The time values returned when calling the now method MUST be monotonically increasing and not subject to system clock adjustments or system clock skew. The difference between any two chronologically recorded time values returned from the now method MUST never be negative.

4.5. プライバシーとセキュリティ

統計的指紋収集( statistical fingerprinting )は、悪意のあるウェブサイトが,キャッシュヒットタイミングや第三者ウェブサイト内のリソースのキャッシュミスを計測することにより,利用者が第三者ウェブサイトを訪問したかどうかを決定し得るか、についてのプライバシーの懸念である。 Performance インタフェースの now メソッドは,以前より高精度の時刻データを返すものではあるが、このプライバシーの懸念を以前より有意に悪化させるものになるとは考えられていない。 Statistical fingerprinting is a privacy concern where a malicious web site may determine whether a user has visited a third-party web site by measuring the timing of cache hits and misses of resources in the third-party web site. Though the now method of the Performance interface returns time data to a greater accuracy than before, it does not make this privacy concern significantly worse than it was already.

5. 参照文献

5.1 文献(規定)

[RFC 2119]
Key words for use in RFCs to Indicate Requirement Levels, Scott Bradner, Author. Internet Engineering Task Force, March 1997. Available at http://www.ietf.org/rfc/rfc2119.txt.
[ECMA-262]
ECMAScript Language Specification, 5.1 Edition. ECMA International, Standard ECMA-262, June 2011. This version of the ECMAScript Language is available from http://www.ecma-international.org/publications/standards/Ecma-262.htm.
Navigation Timing, Zhiheng Wang, Editor. World Wide Web Consortium, December 2012. This version of the Navigation Timing Recommendation is available from http://www.w3.org/TR/2012/REC-navigation-timing-20121217/. The latest version of Navigation Timing is available at http://www.w3.org/TR/navigation-timing/.
[Web IDL]
Web IDL, Cameron McCormack, Editor. World Wide Web Consortium, April 2012. This version of the Web IDL specification is available from http://www.w3.org/TR/2012/CR-WebIDL-20120419/. The latest version of Web IDL is available at http://www.w3.org/TR/WebIDL/.

5.1 文献(参考)

[HTML5]
HTML5, Robin Berjon et al., Editors. World Wide Web Consortium, December 2012. This version of the HTML5 is available from http://www.w3.org/TR/html5/. The latest editor's draft of HTML5 is available at http://www.w3.org/html/wg/drafts/html/CR/.
[Page Visibility]
Page Visibility, Jatinder Mann and Arvind Jain, Editors. World Wide Web Consortium, July 2012. This version of the Page Visibility specification is available from http://www.w3.org/TR/2012/CR-page-visibility-20120726/. The latest version of Page Visibility is available at http://www.w3.org/TR/page-visibility/.

謝辞

次の方々によるこの仕事への寄与に感謝する: I would like to sincerely thank

I would like to sincerely thank Karen Anderson, Nat Duca, Tony Gentilcore, Arvind Jain, James Robinson, James Simonsen, and Jason Weber to acknowledge their contributions to this work.