Chrome 77 のリリースが開始されました。
- サイトのパフォーマンスをトラッキングするより良い方法として、Largest Contentful Paint があります。
- フォームに新しい機能が追加されました。
- ネイティブの遅延読み込みが利用可能になりました。
- Chrome DevSummit 2019 は 2019 年 11 月 11 ~ 12 日に開催されます。
- その他多くの機能。
Pete LePage と申します。Chrome 77 のデベロッパー向けの新機能について、詳しく説明します。
Largest Contentful Paint
サイトの実際のパフォーマンスを把握して測定するのは難しい場合があります。load
や DOMContentLoaded
などの指標では、ユーザーが画面上で何を見ているかはわかりません。First Paint と First Contentful Paint は、エクスペリエンスの開始のみをキャプチャします。First Meaningful Paint のほうが優れていますが、複雑で、誤りがあることもあります。
Chrome 77 以降で利用可能な Largest Contentful Paint API は、ビューポートに表示される最大のコンテンツ要素のレンダリング時間を報告し、ページのメイン コンテンツが読み込まれた時点を測定できるようにします。
Largest Contentful Paint を測定するには、Performance Observer を使用して largest-contentful-paint
イベントを探す必要があります。
let lcp;
const po = new PerformanceObserver((eList) => {
const e = eList.getEntries();
const last = e[e.length - 1];
lcp = last.renderTime || last.loadTime;
});
const poOpts = {
type: 'largest-contentful-paint',
buffered: true
}
po.observe(poOpts);
ページは段階的に読み込まれるため、ページ上の最大要素が変更される可能性があります。そのため、アナリティクス サービスには最後の largest-contentful-paint
イベントのみを報告する必要があります。
addEventListener('visibilitychange', function fn() {
const visState = document.visibilityState;
if (lcp && visState === 'hidden') {
sendToAnalytics({'lcp': lcp});
removeEventListener('visibilitychange', fn, true);
}
}, true);
Phil は、web.dev で Largest Contentful Paint に関する優れた投稿をしています。
フォームの新機能
多くのデベロッパーは、既存の要素の外観をカスタマイズしたり、ブラウザに組み込まれていない新しいコントロールを構築したりするために、カスタム フォーム コントロールを構築します。通常、これは JavaScript と非表示の <input>
要素を使用することになりますが、完璧なソリューションではありません。
Chrome 77 で追加された 2 つの新しいウェブ機能により、カスタム フォーム コントロールを簡単に作成でき、既存の多くの制限が解除されます。
formdata
イベント
formdata
イベントは、任意の JavaScript コードがフォーム送信に参加できるようにする低レベルの API です。使用するには、操作するフォームに formdata
イベント リスナーを追加します。
const form = document.querySelector('form');
form.addEventListener('formdata', ({formData}) => {
formData.append('my-input', myInputValue);
});
ユーザーが送信ボタンをクリックすると、フォームから formdata
イベントが送信されます。このイベントには、送信されるすべてのデータを保持する FormData
オブジェクトが含まれます。その後、formdata
イベント ハンドラで、formdata
が送信される前に更新または変更できます。
フォームに関連付けられたカスタム要素
フォームに関連付けられたカスタム要素は、カスタム要素とネイティブ コントロールのギャップを埋めるのに役立ちます。静的 formAssociated
プロパティを追加すると、カスタム要素を他のすべてのフォーム要素と同様に扱うようにブラウザに指示します。また、ネイティブ コントロールとの整合性を確保するために、入力要素に共通のプロパティ(name
、value
、validity
など)を追加する必要があります。
class MyCounter extends HTMLElement {
static formAssociated = true;
constructor() {
super();
this._internals = this.attachInternals();
this._value = 0;
}
...
}
詳しくは、web.dev の高度なフォーム コントロールをご覧ください。
ネイティブ遅延読み込み
前回の動画でネイティブ レイジー ローディングを忘れていたなんて、とても素晴らしいので、今から追加します。遅延読み込みとは、画面外の <img>
や <iframe>
などの重要でないリソースの読み込みを、必要になるまで延期してページのパフォーマンスを向上させる手法です。
Chrome 76 以降では、カスタムの遅延読み込みコードを記述したり、別の JavaScript ライブラリを使用したりすることなく、ブラウザが遅延読み込みを処理します。
画像または iframe を遅延読み込みすることをブラウザに指示するには、loading="lazy"
属性を使用します。「上部」にある画像と iframe は通常どおり読み込まれます。下にあるものは、ユーザーがその近くまでスクロールしたときにのみ取得されます。
<img src="image.jpg" loading="lazy" width="400" height="250" alt="...">
詳しくは、web.dev の ウェブのブラウザレベルの遅延読み込みをご覧ください。
Chrome Dev Summit 2019
Chrome Dev Summit が 11 月 11 日と 12 日に開催されます。
ウェブ プラットフォームの最新のツールやアップデートについて学び、Chrome エンジニアリング チームから直接情報を得る絶好の機会です。
イベントは YouTube チャンネルでライブ配信されます。現地で参加したい場合は、Chrome Dev Summit 2019 ウェブサイトで招待状をリクエストしてください。
その他
これらはデベロッパー向け Chrome 77 の変更のほんの一部であり、もちろん他にも多くの変更があります。
Contact Picker API は、オリジン トライアルとして利用できる新しいオンデマンド ピッカーです。ユーザーは連絡先リストからエントリを選択して、選択した連絡先の限定的な詳細情報をウェブサイトと共有できます。
また、intl.NumberFormat
API に新しい測定単位が追加されました。
関連情報
以下に、主なハイライトをいくつかご紹介します。Chrome 77 のその他の変更については、下記のリンクをご覧ください。
- Chrome DevTools の新機能(77)
- Chrome 77 の非推奨と削除
- ChromeStatus.com の更新内容(Chrome 77)
- JavaScript の新機能(Chrome 77)
- Chromium ソース リポジトリの変更リスト
登録
動画の最新情報を入手し、Chrome Developers YouTube チャンネルに登録してください。新しい動画が公開されるたびに、メール通知が届きます。
担当の Pete LePage です。Chrome 78 がリリースされ次第、Chrome の新機能についてお知らせします。