Cybozu Frontend Monthly #61

イベント概要
サイボウズフロントエンドマンスリー は、サイボウズ社内で行っているフロントエンド情報共有会「フロントエンドウィークリー」の公開版です。
その月に気になったフロントエンドの情報を、サイボウズのフロントエンドエンジニアのメンバーが共有していきます。
このイベントのハッシュタグは #サイボウズフロントエンドマンスリー です。
※フロントエンドウィークリーとは
毎週火曜の 17:00 〜 18:00
で社内向けに行っているフロントエンドの気になる記事を紹介する会です。
2016年3月15日から行われています。
ZennのPublicationにてウィークリーのまとめを投稿していますので、ぜひこちらもご覧ください。 https://zenn.dev/p/cybozu_frontend
開催日
2025年08月26日
イベントページ
https://cybozu.connpass.com/event/365035/
配信URL
https://www.youtube.com/watch?v=NVrYTXm_5es
メンバー
コンテンツ
👀 Notable Articles
State of CSS 2025
- 共有者: @sakupi01
CSS の利用状況などに関してのサーベイである State of CSS の 2025 年度版が公開されました。
個人的な注目ポイントは以下の通りです。State of CSS 2024 との比較を交えた感想も含めています。
:has()
、Intrinsic Sizing Keywords などの「Intrinsic」な機能群の充実と認知- Container Queries ファミリーと合わせて、Responsive Design の重心が View Port(extrinsic)からコンテンツ(intrinsic)に移る導線か
- Cascade Layer まだまだ使われてないが、利用率は増加
- 設計/デザイントークンの構成をドラスティックに変えないといけないものは、やはり導入難易度が高いと思われがちな印象
- 去年に続き、Tailwind が CSS in JS を差し置いてユーザ確保してる感
- AI の影響か、デザインシステムの思想がユーティリティによっているのか
- Libraries & Tools の利用率が全体的に減っていそう
- Missing Features の 2nd place に Masonry Layout がランクイン
- Chrome での
display: masonry
の実装の進捗、CSS WG での Item Flow の議論の進捗などもあり、Masonry Layout が注目されている印象
- Chrome での
- Resources から Blogs & Magazines、Peoples の項目がなくなった
- 今年の回答者数は 5,506 名、2024 年は 9,704 名と、昨年に比べて激減
Vitest v4 から VRT ができるように
- 共有者: @nus3
Vitest の Browser Mode を使って VRT ができる toMatchScreenshot
のプルリクがマージされました。このtoMatchScreenshot
は v4.0.0-beta.4 から利用可能です。
このプルリクの差分には以下のようなtoMatchScreenshot
の使い方の例が書かれています。
// basic usage, auto-generates screenshot name
await expect.element(getByTestId("button")).toMatchScreenshot()
// with custom name
await expect.element(getByTestId("button")).toMatchScreenshot("fancy-button")
// with options
await expect.element(getByTestId("button")).toMatchScreenshot({
comparatorName: "pixelmatch",
comparatorOptions: {
allowedMismatchedPixelRatio: 0.01,
},
})
// with both name and options
await expect.element(getByTestId("button")).toMatchScreenshot("fancy-button", {
comparatorName: "pixelmatch",
comparatorOptions: {
allowedMismatchedPixelRatio: 0.01,
},
})
Vitest では、他にも Browser Mode を使って、React Server Components(RSC)の Unit テストを、実際の RSC のようにサーバーサイドとクライアントサイドでそれぞれコンポーネントをレンダリングできるプラグインが公開されました(公式ではありませんが)など、Vitest の Browser Mode の活用が進んでいます。
Announcing TypeScript 5.9
- 共有者: @k1tikurisu
TypeScript 5.9 がリリースされました。主な変更点は以下の通りです:
tsc --init
コマンドの出力が最小化され、必要最低限の設定のみが含まれるようになりましたimport defer
構文がサポートされました。この機能により、モジュールとその依存関係をすぐに実行することなくモジュールをインポートできます- Node.js v20 の動作をモデル化した
--module node20
オプションが追加されました - エディタ上で、TypeScript の型を展開してホバー表示してくれる機能や、ホバーで表示されるツールチップの最大長を設定する機能が追加されました
そのほか、パフォーマンスの最適化や、TypeScript 6.0 のビジョンについても触れられています。
Oxlint Type-Aware Preview
- 共有者: @sajikix
Oxc Lint が type-aware な linting(= TS の型情報を利用する Lint)機能のプレビューを公開しました。利用する場合はoxlint-tsgolint
をインストールし、最新版の oxclint に--type-aware
オプションをつけるだけで利用可能です。
これにより各プロジェクトで試験的に導入した際に大幅に高速化したとしています。
このoxlint-tsgolint
の元になっているのは、typescript-eslint チームが作成していた 「ts-go
を利用した TypeScript のリントツール PoC」として作成されたtsgolint
です。その後 typescript-eslint チームはこの PoC の開発にリソースを割くことを中断しましたが、Oxc のチームがこのリポジトリをフォークし、利用しています。
そのためtsgolint
同様 「typescript-go を fork して patch を当てている」などの問題も引き継いでしまっています。これに対して ts-go
で go の API を公開してほしいという要望も出ており、今後も ts-go と周辺エコシステムの関係は注目していきたいです。
🗓 Monthly Articles
※AI によって整理・要約されています。
📖 Framework, Library
- Next.js 15.4: Performance and Stability Updates
- Turbopack Builds の改善と Next.js 16 へ向けた準備が主な内容。パフォーマンスと安定性の向上に焦点。
- The History of React Through Code
- React の歴史をコードの変遷から追跡し、設計思想の一貫性を技術的観点から解説。
- Vanilla JavaScript support for Tailwind Plus
- Tailwind Plus がカスタム要素ベースのフレームワーク非依存 UI コンポーネントライブラリを提供開始。最新の Web API(popover API、Invoker Commands API)を活用し、polyfill も搭載。
- React Server Components: How We Got Here
- 素朴な MPA から RSC までのウェブアプリアーキテクチャの進化を辿り、React Server Components が解決する問題と価値を詳細解説。
- Next.js MCP Server
- Next.js 公式の MCP サーバーが v15.4.2-canary.16 から利用可能に。エントリーポイント取得、モジュールグラフクエリ、ビルドエラー・警告の取得などが可能。
- [Fiber] Deprecate ‘Throw a Promise’ technique
- React.use(promise)を推奨し、従来の Promise 投げによるサスペンド手法を非推奨化する PR。
- Stop Re-Rendering — TanStack DB, the Embedded Client Database for TanStack Query
- TanStack Query 用の組み込みクライアントデータベース。差分データフローによる高速化とライブクエリを実現し、複雑な UI の状態管理を効率化。
- What’s New in ViteLand: July 2025 Recap
- Vite 7 リリース、Rolldown による大幅な高速化、初の ViteConf 開催予定など、Vite エコシステムの 7 月の主要更新。
- Vitest Browser Mode での VRT 実装
- Vitest v4.0.0-beta.4 から利用可能な toMatchScreenshot メソッドがマージされ、Browser Mode での VRT が可能に。
- 🐼 Panda v1 🎊
- Panda CSS v1.0.0 リリース。RTL/LTR バリアント修正、グラデーション背景プロパティ、createStyleContext 追加。
- Rolldown-Vite Performance Wins
- Rollup から Rolldown 移行による Vite ビルド高速化の統計集。最大 22.3 倍の高速化実績を紹介。
- Storybook Vitest 風テスト API
- Storybook に Vitest 風.test メソッドを追加する RFC。ストーリーに直接テストロジックを記述可能に。
- jQuery 4.0.0 Release Candidate 1
- jQuery 4.0.0 RC1 リリース。IE11 未満サポート終了、非推奨 API 削除などの重大な変更を含む。
- chore: add maintenance info in README(tsup)
- tsup プロジェクトがメンテナンスモードに移行。tsdown への移行が推奨され、
npx tsdown migrate
で移行可能。
- tsup プロジェクトがメンテナンスモードに移行。tsdown への移行が推奨され、
- Next.js 15.5: Performance and TypeScript Improvements
- Turbopack Builds beta、TypeScript 改善、next lint コマンド非推奨化など。最大 4 倍の高速化を実現。
- Oxlint Type-Aware Preview
- Oxlint の型認識リンティングプレビュー版。typescript-eslint より大幅高速化した型チェック機能を提供。
- Rslint - The Linter for TypeScript
- ByteDance 開発の高速型安全 TypeScript リンター。Go と typescript-go を使って構築され、MIT ライセンスでオープンソース公開。
⚡️ Services
- Perplexity is using stealth, undeclared crawlers to evade website no-crawl directives
- Cloudflare が Perplexity の非倫理的クローリング行為を報告。robots.txt を回避するステルスクローラーの使用を指摘。
🖥 Browsers
- Building a faster, smarter, Chromebook experience with the best of Google technologies
- ChromeOS が Android スタックを採用して Google AI 機能をより迅速に展開する計画を発表。
- Edge の Copilot Mode のご紹介:新しいウェブ閲覧体験
- Edge Copilot Mode が複数タブの文脈理解と音声ナビゲーション対応でブラウジング体験を革新。自然言語での Web サイト操作が可能に。
- Baseline for CSS properties now in Chrome DevTools
- Chrome DevTools 要素パネルで CSS プロパティの Baseline 対応状況をホバーカードで表示する機能を Chrome 140 から追加。
- Pitstop | DevTools Cinemai
- Chrome DevTools の scheduler.yield()デモ。レーシングトラックでメインスレッドでの重タスク中のアニメーション維持を実演。
💬 Languages
- Announcing TypeScript 5.9 RC
- 最小限の tsc —init、import defer 構文、—module node20 オプションなどの新機能を搭載。
- TypeScript 上達の道
- TypeScript スキルを 5 段階で定義し、段階的な学習アプローチとトレーニング方法を提案。Type Challenges への取り組みを推奨。
- JavaScript の Object 比較を変えるか? 新しいプロポーザル proposal-composite とは
- JavaScript の Object 比較課題を解決する proposal-composite 提案。Stage 1 段階で同一 Object 判定を容易化し、完全に immutable な特性を持つ。
- Announcing TypeScript 5.9
- TypeScript 5.9 正式リリース。最小限の tsc —init、import defer、型キャッシュ最適化などを搭載。
- 他言語経験者が知っておきたい TypeScript のクラスの注意点
- 構造的部分型、this 動的振る舞い、アクセス修飾子制限、実行時型情報消失など TypeScript クラスの 4 大注意点。
🤖 Runtimes
- npm CLI v11.5.0
- OIDC(OpenID Connect)を使用したパッケージ公開サポートとエラーメッセージ改善を追加。npm トークンなしでの CI/CD からの安全な公開が可能に。
- The many, many, many JavaScript runtimes of the last decade
- 過去 10 年の JavaScript Runtime 進化を振り返り。エッジコンピューティングからマイクロコントローラまで多様化を解説。
- npm trusted publishing with OIDC is generally available
- OIDC を使用した npm trusted publishing が正式利用可能。GitHub Actions や GitLab CI/CD から安全なパッケージ公開を実現。
- Serena
- LLM を本格的なコーディングエージェントに変える MCP サーバーツールキット。セマンティックコード検索・編集機能を提供。
- Deno のフロントエンド開発の動向【2025 年夏】
- deno bundle コマンド再導入、Deno Deploy EA、Fresh v2 リリース予定、Aleph.js メンテナンス停止など、Deno フロントエンド開発の最新動向。
📝 Specifications
- Define customizable
<select>
- HTML 仕様で select 要素のカスタマイズ性拡張がマージ。新要素 selectedcontent の追加と基本スタイル定義で、CSS でのカスタマイズが可能に。
- First Public Working Draft: CSS Borders and Box Decorations Module Level 4
- CSS Working Group による CSS 枠線とボックス装飾モジュール Level 4 の初回公開草案。corner-shape や border-shape などの新機能を含む。
- Brick by brick: Help us build CSS Masonry
- Chrome 140 で CSS Masonry を実験実装。display: masonry;での初期提供予定で、2 つの構文アプローチを検討中、開発者フィードバックを募集。
- CSS Style Container Queries Range Syntax
- Style Query への Range Syntax 適用により、numeric value を持つあらゆる値で Range Syntax を使える道が開ける。
- Customizable select multiple and listbox
- カスタマイズ可能な select 要素の複数選択版と listbox の Intent to Prototype が提出。
- Vision for W3C
- W3C のビジョンステートメントが正式決定。「Web は全人類のもの」を掲げ、組織の価値観と運営原則を明確化。
- モダンなスクロール関連機能を使いこなそう [CSS Modern Features no.7]
- スクロールバースタイリング、Scroll Snap Events、Container Scroll-State Queries など最新 CSS スクロール機能を解説。
- Item Flow – Part 2: next steps for Masonry
- WebKit が CSS Masonry の実装アプローチとして display: grid と item-flow を組み合わせた提案を説明。
- A Nice Vanilla App Architecture Using Web Components and CSS Module Scripts
- Web Components と CSS Module Scripts を使ったフレームワークフリーのコンポーネントアーキテクチャ。Chrome 限定機能。
- Designing the Built-in AI Web APIs
- Chrome 主導のウェブ AI API 設計課題。プロンプト API、相互運用性、将来性を考慮した標準化アプローチの詳細な考察。
- What’s New in Web UI: I/O 2025 Recap
- Google I/O 2025 の Web UI 新機能。Popover API、Dialog 改善、CSS Anchor Positioning、カスタマイズ可能 Select など。
- W3C updates its Process Document
- W3C プロセス文書更新。Proposed Recommendation 段階削除、Charter Refinement 段階追加で標準化効率化。
🦆 Others
- 大規模なサプライチェーンアタック
- npnjs[.]com というフィッシングサイトによって有名なメンテナがアカウントを乗っ取られた事例。巧妙な手口での攻撃に注意喚起。
- State of HTML 2025 Survey
- Lea Verou 主導の年次 HTML 調査で、新機能の認知度測定とブラウザロードマップへの影響を目指す。
- OSS 貢献を「依頼」から「協力」に変える、Issue とプルリクエストの書き方
- 効果的な OSS 貢献のため、協力的姿勢での Issue と PR 作成方法を解説。minimal reproduction や XY 問題についても説明。
- Celebrating 20 years of MDN
- MDN20 周年記念。14,000 ページの文書と 100,000 人以上の貢献者を誇るウェブ開発リソースの歴史を振り返り。
- ユーザー投稿のコードをブラウザ上で他人が動かせるサービスを作るときのセキュリティについて
- ユーザー投稿コード実行サービスのセキュリティ対策。サンドボックス化とプライバシー保護が重要。
- WCAG コントラスト基準について
- WCAG 1.0、2.0、3.0(APCA)でのそれぞれのコントラスト基準について説明し、LINE ヤフーのブランドカラーにおける課題を説明。
- TPAC 2025 Breakout Sessions 募集開始
- W3C TPAC 2025 の Breakout Sessions 募集が開始。
- さよなら Flaky Test!Devin と共に実現する、CI 安定化への道
- AI(Devin)を活用して Flaky Test の自動検出・修正を実現。CI 成功率向上と開発工数削減を達成。
- zag.js を使った a11y 確保
- 新しいデザインシステムで a11y 確保のために zag.js が使われている事例紹介。
- Simulating Hand-Drawn Motion with SVG Filters
- SVG フィルターで feTurbulence と feDisplacementMap を組み合わせ、手描き風アニメーション効果を作成する技術解説。
- POML: Prompt Orchestration Markup Language
- LLM 向けプロンプトエンジニアリングを構造化する HTML 風マークアップ言語。モジュラーで保守しやすいプロンプト作成を支援。
- モジュラーモノリス導入がもたらした功罪
- hacomono 社の 2 年間のモジュラーモノリス導入経験。20 モジュールまで拡大し、認知負荷の低減などの成果と課題を総括。
- typescript-go API 公開に関する議論
- typescript-go で Go の API が公開されるかどうかについての議論。
- Launching MDN’s New Front End
- MDN フロントエンド完全再構築。UI 改善、新検索モーダル、Lucide アイコン採用でユーザー体験向上。
- State of CSS 2025 Results
- 2025 年度 State of CSS 結果。:has()の認知向上、Cascade Layer の低利用率、Tailwind の継続的な人気などが判明。回答者数は 5,506 名で前年から激減。