Frontend Weekly 2024-06-14

Chrome 126#

2024 年 6 月 11 日に Chrome 126 がリリースされました。

Chrome 126  |  Release notes  |  Chrome for Developers

Gemini nano は不明#

Google I/O で Chrome 126 から、Gemini Nano は Chrome デスクトップクライアントに組み込まれるという発表がありましたが、残念ながら組み込まれていないようです。リリースノートに延期という記載もないため不明です。Chrome 127 Beta で利用可能です。

const canCreate = await window.ai.canCreateTextSession();
if (canCreate !== "no") {
const session = await window.ai.createTextSession();
const result = await session.prompt("日本の一番高い山は何ですか?");
console.log(result);
const stream = session.promptStreaming(
"次のキーワードを使って短い物語を書いてください:海、鳥"
);
for await (const chunk of stream) {
console.log(chunk);
}
}

CSS のみで View Transitions を MPA で行えるようになった#

以前から SPA では、View Transitions API を利用することでスムーズな遷移を実現できましたが、MPA でも View Transitions API を利用できるようになりました。

今まで MPA でスムーズな遷移を実現するには、Astro などのように遷移先のページを取得しておくなど JavaScript による処理が必要でした。

View Transition API によるスムーズな遷移  |  View Transitions  |  Chrome for Developers

次の指定を遷移元・遷移先に行うことで、SPA の場合と同じように View Transitions API を利用できます。ただし同一ドメインである制約はあります。

@view-transition {
navigation: auto;
}

import assertion ‘assert’ 構文の使用中止と削除#

他の環境と同様に import assertion が削除され、SyntaxError を吐くようになりました。with syntax に置き換える必要があります。

import m from 'foo' assert { type: 'json' }
import m from 'foo' with { type: 'json' }

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/import

CPU のスロットルを 20 倍にする - DevTools#

パフォーマンスタブの CPU で 20x slowdown を選択できるようになりました。M3 MacBook Pro では、CLS の問題を確実に測定および診断することができない問題があったため、より強力な CPU スロットルが必要になったようです。

https://issues.chromium.org/issues/324978881

その他#

Chrome 以外の環境で利用できないものやニッチなものなど。

  • URL.parse()
    • リリースノートに書かれていないが出荷されている。
    • このようなコードを書くと二重でパースされてしまう。これを避けるために生えた。
    if (URL.canParse(str)) {
    return new URL(str);
    }
  • CloseWatcher API の再有効化
    • dialog 要素や popover 要素を閉じるキー操作や Android の操作を簡単に扱うための API。
    • Chrome 120 で導入されたが、バグがあったため無効化された。
  • Gamepad API のトリガーランブル拡張機能
  • GeolocationCoordinates、GeolocationPosition の toJSON メソッド
    navigator.geolocation.getCurrentPosition((position) => {
    console.log(position.toJSON());
    });

State of HTML 2023 にみるアクセシビリティの現状#

先月公開された State of HTML 2023 をアクセシビリティの側面から見ている。

State of HTML 2023 にみるアクセシビリティの現状 | アクセシビリティ Blog | ミツエーリンクス

記事で取り上げられており、ほとんどの環境で利用できるものに限り、軽く紹介します。

Others#

URL.parse を Chromium で Ship するまで | blog.jxck.io

Vercel の Speed Insights でどの要素が低い Web スコアの原因になっているのか表示されるようになった。

HTML element attribution in Speed Insights – Vercel

TypeScript では、組み合わせ爆発を防ぐために判別可能な型の組み合わせが 25 パターンまでに制限されている。他にも 50 回までしか再帰出来ない制限など。

TypeScript は 26 以上のメンバーを絞り込めない!

熟練が必要な UI について議論

UI の慣性、開発者がユーザー体験を良くするために行った変更によって、既存の”習熟した”ユーザーが使いにくくなるということはままある。

熟練が必要な UI について、それがよくない理由と、UI の慣性について

内容に関係ないが、駅員の操作は間違っているわけではなく、動画全体と通して見ると恐らく指差し確認の類なのではないかなと思った。

マルスと「熟練が必要な UI」についての議論

CSS のみでスクロール速度を検出する試み。

CSS-only Custom Range Slider with Motion