Chrome 96 の新機能

必知事項は次のとおりです。

Pete LePage と申します。ようやくスタジオで撮影できました。Chrome 96 のデベロッパー向けの新機能について詳しく見ていきましょう。

PWA のマニフェスト id

ユーザーが PWA をインストールすると、ブラウザは PWA を一意に識別する方法が必要になります。しかし、最近まで、ウェブアプリ マニフェストの仕様では PWA を識別する方法が指定されていなかったため、ブラウザが判断し、実装が異なる結果になっていました。ブラウザによっては start_url が使用され、他のブラウザではマニフェスト ファイルのパスが使用されます。

そのため、インストール エクスペリエンスを損なうことなく、これらのフィールドのいずれかを変更することはできません。オプションの新しい id プロパティが追加され、PWA に使用する ID を明示的に定義できるようになりました。

マニフェストに id プロパティを追加すると、start_url またはマニフェストの場所への依存関係が解除され、これらのフィールドを更新できるようになります。

{
  ...
  id: "/?homescreen=1",
  start_url: "/?homescreen=1",
  ...
}

id プロパティのサポートは、Chrome 96 以降のパソコン版 Chromium ベースのブラウザで提供されます。現在、一意の ID としてマニフェスト URL を使用しているモバイルのサポートは、2022 年前半にリリースされる予定です。

計算されたアプリ ID を示す DevTools

本番環境ですでに PWA があり、マニフェストに id を追加する場合は、ブラウザによって割り当てられた ID を使用する必要があります。id は、DevTools の [Application] パネルの [Manifest] ペインで確認できます。

まったく新しい PWA の場合は、id を任意の文字列値に設定できますが、後で変更することはできないため、慎重に選択してください。

{
  ...
  id: "SquooshApp",
  start_url: "/?homescreen=1",
  ...
}

詳しくは、ウェブアプリ マニフェスト ID プロパティで PWA を一意に識別するをご覧ください。

PWA の URL プロトコル ハンドラ

ウェブアプリは navigator.registerProtocolHandler() を使用してプロトコル ハンドラとして登録できます。たとえば、Gmail は mailto プロトコルを登録できます。ユーザーが mailto: 接頭辞のリンクをクリックすると、Gmail が開き、ユーザーは簡単にメールを送信できます。

Chrome 96 以降では、PWA をインストールする際にプロトコル ハンドラとして登録できるようになりました。PWA でこれを行うには、ウェブアプリ マニフェストに protocol_handlers プロパティを追加し、処理する protocol と、クリックされたときに開く url を指定します。

  ...
  "protocol_handlers": [
    {
      "protocol": "web+tea",
      "url": "/tea?type=%s"
    },
    {
      "protocol": "web+coffee",
      "url": "/coffee?type=%s"
    }
  ]
}

ただし、いくつかの制限があり、任意のプロトコルを登録することはできません。詳しくは、PWA の URL プロトコル ハンドラの登録をご覧ください。また、web+ 構文を使用して独自のプロトコルを作成する方法もご確認ください。

優先度ヒント(オリジン トライアル)

ブラウザがウェブページを解析し、画像、スクリプト、CSS などのリソースの検出とダウンロードを開始すると、ページの読み込みを最適化するために、それらのリソースに取得優先度が割り当てられます。ブラウザは優先度を割り当てるのが得意ですが、すべてのケースで最適であるとは限りません。

優先度ヒントは試験運用版の機能で、Chrome 96 以降のオリジン トライアルとして利用できます。Core Web Vitals の最適化に役立ちます。importance 属性を使用すると、CSS、フォント、スクリプト、画像、iframe などのリソースタイプの優先度を指定できます。

<!-- We don't want a high priority for this above-the-fold image -->
<img src="/not-important.svg" importance="low">

<!-- Initiate an early fetch for a resource, but de-prioritize it -->
<link rel="preload" href="/script.js" as="script" importance="low">

<script>
  fetch('https://example.com/', {importance: 'high'})
      .then(data => {
        // Trigger a high priority fetch
      });
</script>

たとえば、Google フライトのページは次のようになります。この背景画像が Largest Contentful Paint(LCP)です。

背景画像が大きい Google フライトのスクリーンショット

優先ヒントありと優先ヒントなしで読み込みを比較してみましょう。背景画像の優先度を high に設定すると、LCP は 2.6 秒から 1.9 秒に短縮されます。

詳細、オリジン トライアルへの登録方法、レンダリング パフォーマンスの向上に役立つ優れた例については、Fetch Priority API によるリソース読み込みの最適化をご覧ください。

UA 文字列で Chrome 100 をエミュレートする

来年初めには、Chrome 100 に達し、バージョン番号が 3 桁になります。バージョン番号を確認するコードや UA 文字列を解析するコードは、3 桁を処理していることを確認する必要があります。

Chrome 96 以降では、現在のバージョン番号を 100 に変更する新しいフラグ #force-major-version-to-100 が導入されるため、すべてが想定どおりに動作することを確認できます。

新しい #force-major-version-to-100 オプションがハイライト表示された Chrome フラグページ

詳しくは、ユーザー エージェント文字列で Chrome のメジャー バージョンを 100 に強制するをご覧ください。

Chrome Dev Summit

Chrome Dev Summit は終了しました。すべての動画とコンテンツはオンラインで利用できます。Chrome デベロッパー サミットのサイトをご覧ください。キーノートやライブ配信を見逃した場合は、Chrome デベロッパーの YouTube チャンネルCDS 再生リストをご覧ください。

その他

もちろん、他にもたくさんあります。

  • 前後キャッシュ(bfcache)が安定版で利用可能になり、Chrome は Firefox と Safari の両方と連携するようになりました。

関連情報

以下に、主なハイライトをいくつかご紹介します。Chrome 96 のその他の変更については、下記のリンクをご覧ください。

登録

最新情報を入手するには、Chrome Developers の YouTube チャンネルチャンネル登録してください。新しい動画が公開されると、メール通知が届きます。

Pete LePage と申します。Chrome 97 がリリースされ次第、Chrome の新機能についてお知らせします。