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 スロットルが必要になったようです。
その他
Chrome 以外の環境で利用できないものやニッチなものなど。
- URL.parse()
- リリースノートに書かれていないが出荷されている。
- このようなコードを書くと二重でパースされてしまう。これを避けるために生えた。
if (URL.canParse(str)) {return new URL(str);} - CloseWatcher API の再有効化
- dialog 要素や popover 要素を閉じるキー操作や Android の操作を簡単に扱うための API。
- Chrome 120 で導入されたが、バグがあったため無効化された。
- Gamepad API のトリガーランブル拡張機能
- ブラウザで Gamepad を使うための API
- https://developer.mozilla.org/ja/docs/Web/API/Gamepad_API/Using_the_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 | ミツエーリンクス
記事で取り上げられており、ほとんどの環境で利用できるものに限り、軽く紹介します。
- search 要素
- 検索を行う要素を入れるコンテナ
- main や header などランドマーク要素の仲間
- 現状ほぼ使われていないと思われる
- https://developer.mozilla.org/ja/docs/Web/HTML/Element/search
- tabindex 属性
- 使っている:81.8%
- フォーカスの挙動を決定する属性。
- ネイティブな要素で実現出来ない UI を作ろうとすると、必要になる。
- https://developer.mozilla.org/ja/docs/Web/HTML/Global_attributes/tabindex
- autocomplete 属性
- 使っている:47.9%
- ブラウザによる自動補完を有効にする属性
- https://developer.mozilla.org/ja/docs/Web/HTML/Attributes/autocomplete
- details 要素、 summary 要素
- 使っている:46.7%
- 昔からある詳細折りたたみ要素と概要明示要素。
- クリックで折りたたみされるコンポーネントを HTML 単体で作れる。
- https://developer.mozilla.org/ja/docs/Web/HTML/Element/details
- dialog 要素
- 使っている:31.2%
- アラートやモーダルの作成に利用できる要素。
- これにより HTML/CSS のみでモーダルなどを作れるようになった。
- https://developer.mozilla.org/ja/docs/Web/HTML/Element/dialog
- inert 属性
- 要素及びその子孫を、ブラウザに無視させる/不活性にする属性。
- 入力やクリックだけでなくフォーカスやテキスト選択も出来なくなる。
- https://developer.mozilla.org/ja/docs/Web/API/HTMLElement/inert
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 の慣性について
内容に関係ないが、駅員の操作は間違っているわけではなく、動画全体と通して見ると恐らく指差し確認の類なのではないかなと思った。
CSS のみでスクロール速度を検出する試み。