Frontend Weekly 2024-06-14
Chrome 126、State of HTML 2023にみるアクセシビリティの現状などについて紹介する。
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のトリガーランブル拡張機能
- ブラウザで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回までしか再帰出来ない制限など。
熟練が必要なUIについて議論
UIの慣性、開発者がユーザー体験を良くするために行った変更によって、既存の”習熟した”ユーザーが使いにくくなるということはままある。
熟練が必要なUIについて、それがよくない理由と、UIの慣性について
内容に関係ないが、駅員の操作は間違っているわけではなく、動画全体と通して見ると恐らく指差し確認の類なのではないかなと思った。
CSSのみでスクロール速度を検出する試み。