Chrome 76 の新機能

Chrome 76 では、以下をサポートしました。

Pete LePage と申します。Chrome 76 のデベロッパー向けの新機能について、詳しく説明します。

PWA アドレスバーのインストール ボタン

Chrome 76 では、アドレスバー(オムニボックス)にインストール ボタンを追加することで、ユーザーがプログレッシブ ウェブアプリをデスクトップに簡単にインストールできるようになりました。

サイトがプログレッシブ ウェブアプリのインストール要件を満たしている場合、Chrome のオムニボックスにインストール ボタンが表示され、PWA をインストールできることがユーザーに示されます。ユーザーがインストール ボタンをクリックすると、基本的には beforeinstallprompt イベントで prompt() を呼び出す場合と同じです。インストール ダイアログが表示され、ユーザーは簡単に PWA をインストールできます。

詳しくは、パソコンでのプログレッシブ ウェブアプリのアドレスバーでのインストールをご覧ください。


PWA ミニ情報バーの制御機能の強化

AirHorner の [ホーム画面に追加] ミニ情報バーの例

モバイルでは、プログレッシブ ウェブアプリのインストールに関する要件を満たしていれば、ユーザーがサイトに初めてアクセスしたときにミニ情報バーが表示されます。お客様から、ミニ情報バーが表示されないようにして、代わりに独自のインストール プロモーションを提供したいというご要望がありました。

Chrome 76 以降では、beforeinstallprompt イベントに対して preventDefault() を呼び出すと、ミニ情報バーの表示が停止します。

window.addEventListener('beforeinstallprompt', (e) => {
  // Don't show mini-infobar
  e.preventDefault();
  // Stash the event so it can be triggered later.
  deferredPrompt = e;
  // Update UI to promote PWA installation
  pwaInstallAvailable(true);
});

UI を更新して、PWA をインストールできることをユーザーに知らせてください。プログレッシブ ウェブアプリのインストールを促進するためのおすすめのベスト プラクティスについては、PWA のインストールを促進するためのパターンをご覧ください。

WebAPK の更新を高速化

Android にプログレッシブ ウェブアプリがインストールされると、Chrome は Web APK を自動的にリクエストしてインストールします。インストール後、Chrome はウェブアプリ マニフェストが変更されていないか(アイコン、色、アプリ名が更新されていないか)を定期的に確認し、新しい WebAPK が必要かどうかを判断します。

Chrome 76 以降では、Chrome はマニフェストを 3 日に 1 回ではなく、毎日チェックするようになります。重要なプロパティのいずれかが変更された場合、Chrome は新しい WebAPK をリクエストしてインストールし、タイトル、アイコンなどのプロパティが最新の状態になるようにします。

詳しくは、WebAPK の更新頻度の増加をご覧ください。

ダークモード

多くのオペレーティング システムで、ダークモード(ダークテーマ)がサポートされるようになりました。

prefers-color-scheme メディアクエリを使用すると、ユーザーが選択したモードに合わせてサイトの外観を調整できます。

@media (prefers-color-scheme: dark) {
  body {
    background-color: black;
    color: white;
  }
}

Tom は、web.devHello Doodle、私の旧友の記事に、知っておくべきことがすべて記載されています。さらに、ライトモードとダークモードの両方をサポートするスタイルシートを設計するためのヒントも紹介しています。

その他

これらは、デベロッパー向けの Chrome 76 の変更のほんの一部です。もちろん、他にも多くの変更があります。

Promise.allSettled()

個人的には、Promise.allSettled()にはとても興味があります。Promise.all() と似ていますが、すべての Promise が解決するまで待ってから返します。

const promises = [
  fetch('/api-call-1'),
  fetch('/api-call-2'),
  fetch('/api-call-3'),
];
// Imagine some of these requests fail, and some succeed.

await Promise.allSettled(promises);
// All API calls have finished (either failed or succeeded).

より簡単に blob を読み取る

Blob は、text()arrayBuffer()stream() の 3 つの新しいメソッドで簡単に読み取れるようになります。つまり、ファイル リーダーのラッパーを作成する必要がなくなります。

// New easier way
const text = await blob.text();
const aBuff = await blob.arrayBuffer();
const stream = await blob.stream();

// Old, wrapped reader
return new Promise((resolve) => {
  const reader = new FileReader();
  reader.addEventListener('loadend', (e) => {
    const text = e.srcElement.result;
    resolve(text);
  });
  reader.readAsText(file);
});

非同期クリップボード API での画像のサポート

また、非同期クリップボード API に画像のサポートを追加し、画像をプログラムで簡単にコピーして貼り付けられるようにしました。

関連情報

ここでは主なハイライトのみを取り上げています。Chrome 76 のその他の変更点については、以下のリンクを確認してください。

登録

最新の動画情報を受け取るには、Chrome デベロッパーの YouTube チャンネルチャンネル登録してください。新しい動画が公開されるとメール通知が届きます。

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