Cybozu Frontend Monthly #41
イベント概要
サイボウズフロントエンドマンスリー は、サイボウズ社内で行っているフロントエンド情報共有会「フロントエンドウィークリー」の公開版です。
その月に気になったフロントエンドの情報を、サイボウズのフロントエンドエキスパートチームのメンバーが共有していきます。
このイベントのハッシュタグは #サイボウズフロントエンドマンスリー です。
※フロントエンドウィークリーとは
毎週火曜の 17:00 〜 18:00
で社内向けに行っているフロントエンドの気になる記事を紹介する会です。2016年3月15日から行われています。
ハッシュタグ
#サイボウズフロントエンドウィークリー
で実況しています。
zennのpublicationにてウィークリーのまとめも投稿していますので、ぜひこちらもご覧ください。 https://zenn.dev/p/cybozu_frontend
開催日
2023年11月28日
イベントページ
https://cybozu.connpass.com/event/301001/
配信URL
https://www.youtube.com/watch?v=ksKsJ0LTLTY
メンバー
コンテンツ
👀 Notable Articles
Vue Fes Japan 2023 にスポンサーとして参加しました
- 共有者: nakajmg
2023 年 10 月 28 日にVue Fes Japan 2023が開催されました。サイボウズはシルバースポンサーとして協賛し、スポンサーブースの出展を行いました。
今後もスポンサーや登壇などを通してコミュニティに貢献していければと思います。カンファレンス関係者の方々、参加者のみなさまありがとうございました。
@storybook-test: more streamlined and powerful testing
- 共有者: nus3_
Storybook7.6 で追加予定の@storybook/jest
と@storybook/testing-library
を統合した@storybook/test
の紹介です。
この@storybook/test
には Vitest の spy や expect ユーテリティも含まれています。これら Vitest のユーテリティを採用することで、パッケージサイズの削減やパフォーマンスの向上が見込まれるとのことです。
また、@storybook/test
で提供されるfn()
を使って onClick などのアクションをモックできます。
import { Button } from "./Button"
import { fn } from "@storybook/test"
export default {
component: Button,
args: {
onClick: fn(),
},
}
この記事内で紹介されているモダンフロントエンドでのテストの記事では、Interaction tests が実装された 200 以上のコンポーネント、1000 以上のストーリーに対して、CI 上で 6 並列でテストを実行すると約 3 分で完了するとのことです。
個人的に Storybook のテストランナーを用いたテストの実行コストが気になっていたので、この記事通りであるならば、今回の@storybook/test
と合わせて Interaction tests の採用をもっと検討してみても良さそうに感じました。
WebAssembly Garbage Collection (WasmGC) now enabled by default in Chrome
- 共有者: b4h0_c4t
WasmGC (WebAssembly Gabage Collection)が Chrome にてデフォルトで有効化されました。
従来、Java のよう高級言語を WebAssembly へ移植する際、GC のような VM が備える機能も含めて WebAssembly へ移植する必要がありました。 WasmGC は、WebAssembly 側の VM が持つ GC の機能をポートすることで高級言語を移植した際に GC の移植コストを削減するためのプロポーザルです。
WasmGC の仕組みとして、まず WebAssembly VM が理解できる構造体や配列型が定義され、それらのインスタンスの生成といった操作が紐づけられます。 次に、移植元のコードは、定義された型に沿ってコードを置き換えます。 これによって WebAssembly VM が移植元コードの値を認識して管理できるようになります。
言語が持つ GC を含めて WebAssembly へ移植する従来の手法と比較して、移植コードの容量が削減されることはもちろん、JavaScript への適切な参照を提供できる他、メモリフラグメンテーションのリスクを抑えることができるといった利点があります。
🗓 Monthly Articles
📖 Framework, Library
- How we optimized package imports in Next.js
- Next.js で行われたパッケージの読み込み最適化と、それにまつわるコールドスタートの改善についての紹介
- Storybook を書くだけでリグレッションテストが実行される世界へようこそ
- Chromatic のクロスブラウザでの VRT を自前で実装した事例
- Introducing MSW 2.0
- MSW 2.0 がリリース
- Release: Yarn 4.0 🪄⚗️
- Yarn 4.0 がリリース
- Rspress, the Rspack-based static site generator
- Rspack ベースの Static Site Generator である Rspress の v1 がリリース
- Why I Won’t Use Next.js
- Kent C. Dodds 氏がなぜ Next.js ではなく Remix を使うのかを綴っている記事
- Start building with Next.js
- Next.js の学習コースで、App Router を活用した開発を学べる
- Next.js 14
- Next.js 14 がリリース。Server Actions が stable になるなど
- Deprecation of formatting rules
- eslint v8.53.0 からスタイルフォーマット系のルールが deprecated になった
- Jest v30.0.0-alpha.1
- Jest の v30.0.0-alpha.1 がリリース。mts ファイルや cts ファイルのデフォルトサポート
- Astro 3.4: Page Partials
- Astro 3.4 がリリース。部分的な HTML をレスポンスとして返す実装が可能になる Page Partials という機能などが追加
- Announcing WinterJS
- WinterJS という JavaScript Service Workers サーバの紹介
- Remix ❤️ Vite | Remix
- Remix が Vite をサポート
- Closure Library is in Maintenance Mode #1214
- Closure Library が 11 月 1 日からメンテナンスモードに入り、2024 年 8 月に更新が終了
- Support React Server Components
- StoryBook で React Server Components がサポート予定
- State of React 2023
- 2023 年における React の利用に関するサーベイ
- Alipay started its own Rust bundler project called Mako.
- Alipay(支付宝)が、独自の Rust バンドラープロジェクト Mako を開始
- ESLint のローカルルールで独自のコーディング規約を実装する
- ESLint の Flat Config 機能を活用することで独自のコーディング規約を簡単に実装できる
- Building towards a new default rendering model for web applications
- Next.js 14 で Experimental 機能として利用可能な PPR (Partial Prerendering) に関する Vercel による解説記事
- Rust で Prettier の 95% 以上のテストに合格すると $10,000
- Rust を使って Prettier の 95% 以上のテストケースをパスした場合、$10,000 の賞金を個人で提供する旨がポスト
- Prettier に —experimental-ternaries オプションが追加
- Prettier v3.1 で —experimental-ternaries オプションが追加され、三項演算子のフォーマットが可能に
- Astro 3.5
- Astro の 3.5 がリリース。i18n に対応したルーティングや、以前から Integration として提供されていた Prefetch のコアへの組込、
<form>
での View Transition のサポートなど
- Astro の 3.5 がリリース。i18n に対応したルーティングや、以前から Integration として提供されていた Prefetch のコアへの組込、
💬 Languages
- The State of WebAssembly 2023
- WebAssembly の利用状況などのサーベイ
- CSS
text-wrap: pretty
- pretty を指定すると、組版などで最終行にぽつんと単語が残るような事象(orphans)を防げます。
- Faster TypeScript builds with —isolatedDeclarations
- TypeScript に今後実装予定の
--isolatedDeclarations
という型定義ファイル出力におけるファイル間の依存を軽減するオプションについて
- TypeScript に今後実装予定の
- The URL Pattern Standard
- URL Pattern が Living Standard に追加
- Deno 1.38: HTML doc generator and HMR
- Deno 1.38 がリリース。HTML doc generator の追加など
- A new way to bring garbage collected programming languages efficiently to WebAssembly
- ガベージコレクションを備えたプログラミング言語を WebAssembly で効率的にサポートする方法について
- CSS nesting relaxed syntax update
- Chrome 120 以降、CSS nesting の構文が更新され、ネストした場合でも & なしで要素名が使えるように
🖥 Browsers
- scrollbar-color と scrollbar-width が Chrome 121 で実装予定
- CSS でスクロールバーの色とサイズを指定できる
scrollbar-color
とscrollbar-width
が Chrome 121 で実装予定
- CSS でスクロールバーの色とサイズを指定できる
- Chrome 119 で CSS で指数関数や平方根の計算を行う関数がフラグ付きで追加予定
- Intent to Ship: :has Selector
- CSS のセレクタ:has()が Firefox121 で実装予定
🦆 Others
- Introduction to web sustainability | MDN Blog
- web の持続可能性についての概要とガイドラインについて
- Write a JavaScript Parser in Rust
- Rust で JavaScript パーサーを書くためのガイド
- The Set Theory
- Vue などの開発を手掛ける Anthony Fu 氏が Vue Fes Japan 2023 で公演したときの資料
- フロントエンドリアーキテクトをテーマに「BAR フロントえんどう #1」を開催しました!