Cybozu Frontend Monthly #44
イベント概要
サイボウズフロントエンドマンスリー は、サイボウズ社内で行っているフロントエンド情報共有会「フロントエンドウィークリー」の公開版です。
その月に気になったフロントエンドの情報を、サイボウズのフロントエンドエキスパートチームのメンバーが共有していきます。
このイベントのハッシュタグは #サイボウズフロントエンドマンスリー です。
※フロントエンドウィークリーとは
毎週火曜の 17:00 〜 18:00
で社内向けに行っているフロントエンドの気になる記事を紹介する会です。2016年3月15日から行われています。
ハッシュタグ
#サイボウズフロントエンドウィークリー
で実況しています。
zennのpublicationにてウィークリーのまとめも投稿していますので、ぜひこちらもご覧ください。 https://zenn.dev/p/cybozu_frontend
開催日
2024年02月27日
イベントページ
https://cybozu.connpass.com/event/309546/
メンバー
コンテンツ
👀 Notable Articles
Interaction to Next Paint becomes a Core Web Vital on March 12
- 共有者: @nus3_
ユーザー体験を計測する Core Web Vitals の指標の 1 つである First Input Delay (FID) が、3 月 12 日から Interaction to Next Paint (INP) に変更されることが web.dev で発表されました。
これまでの FID ではユーザーの最初のインタラクション(クリックなど)が対象でしたが、INP では全てのインタラクションが対象になります。
INP は最近の Web アプリケーションのようにインタラクションが多い画面に対して、ユーザー体験がどうなっているかをより詳細に計測できて良さそうに感じました。
The web just gets better with Interop 2024
- 共有者: @nakajmg
ブラウザ間の機能の相互運用性を高める取り組みである「Interop」が 2024 年に取り組む重点分野が公開されています。2024 年は次の 17 の分野に取り組むとしています。
- Accessibility
- CSS Nesting
- Custom Properties
- Declarative Shadow DOM
- font-size-adjust
- HTTPS URLs for WebSocket
- IndexedDB
- Layout
- Pointer and Mouse Events
- Popover
- Relative Color Syntax
- requestVideoFrameCallback
- Scrollbar Styling
- @starting-style and transition-behavior
- Text Directionality
- text-wrap: balance
- URL
進捗は Interop 2024 Dashboardd から見れます。
Announcing typescript-eslint v7
- 共有者: @sajikix
typescript-eslint v7 がリリースされました。v6 のような大きな BreakingChange は無く、サポートする Node.js や TypeScript、ESlint のバージョン引きあげがメインです。特に ESLint サポートバージョンを v8 系まで上げることで ESLint v9 で削除される API の影響を抑えることを狙っているようです。
むしろ今回のリリースで利用者側が知っておきたい変更は同時に発表された Flat Config Support でしょう。ESLint では次のメジャーバージョンである v9 で Flat Config を default にし、 v10 から旧来の設定ファイルのサポートをしない予定です。このように Flat Config 対応が迫る中、typescript-eslint が Flat Config に対応していなかったために移行を見送っていたユーザーも多かったと思います。
今回 typescript-eslint は Flat Config 対応のために新しく typescript-eslint
と言うパッケージを公開しました。今までは @typescript-eslint/parser
と @typescript-eslint/eslint-plugin
を install して利用していたのに対し、Flat Config 利用下では typescript-eslint
パッケージ 1 つで設定が済むようになります。この typescript-eslint
パッケージは Flat Config に対応した Config オブジェクトとそれを生成する関数、parser などを提供する wrapper のような役目を果たします。
利用する際は以下のようにtypescript-eslint
の提供する config
と言うユーティリティ関数で Flat Config に対応したオブジェクトを生成するのが一般的になりそうです。
import eslint from "@eslint/js"
import tseslint from "typescript-eslint"
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommended
)
🗓 Monthly Articles
📖 Framework, Library
- Next.js 14.1 | Next.js
- Next.js 14.1 がリリースされました。主にセルフホスティング周りの対応が盛り込まれています。
- Build a Next.js app in Storybook with React Server Components and Mock Service Worker
- MSW を使って RSC を Storybook 上で動かす解説記事です。
- useSortedClasses (not released) | Biome
- Biome で TailWind CSS などのユーティリティクラスをソートできるフォーマッティングの実装が進んでいるようです。
- Module Federation added to Rspack - Rspack
- Rspack で Module Federation がサポートされました。
- Panda v1 Roadmap - Segun Adebayo
- Panda の v1 リリースまでのロードマップです。現在の進捗が機能ベースでまとめられています。
- Open Sourcing the Remix Website | Remix
- remix.run のサイトのコードが公開されました。SSG を利用していない理由や Remix 自体のドッグフーディングにも利用されていることなども書かれています。
- Vite 5.1.0-beta.6 (2024-02-01)
- Vite 5.1.0 beta6 がリリースされました。SSR 中の HMR を多くのランタイムでサポート可能にする Vite Runtime API が試験的にサポートされています。また CSS preprocessor を別スレッドで実行することでパフォーマンスを向上させる機能なども入っています。
- 【脱仮想 DOM !?】Vue.js が控えている進化 “Vapor Mode” の詳細 (2023/12)
- Vue.js の Vapor Mode についての記事です。
- Deno 1.40: Temporal API
- Deno 1.40 がリリースされました。Temporal API がフラグ付きでサポートされ、ECMAScript Decorator も利用可能になるなどのアップデートがあります。
- Migrating from Zod to Valibot: A Comparative Experience | Matthew Kwong
- Valibot を実際に使ってみてのよかった点悪かった点などを紹介している記事です。Valibot の採用を検討している方は参考になりそうです。
- NextUI Pro - Ship faster
- React 向けの UI ライブラリである NextUI が pro 版を公開しました。有料ですがコピーで使える 150 以上のコンポーネントが提供されます。
- Announcing typescript-eslint v7 | typescript-eslint
- typescript-eslint の v7 がアナウンスされました。あわせて typescript-eslint というパッケージがリリースされ、flat-config が有効化された環境ではこのパッケージ経由で利用するようになります。
- atlassian/pragmatic-drag-and-drop: Fast drag and drop for any experience on any tech stack
- 今はメンテナンスモードになっている react-beautiful-dnd を開発していた Atlassian が新しい drag-and-drop ライブラリを公開する予定です。すでに Atlassian の各製品で利用されているものを社外に公開する形のようです。
- Storybook 8 Beta
- Storybook 8 beta がリリースされました。デフォルトコンパイラを SWC に変更するなどパフォーマンス改善に力を入れつつモバイルでの UI の変更なども行っています。また React への依存排除や各エコシステムのサポートバージョン引き上げなども行います。
- jsr.io/waitlist
- QwikDev/pwa: Turn your Qwik Application into an offline compatible PWA
- Qwik が PWA を簡単に作成するためのツール群を公開しました。Vite プラグインやユーティリティをまとめて
@qwikdev/pwa
というパッケージで提供します。
- Qwik が PWA を簡単に作成するためのツール群を公開しました。Vite プラグインやユーティリティをまとめて
- フルスタック Web フレームワーク HonoX を使ってみる
- hono と vite をベースにする軽量な web フレームワークである HonoX の紹介記事です。簡単なブログアプリをチュートリアルにして実際のコードを交えながら使い方を解説しています。
- React Labs: What We’ve Been Working On – February 2024 – React
- React Labs の近況報告です。React Compiler や React 19 について触れています。
- Introducing SafeTest: A Novel Approach to Front End Testing | by Netflix Technology Blog | Feb, 2024 | Netflix TechBlog
- Netflix がテスト用のライブラリをリリース。E2E と Integration Test のいいとこどりがコンセプトのようです。
- kolodny/safetest
- Base UI: v1 Milestone
- MUI がスタイルを持たない React コンポーネント・hooks を Base UI という名前で開発を進めています。
💬 Languages
- Announcing TypeScript 5.4 Beta - TypeScript
- TypeScript の 5.4 beta がリリースされました。クロージャにおいて最後の代入から型の絞り込みを行う推論の改善やジェネリクスを型推論の候補から外す NoInfer ユーティリティ型などが導入されます。
- TypeScript の変性(共変・反変)を 5 分で理解する
- 型推論の文脈で話題に出ることのある型の変性について TypeScript のコードを元に解説した記事です。日々のコーディングで意識することはそこまで多くないかもしれませんがより深い理解をする上で良い記事と言えそうです。
- Node.js Community Debate Intensifies Over Enabling Corepack by Default and Potentially Unbundling npm - Socket
- Node.js の corepack をデフォルト有効化した場合に、npm を Node.js にバンドルするかどうかが議論になっています。npm がバンドルされていることが前提にエコシステムが発展してきている面もあり場合によっては影響の大きな変更になりうるので今後の動きに注目したいところです。
🖥 Browsers
- Enable content-visibility by default
- Gecko エンジンで CSS プロパティ
content-visibility
の対応がされています。Firefox Nightly で試験的に導入されており、動作を試せます。
- Gecko エンジンで CSS プロパティ
- Intent to ship: Declarative ShadowDOM
- Declarative ShadowDOM が Firefox 123 のリリースを以て主要ブラウザでサポートされることになります。
- A Practical Introduction to Scroll-Driven Animations with CSS scroll() and view() | Codrops
- Scroll-Driven Animation の紹介と実装例をまとめた記事です。
- Platform Tilt - Mozilla
- Edge や Safari 等のファーストパーティーブラウザと Firefox を比較した際に格差となるような技術的問題をトラッキングしているサイトです。
- The web just gets better with Interop 2024 | WebKit
- ウェブブラウザの相互運用性を改善するプロジェクトである Interop の 2024 版における対象機能が発表されました。CSS Nesting に加えて Declarative Shadow DOM なども入っており、WebComponents の可用性が高まる一年となりそうです。また Popover 属性のサポートや SubGrid 対応がより進むなどの内容も盛り込まれています。
- Release Notes for Safari Technology Preview 185 | WebKit
- Safari の TP 185 で input 要素に switch 属性が実装されました。スマートフォンにおいて標準的に利用される UI であるトグルスイッチがより簡単に実装できるようになります。
- Import attributes · V8
- V8 では v12.3 から Import assertions が非推奨になり v12.6 で廃止される予定です。今後は Import assertions のデメリットを補う新しい提案である Import attributes を利用することを推奨しています。
- Apple が iOS 17.4 のベータ版で PWA のサポートを削除していることが明らかに - GIGAZINE
- EU リージョンの iOS17.4 Beta で WebKit の PWA が削除されているようです。今年に入り EU のデジタル市場法の要請で Apple はブラウザエンジン規制の緩和することを発表しており、この変更に影響しているのではという指摘もあります。
- Intent to Prototype: :open and :closed pseudo-classes
- Blink に :open と :close 擬似クラスのプロトタイプが実装されます。 details 要素や, select 要素, dialog 要素などの開閉状態から要素の指定を行えるユースケースが想定されます。一方でこの仕様は現在 EditorsDraft の段階なため、各ブラウザでサポートされるのはまだ先になりそうです
- パフォーマンスに関するパネル表示でパフォーマンス パネルを 400% 高速化
- DevTools の Performance パネルのパフォーマンスを DevTools で改善した事例紹介です
🦆 Others
- TSKaigi 2024
- TypeScript のカンファレンスが 2024 年 5 月 11 日に中野で開催されます。
- React Conf 2024
- React のカンファレンスが 2024 年 5 月 15〜16 日にアメリカのネバダ州で開催されます。ライブ配信もあるようです。
- テストの学習へようこそ! | web.dev
- web.dev が公開している学習コンテンツのシリーズにテストのコンテンツが追加されました。web アプリケーションのテストに不慣れな初学者が一通り学ぶ際などに適していそうです。一部のコンテンツは近日提供予定になっており今後の更新も楽しみな内容となっています。
- Call for Participation in JSX as markup language Community Group | JSX as markup language Community Group
- JSX を仕様として策定するためのコミュニティグループが W3C にできました。
- SPA の歴史と Remix SPA モードという到達点 / the SPA’s chronicle reaches to remix - Speaker Deck
- これまでの SPA についての歴史を振り返りながら、現代の環境で toB 向け SaaS の開発で SPA を始めるには Remix の SPA モードがちょうど良いのではと紹介しています。
- Core Web Vitals を改善する Next.js の機能群 - Speaker Deck
- Core Web Vitals の各指標の改善に対して Next.js の各機能がどう影響を与えるのか整理したスライドです。Next.js 14 で導入された機能なども含めて Next.js を使ったサービスのチューニングに役立ちそうです。
- jsr.io/waitlist
- Deno が JSR という JavaScript/TypeScript registry を開発しており、早期アクセスが募集されています。
- NGINX のコア開発者が親会社と決別、新たに「freenginx」という名前でフォーク版を作成開始 - GIGAZINE
- UI = f(statesⁿ) | daverupert.com
- UI に関連する状態について俯瞰・考察して紹介しています。
- AWS、高速起動にこだわった軽量な JavaScript ランタイム「LLRT」(Low Latency Runtime)をオープンソースで公開。AWS Lambda での利用にフォーカス
- AWS が Lambda 用の JS ランタイムを OSS として公開しました。
- Remix v2.7 で Vite が stable に
- Tappy - Yahoo!デベロッパーネットワーク
- ウェブサイトのスマホ閲覧時のボタンやリンクの大きさを分析してタップ成功率を表示するサービスです