aboutsummaryrefslogtreecommitdiff
path: root/files/ja/web/api/long_tasks_api/index.html
blob: 85227ed2a921cf3221c9738ab8e0ef5c7118e3c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
---
title: Long Tasks API
slug: Web/API/Long_Tasks_API
tags:
  - API
  - Experimental
  - Landing
  - Long Tasks API
  - Overview
  - Performance
  - PerformanceLongTaskTiming
  - Reference
  - TaskAttributionTiming
  - Web Performance
translation_of: Web/API/Long_Tasks_API
---
<p>{{DefaultAPISidebar("Long Tasks")}}</p>

<h2 id="Motivation" name="Motivation">動機</h2>

<p><span class="seoSummary">実験的な Long Tasks API(長いタスク API)により、50ミリ秒以上かかるタスクを可視化できます。</span> 50ミリ秒のしきい値は、<a href="https://developers.google.com/web/fundamentals/performance/rail">RAIL モデル</a>、特に「<a href="https://developers.google.com/web/fundamentals/performance/rail#response">Response: process events in under 50ms</a>(応答: 50ミリ秒未満でイベントを処理、英語版を参照のこと)」のセクションから来ています。</p>

<p>50ミリ秒以上メインスレッドをブロックするタスクは、次のような問題があります。</p>

<ul>
 <li>{{glossary("Time to interactive","対話までの時間")}}」の遅延</li>
 <li>高/可変入力待ち時間</li>
 <li>高/可変イベント処理待ち時間</li>
 <li>ぎくしゃくしたアニメーションとスクロール</li>
</ul>

<h2 id="Concepts" name="Concepts">概念</h2>

<p>Long Tasks API によって使用されるいくつかの重要な用語またはアイデア。</p>

<dl>
 <dt>
 <h3 id="Long_task" name="Long_task">長いタスク</h3>
 </dt>
</dl>

<p>メイン UI スレッドが50ミリ秒以上ビジーである継続期間。 一般的な例は次のとおりです。</p>

<ul>
 <li>長期実行イベントハンドラ</li>
 <li>高価なリフローやその他の再レンダリング</li>
 <li>50ミリ秒を超えるイベントループの異なるターンの間にブラウザーが実行する作業</li>
</ul>

<h3 id="Culprit_browsing_context_container" name="Culprit_browsing_context_container">犯人の閲覧コンテキストコンテナ</h3>

<p>「犯人の閲覧コンテキストコンテナ(Culprit browsing context container)」、または略して「コンテナ」は、タスクが発生した最上位ページ、iframe、embed、object です。</p>

<h3 id="Attributions" name="Attributions">帰属(Attributions)</h3>

<p>タスクが発生したコンテナのリスト。 トップレベルページ内で発生しないタスクの場合、<code>containerId</code><code>containerName</code><code>containerSrc</code> の各フィールドは、タスクのソースに関する情報を提供することがあります。</p>

<h2 id="Usage" name="Usage">使用法</h2>

<pre class="brush: js">var observer = new PerformanceObserver(function(list) {
    var perfEntries = list.getEntries();
    for (var i = 0; i &lt; perfEntries.length; i++) {
        // 長いタスク通知を処理します
        // 分析とモニタリングについて報告する
        // ...
    }
});
// 長いタスク通知用のオブザーバーを登録する
observer.observe({entryTypes: ["longtask"]});
// この後スクリプトを長時間実行すると、オブザーバー内で
// "longtask" エントリがキューに入れられ、受信されます。
</pre>

<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>

<dl>
 <dt>{{domxref('PerformanceLongTaskTiming')}}</dt>
 <dd>長いタスクのインスタンスを報告します。</dd>
 <dt>{{domxref("TaskAttributionTiming")}}</dt>
 <dd> 長いタスクに関連する作業とそれに関連するフレームコンテキストに関する情報を返します。</dd>
</dl>

<h2 id="Specifications" name="Specifications">仕様</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">仕様</th>
   <th scope="col">状態</th>
   <th scope="col">コメント</th>
  </tr>
  <tr>
   <td>{{SpecName('Long Tasks')}}</td>
   <td>{{Spec2('Long Tasks')}}</td>
   <td>初期定義</td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>

<h3 id="PerformanceLongTaskTiming" name="PerformanceLongTaskTiming"><code>PerformanceLongTaskTiming</code></h3>

<div>
<p>{{Compat("api.PerformanceLongTaskTiming")}}</p>
</div>

<h3 id="TaskAttributionTiming" name="TaskAttributionTiming"><code>TaskAttributionTiming</code></h3>

<div>
<p>{{Compat("api.TaskAttributionTiming")}}</p>
</div>

<h2 id="See_also" name="See_also">関連情報</h2>

<ul>
 <li><a href="https://github.com/w3c/longtasks">GitHub リポジトリ</a>にはドキュメントといくつかのコードサンプルが含まれています。</li>
 <li>2017年12月20日の Long Tasks API に関する <a href="https://calendar.perfplanet.com/2017/tracking-cpu-with-long-tasks-api/">PerfPlanet の記事</a></li>
</ul>