Frontend Weekly 2023-05-31
Matsuri-tech Frontend Weekly 2023-05-14
Q&A
普段の業務において、質問を受けた際の回答などで有益そうなものをピックアップしています。 今回は面白いネタがなかったので、ありません。
Chrome 114
2023 年 5 月 30 日に Chrome 114 がリリースされました。
https://developer.chrome.com/blog/new-in-chrome-114/
text-wrap: balance
text-wrap: balance
を利用すれば、長い文字列をそれぞれの行の長さができるだけ等しくなるように改行できます。
これを利用すれば多言語サイトで、言語毎に見た目を微調整するといったケースを少し回避できるかもしれません。ただし現状 Chrome 以外でtext-wrap
はサポートされていないので、使用できる機会はかなり限られます。
Popover API
Popover API を利用すれば、一時的な UI 要素、ユーザーの行動を制限しない非モーダルなオーバーレイ、ポップアップ、ポップオーバー、ダイアログなどを簡単に実装できます。
モーダルつまり、それ自身が何らかのインタラクションを行うまでユーザーの行動を制限したい場合は、既に主要なブラウザで利用できる dialog 要素が推奨されます。ただし、dialog 要素はデフォルトで最上位レイヤーに来ないため、最上位に配置される Popover API を併用したくなることは多々あるように思います。
Popover API には、HTML 属性を利用した宣言的な方法と JavaScript を利用する方法が用意されています。HTML 属性を利用した方法では次のようにします。
<button popovertarget="my-popover">押すとポップオーバーが表示される</button>
<div id="my-popover" popover> <p>これはポップオーバーです。</p> <p></p></div>
詳しい使い方については、次の Chrome の記事などを呼んでください。
https://developer.chrome.com/blog/introducing-popover-api/
現時点では、Chrome 及び Safari の Technology Preview でのみ利用できます。
Safari 16.5
2023 年 5 月 18 日に Safari 16.5 がリリースされました。
https://developer.apple.com/documentation/safari-release-notes/safari-16_5-release-notes
リリースノートが雑すぎるせいか、3 件のゼロデイを含む脆弱性や不具合の修正が多いためセキュリティアップデートだと思われているのか、全く話題になっていない気がしますが、1 つだけ嬉しい機能追加があったので書いておきます。
CSS Nesting
CSS Nesting が Safari でもサポートされました。これで Chrome/Edge/Safari に CSS Nesting が出揃いました。
Chrome の際に説明した気がするので詳細は省きますが、次のように記述できます。
.nesting { color: hotpink;
> .is { color: rebeccapurple;
> .awesome { color: deeppink; } }}
Parcel v2.9.0
2023 年 5 月 26 日に Parcel v2.9.0 がリリースされました。かなり大きなリリースです。
https://parceljs.org/blog/v2-9-0/
SWC minifier
デフォルトの minifier が Terser から SWC に変更されました。動作は約 7 倍高速であり、出力サイズは同等以下とのことです。Terser 設定ファイルやオプションをほぼそのまま利用できるようになっているそうです。
Local plugin
プラグインを parcelrc 設定ファイルから相対パスで参照できるようになりました。これにより新しいプラグインのプロトタイピングが容易になったので、今後プラグインの開発がより活性化するといいですね。
New resolver
Parcel に欠けていた package.json の”exports”や tsconfig.json の”baseUrl”、“paths”、“moduleSuffixes”のサポートを追加した Rust 製の新しいリゾルバが導入されました。
ESM plugins and configs
Parcel は、ESM モジュールに対するプラグインと設定ファイルのサポートを追加しました。これにより、プラグインを mjs 形式で npm に公開したり、package.json で”type”: “module”を使用して js ファイルで ESM 構文を有効にしたりできます。また、postcss.config.mjs などの設定ファイルもサポートされています。
Deno 1.34
2023 年 5 月 25 日に Deno 1.34 がリリースされました。Deno Compile が npm パッケージをサポートし、npm パッケージを用いた Deno アプリケーションでも Deno Compile によって単一の実行系ファイルが生成できるようになった他、 deno.json
で glob を指定できるようになりました。
Node.js v19 EOL
Node.js v2023 年 6 月 1 日に EOL を迎えます。Node.js v20 に移行するか v18 へのダウングレードを検討しましょう。
また Node.js v14 も 4 月 30 日に EOL を迎えています。Node.js v14 から移行する場合は、v15・v17 は既に EOL、v16 も 9 月 EOL を迎えるので、v18 か v20 に移行すると良いかもしれません。
Astro 2.5
2023 年 5 月 18 日に Astro 2.5 がリリースされました。
Bun v0.6.0
2023 年 5 月 16 日に Bun v0.6.0 がリリースされました。
https://bun.sh/blog/bun-v0.6.0
Bun Bundler が搭載され、bun build
で bundle と minify ができるようになった他、bun build --compile
で単一実行可能ファイルを生成できるようになりました。
https://bun.sh/blog/bun-bundler
また Bun bundler は大きなプロジェクトの始まりにすぎず、数ヶ月内に HTTP サーバーやファイルシステムルーターも 1 つに統合した Super API”Bun.App”を発表する予定とのことです。