Cybozu Frontend Monthly #30
イベント概要
サイボウズフロントエンドマンスリー は、サイボウズ社内で行っているフロントエンド情報共有会「フロントエンドウィークリー」の公開版です。
その月に気になったフロントエンドの情報を、サイボウズのフロントエンドエキスパートチームのメンバーが共有していきます。
このイベントのハッシュタグは #サイボウズフロントエンドマンスリー です。
※フロントエンドウィークリーとは
毎週火曜の 17:00 〜 18:00
で社内向けに行っているフロントエンドの気になる記事を紹介する会です。2016年3月15日から行われています。
ハッシュタグ
#サイボウズフロントエンドウィークリー
で実況しています。
zennのpublicationにてウィークリーのまとめも投稿していますので、ぜひこちらもご覧ください。 https://zenn.dev/p/cybozu_frontend
開催日
2022年12月23日
イベントページ
https://cybozu.connpass.com/event/269123/
メンバー
ゲスト
コンテンツ
上期 (2022/01-2022/06)
リリース
- Release 1.2.0-beta.0 · vercel/swr
- optimistic update が可能に
- vitebook/vitebook: Blazing fast alternative to Storybook.
- Vite をベースにした Storybook 相当のツール
- microsoft/griffel: CSS-in-JS with ahead-of-time compilation ⚡️
- kodansha/eslint-config: Set of KODANSHA ESLint Configurations
- 講談社の ESLint 設定
- Automatic Class Sorting with Prettier - Tailwind CSS
- Tailwind CSS 公式による、クラスをソートする Prettier プラグイン
- microsoft/griffel: CSS-in-JS with ahead-of-time compilation ⚡️
- Microsoft 製 の CSS in JS ライブラリ
- Rome Formatter and Rust Update
- Rome Formatter の VS Code 拡張がリリース
- Announcing TypeScript 4.6 RC - TypeScript
- 社内では Control Flow Analysis for Destructured Discriminated Unions が話題になった
- Unlighthouse - Scan your entire website with Google Lighthouse | Unlighthouse
- Lighthouse を利用した UI 付きのスキャンツール
- Blog - Next.js 12.1 | Next.js
- On-demand ISR や、SWC 導入など
- unocss/unocss: The instant on-demand atomic CSS engine.
- Atomic CSS を Tailwind などとは違うアプローチで実装したもの
- 解説記事: Reimagine Atomic CSS
- Ultra: The Quest for Zero-Legacy
- Deno の React フレームワーク
- Announcing TypeScript 4.7 Beta
- Nuxt 3 Release Candidate
- 4/20 に nuxt3 の rc 版をリリースするリリース予告
- reduxjs/react-redux v8.0.0
- react-redux v8 リリース
- vercel/swr v2.0.0-rc.3 -SWR v2 リリース
- Playwright v1.22.0
- React・Vue のコンポーネントテストや aria 属性の取得などの機能が盛り込まれた
- storybookjs/storybook v6.5.0
- Interaction のテストがブラウザ上できるテストランナーや Storybook と連携できる Figma plugin 等
- typescript-eslint/typescript-eslint v5.26.0
- typescript-eslint v5.26.0 リリース
- lerna/lerna v5.0.0
- lerna、Nx に管理が委譲されてから初のアップデート
- Prettier 2.7: new —cache CLI option and TypeScript 4.7 syntax!
- Prettier 2.7 のリリースブログ
- Astro 1.0 Release Update | Astro
- Astro v1.0.0 のリリースが 7 月下旬ごろになるそう
ブラウザ関連
- Firefox 96.0, See All New Features, Updates and Fixes
- Firefox で
<dialog>
が ship された
- Firefox で
- Introducing the Dialog Element | WebKit
- モダンブラウザで一通り
<dialog>
が実装された - Firefox での ship: Intent to ship: HTML
- モダンブラウザで一通り
- Welcome to Wolvic
- Igalia による、Firefox Reality をフォークした VR フォーカスブラウザ
- Inspect and debug CSS flexbox layouts - Chrome Developers
- Chrome DevTools の CSS Flexbox のデバッグツールについて
- Chrome and Firefox soon to reach major version 100
- Chrome と Firefox のバージョンが 100 に到達することでの影響
- Taming CSS Variables with Web Inspector | WebKit
- Safari で CSS Variables のデバッグができるように
- Microsoft Edge dual-screen web APIs - Surface Duo Blog
- デュアルスクリーン用の Web API について
- 関連して、レスポンシブ対応の実装方法を紹介する記事: Building Web Layouts For Dual-Screen And Foldable Devices — Smashing Magazine
- Announcing Interop 2022 - Mozilla Hacks - the Web developer blog
- ブラウザの相互運用指標について
- メジャーブラウザがどの程度準拠しているかのダッシュボードページ: web-platform-tests dashboard
- New WebKit Features in Safari 15.4 | WebKit
<dialog>
サポートや lazy-loading、:has()
など
- What’s New In DevTools (Chrome 100) - Chrome Developers
- Chrome が バージョン 100 に到達。DevTools の改善などを含む
- Microsoft Internet Explorer 11.0 および Firefox のサポート終了について - PayPay 銀行
- Cookies Having Independent Partitioned State (CHIPS) origin trial - Chrome Developers
- Cookie を分割して保存する sandbox の提案
- Appears to say: Microsoft Edge now provides auto-generated image labels
- MS Edge で Alt を自動生成する話
- #100CoolWebMoments
- Chrome 100 までの思い出
- Intent to Ship: Media Queries Level 4 Syntax & Evaluation
- メディアクエリの条件式がより直感的に書けるようになった
- Intent to Experiment: Remove clamping of setTimeout(…, 0)
setTimeout(fn, 0)
は今まで 1ms 扱いになっていたが、標準に合わせて 0 としてすぐコールバックされるように。
- Intent to Ship: Subresource Loading with Web Bundles
- サブリソースを WebBundle して fetch で一括ロードする仕組み
- Intent to Ship: Navigation API
- History API の改善版
- Intent to Ship: Speculation Rules (Prefetch)
- このページは Prefetch しておいてね、って Declarative に定義する API
- How do modern frameworks perform on the new INP metric
- INP という新しいパフォーマンスの指標の話
- Don’t fight the browser preload scanner
- 重要なリソースの発見を遅らせるような処理は preload scanner と相性が悪く、かえってパフォーマンスが落ちることがあるので気をつけようねという記事
- A New Definition of HTTP
- HTTP 関連 RFC がどばっと公開されました
- News from WWDC22: WebKit Features in Safari 16 Beta
- Safari 16 Beta がきますという記事
- Customizing Color Fonts on the Web
@font-palette-values
が Safari 15.4 以降でサポートされたカラーフォントに関しての記事
- IE11 とさよならしたら全力で使える HTML/CSS まとめ【40 個以上】
- IE11 のサポートを考えなくて良くなった場合に使えるようになる HTML, CSS のまとめ
イベント
- Remix Conf — May 2023
- TechFeed Conference 2022 で React の useEvent について話した
- koba さんが TechFeedConference で登壇した内容のブログ
- React でアプリケーションを構築する多様化
- sakito さんが TechFeed Conference で登壇した資料
- アクセシビリティツリーを読む
- コパさんが TechFeed Conference で登壇した資料
- Web at I/O 2022
- Google I/O 2022 のアーカイブ動画
- Remix Conf
- Remix のカンファレンス
- State of Vuenion
- Vue Amsterdam での Evan you の発表資料
- HTTP RFC Publication Study
- 複数人の方で公開された RFC の内容をキャッチアップするイベント
OSS 関連
- Infinite loop causing Denial of Service in colors · GHSA-5rqg-jm4f-cqx7 · GitHub Advisory Database
- faker.js と color.js の開発者が自身が意図的にコード上に無限ループを含む改変を行った
- 関連記事
- その後 fork され、コミュニティベースでのメンテナンスになった: An update from the Faker team | Faker
- Pico.css • Minimal CSS Framework for semantic HTML
- Semantics HTML を対象にした、独自クラスなどに頼らない CSS フレームワーク
- 翻訳: Prettier はメンテナーへの報酬の支払いを始めます
- Prettier への寄付金から、一部をメンテナーに対して報酬として支払うことを決定
- React を取り巻く状態管理の潮流を学ぼう。Hooks や Server Components などの登場で何が変わるか - エンジニア Hub | Web エンジニアのキャリアを考える!
- Breaking change with import via CommonJS in
2.5.0
· Issue #896 · webpack-contrib/mini-css-extract-plugin - Ubie で利用しているアイコンを npm パッケージとして公開しました!
- lib: add fetch by targos · Pull Request #41749 · nodejs/node
--exprimental-fetch
を付与することでfetch()
が利用可能に (後の v18 以降はフラグは不要)
- Node.js Trademarks Transferred to OpenJS Foundation - OpenJS Foundation
- Node.js の商標が OpenJS Foundation へ移った
- A deep-dive on Vite featuring Evan You (JS Party #212) |> Changelog
- Vite 作者 Evan you がゲスト出演し、Vite などについて語っている PodCast
- Revalidating options of SWR. SWR is a React Hooks for data fetching… | by Toru Kobayashi | Medium
- SWR で間違えやすいオプションについて
- https://github.com/facebook/jest/pull/12546
- Jest で
--shared
オプションの追加。それにより、Jest 自体のテストも 18 分 →3 分になった - https://twitter.com/cpojer/status/1500276672045543424
- Jest で
- Open Prioritization | Igalia - Open Source Consultancy and Development
- igalia の個々の機能開発に関しての Cloud Founding
- jest-light-runner
- jest のランナー。vm での isolation なしで実行するので速い。
- Introducing Ladle
- Vite をベースに使用した Storybook のようなツール
- Figma plugin beta
- storybook の Figma プラグインが出た
- Master Styles
- CSS のスタイリングを全て class 名で完結させる軽量の CSS ライブラリ
- [docs: Japanese translation v0.1 - still needs brush-up(https://github.com/eslint/eslint.org/pull/193)
- eslint の日本語翻訳プロジェクトが進行中
- alphacep/vosk-api
- オフラインで使える音声認識ライブラリ。node でも使える
- Automatic pnpm v7 Support
- Vercel で pnpm の v7 がサポートされた
- Meta Open Source is transferring Jest to the OpenJS Foundation
- Jest が Meta から OpenJS Foundation に移管された
- Free Open Source Tailwind CSS Components | HyperUI
- Tailwind CSS のオープンソースコンポーネント集
- TypeScript 4.8 Iteration Plan
- TS4.8 に入りそうな機能
- Layouts RFC | Next/js
- Next.js の Layouts の RFC が出た
- Synchronizing with Effects
- React Docs(新しい方)に Effects のドキュメントが追加
- nvh95/jest-preview
- testing-library で実装したテストがどのように動いているか視覚的に確認できるツール
- Astro on Netlify Edge Functions
- Astro で Netlify の Edge Functions が使える話
- feat: create “@eslint-community GitHub organization” RFC
- eslint-community org を作ってナガシマさんのリポジトリ等のメンテを引き取ろうという提案が進行しているようです
- Headless UI v1.6, Tailwind UI team management, Tailwind Play improvements, and more
- Tailwind CSS のチームが最近行ったことまとめ
- Vue “vapor” - an experimental, Solid.js-inspired compilation strategy.
vue/vapor
というライブラリが Vue Amsterdam で発表されました。
- Bringing forward the End-of-Life Date for Node.js 16 | Node.js
- Node.js v16 の EOL が 当初の予定より 7 ヶ月早まり 2023/9/11 になるとのこと
- Component Encyclopedia
- さまざまなプロダクトの StoryBook コンポーネントを見れる Component Encyclopedia がアップデートされた
その他
- Patterns.dev - Modern Web App Design Patterns
- フロントエンドにおけるデザインパターンの解説
- 和訳: フロントエンドのデザインパターン
- 最高裁無罪判決のご報告|モロ| note
- 通称 Coinhive 事件について、最高裁で無罪判決が出た
- The WHATWG Blog — Newline normalizations in form submission
- FormData の扱い&標準化について
- How we migrated 541 components from Styled Components to Emotion with zero bugs
- Storybook において、Styled Components から Emotion へバグなしで移行した話
- Form Validation Using JavaScript’s Constraint Validation API
- HTML form validation の実装方法についての記事
- 25 年に渡る JavaScript の歴史 | JetBrains: プロデベロッパーとチーム向けの開発ツール | JetBrains: Developer Tools for Professionals and Teams
- Jet Brain による、JavaScript の歴史をまとめた Web ページ。1996 年の誕生から始まる。
- CSS in 2022 – Bram.us
- 2022 年に入りそうな CSS 機能のまとめ
- Breaking change with import via CommonJS in
2.5.0
· Issue #896 · webpack-contrib/mini-css-extract-plugin- webpack 経由で ESM→CJS の互換性問題で Create React App が動作しなくなった問題
- Replit - Ace, CodeMirror, and Monaco: A Comparison of the Code Editors You Use in the Browser
- JavaScript で動作するブラウザ上のエディタ Ace, CodeMirror, Monaco の比較
- CSS Fingerprint
- CSS のみで Fingerprint を実現する方法についての考察記事
- CSS Speedrun | Test your CSS Skills
- 実際に入力できる、CSS のクイズページ。全 10 問で時間を計測できる
- The Big Web Almanac Quiz
- 2021 年度の Web Almanac の内容をベースにしたクイズページ
- Monorepo Explained
- Monorepo の解説やツールの比較
- The Focus-Indicated Pseudo-class :focus-visible | WebKit
:focus-visible
についての解説記事
- 100 万行の大規模な JavaScript 製システムを TypeScript に移行するためにやったこと | CyberAgent Developers Blog
- 【重要】欧州などからご利用のお客様へ - Yahoo! JAPAN
- Yahoo! JAPAN が GDPR の影響から EEA および イギリスで利用不可になった。
- Here’s what I didn’t know about :where() - Manuel Matuzović
- CSS における
:where
の使い所について。ブラウザのデフォルトスタイルの打ち消しや、種類に応じた入力フォームへのスタイリングなど。
- CSS における
- How Prime Video updates its app for more than 8,000 device types - Amazon Science
- Amazon Prime Vide での Wasm の利用事例
- GitHub 傘下の npm、上位 100 のパッケージメンテナは 2FA 必須に - ITmedia NEWS
- Building UI Components With SVG and CSS - Ahmad Shadeed
- SVG と CSS のみで UI コンポーネントを構築する方法についての記事
- JavaScript で parseInt / parseFloat を使わない方が良い理由
- parseInt に関するツイートを受けて、挙動に関しての解説と推奨される方法の紹介
- Atomic Design and Storybook | Brad Frost
- Atomic Design と Storybook について掘り下げた記事
- Structuring your Storybook
- Storybook の活用事例紹介
- Design system versioning: single library or individual components? | Brad Frost
- Design System Component を単一パッケージにするか個別パッケージにするかについて、それぞれの Pros/Cons など
- The Perfect Storm: How Redux DevTools broke Jira for 14 hours | Nathan Bierema’s Blog
- Redux DevTools の挙動によって、Jira が表示不可になった問題について
- Yes, I can connect to a DB in CSS
- CSS Houdini を利用して、CSS から SQL を実行してみた記事
- Component Encyclopedia | Storybook
- Storybook を利用したコンポーネントカタログや Design System の公開されている事例一覧
- Include diagrams in your Markdown files with Mermaid | The GitHub Blog
- GitHub のコメントで Mermaid によるグラフを描画機能が追加された話と、どう動作してるか
- ヤフーの IE11 サポート終了の進め方 - Yahoo! JAPAN Tech Blog
- 正規表現の脆弱性 (ReDoS) を JavaScript で学ぶ
- 正規表現における検索コストによる脆弱性(ReDoS)について
- Hello, CSS Cascade Layers - Ahmad Shadeed
- CSS Cascade Layers についての解説記事
- antfu/vscode-file-nesting-config: Config of File Nesting for VS Code
- VSCode 上で config 系や dotfiles などをまとめてくれる拡張。作者は Anthony Fu
- A new year, a new MDN - Mozilla Hacks - the Web developer blog
- MDN のデザインが刷新
- Monorepos are changing how teams build software – Vercel
- Vercel による Monorepo と Turborepo に関する記事
- FEE チームの nus3 からも Monorepo に関しての記事が出ている
- Headless components in React and why I stopped using a UI library for our design system | by Nir Ben-Yair | Medium
- UI Library の利用をやめて、Headless Component に移行した話
- 利用したのは Radix UI とのこと: Primitives – Radix UI
- Big images, blazingly fast
- アムステルダム国立美術館の Web サイトを新しくするときに行ったフルスクリーン画像の最適化について
- Open Web Advocacy
- オープンな Web を目的とする団体が立ち上げられた
- Web Animation Performance Fundamentals – How to Make Your Pages Look Smooth
- Web アニメーション実装時にパフォーマンス面において考慮すべき点を、コード付きで解説した記事
- The selectmenu HTML Tag | CSS-Tricks - CSS-Tricks
- スタイリング可能な
<select>
にあたる、<selectmenu>
についての話
- スタイリング可能な
- How Storybook helps designers & developers stay in sync
- Storybook 上でデザイナーと開発者がコラボレーションするためのツールや手法の解説
- Front-end Testing Strategy | by Alexis Regnaud | Medium | ITNEXT
- フロントエンドのテスト戦略について。なぜテストを書くのか、どういったテストが存在するのか
- A Proposal For Type Syntax in JavaScript - TypeScript
- ECMAScript 上での型サポートについて、TypeScript から Stage 0 proposal が提出された
- Web 開発者の悩みの種ランキング(2021 年版) | POSTD
- 開発者が知っておきたい「XSS の発生原理以外」の話 - Flatt Security Blog
- XSS で “アラートが出た!” の向こう側として、実際どういった被害になるのかなどについて解説
- ロシア情勢が Web / Internet / Tech に与えた影響の記録 2022 年 3 月
- Chromium Blog: How Chrome Became the Highest Scoring Browser on Speedometer, Ever
- Chrome が Speedmeter で最高スコアを出すまでの話
- An update on the New Architecture Rollout · React Native
- CSS-Tricks joins DigitalOcean, expanding our commitment to community
- DigitalOcean が CSS-Tricks を買収した。
- 主要ブラウザで使える!CSS Cascade Layers で新しい CSS 設計の手法を考える
- Chrome、Firefox、Edge、Safari の最新版で導入された Cascade Layers の解説記事
- Remix Stacks
- Remix で CICD、データベース、ユーザー認証を含んだアプリケーションが簡単に構築できるセットのようなもの
- Colors that make sense
- 色の命名規則についての話
- Windows High Contrast Mode, Forced Colors Mode And CSS Custom Properties
- メディアクエリの forced-colors の紹介
- When Try-Catch Doesn’t Catch Errors in Node.js
- Node.js で EventEmitter 利用時に try-catch で catch できないケースの話
- Operator Lookup
- JS の演算子の名前なんだっけなってなったらこちら
- Amazon Kindle UI is switching from Java to React Native
- Kindle の UI が新しく ReactNative で実装された話
- TypeScript 解読アシスタント
- TS のあれこれがなんだっけなってなったらこちら
- AWS Lambda 関数 URL: Lambda 関数用の組み込み HTTPS エンドポイント
- AWS Lambda が 単体で HTTPS エンドポイント生やせるようになった
- Understanding Layout Algorithms
- CSS のプロパティの値を理解するだけでなく、レイアウトアルゴリズムを理解するのも大事だよって記事
- When or If
- CSS の条件構文の標準化の話し合いで
@if ~ @else
にするか@when ~ @else
にするかでわちゃわちゃしてる話。
- CSS の条件構文の標準化の話し合いで
- Doing It All With Deno
- クライアントサイドからサーバーサイドまで全てを Deno で作ってみよう
- Introducing DuckDuckGo for Mac: A Private, Fast, and Secure Browsing App
- プライベートで高速らしいブラウザ DuckDuckGo for Mac のベータ版がリリース
- なぜ我々は session.cookie を変更しなければならなかったのか
- Public Suffix List への追加とそれによって起きた障害?についての話
- Security alert: Attack campaign involving stolen OAuth user tokens issued to two third-party integrators
- Heroku と Travis CI から OAuth のアクセストークンが流出、npm などのプライベートリポジトリに対して不正アクセスが発生した
- 350 行でつくる Vite⚡
- Vite の仕組みをざっくり理解するのに良さそう
- Announcing D1: our first SQL database
- CloudFlare から D1 リリースのお知らせ
- A Community Group for Web-interoperable JavaScript runtimes
- CloudFlare,Vercel,Shopify と Node.js,Deno のコアコントリビューターで Web-interoperable Runtimes Community Group を設立。
- State of CSS 2022
- 最近の CSS について一気に紹介されているまとめページ
- What’s new for the web platform
- Web API や CSS の情報まとめ
- Bringing Adobe’s Creative Cloud to the web: Starting with Photoshop
- Photoshop の Web 版を作った話
- Hotwire の良かった点、辛かった点、向いているケース、向いていないケース
- Rails の Hotwire の話。つらみがにじみ出ている
- A New Hope for Object Storage: R2 enters open beta
- S3 互換な CloudFlare の object storage
- JavaScript Containers
- Node.js や Deno の Original Author である Ryan Dahl が書いた、JavaScript が Universal Language になってきているという話
- Hydration is Pure Overhead
- SSR したとき Client Hydration がムダという問題を解決するアプローチとして、イベントハンドラの JS を遅延読み込みするライブラリを開発した話
- Introducing inert
- クリックやフォーカス、支援技術を使ったユーザー操作から無視されるようになる inert 属性の紹介
- Astro projects can now be deployed with zero configuration
- ゼロコンフィグで Vercel に Astor がデプロイできるようになった
- Migrating millions of lines of code to TypeScript
- Stripe が 370 万行の Flowtype を TypeScript に変換した話
- RedwoodJS を Ruby on Rails と比較してみる
- RedwoodJS と Ruby on Rails の比較記事
- The Surprising Truth About Pixels and Accessibility
- px と rem/em どっち使う?という話
- Roboto … But Make It Flex
- Google Fonts に Roboto Flex という新しい Variable Fonts が追加されました。
- Building a button component
- ダークモード・ライトモードや a11y を意識したボタンコンポーネントの作り方について
- Web 技術解体新書「第二章 Cache 解体新書」リリース
- Jxck さんによる Cache を解き明かした Zenn book
下期 (2022/07-2022/12)
リリースなど
- Browserslist 4.21 で IE11 が “dead” に追加され、デフォルトブラウザ一覧から外された
- Tailwind CSS から React, Next.js で作られた template がリリース
- Nuxt v3 のリリースが延期
- Vite 3.0.0-beta
- Fresh 1.0
- Deno からでた full stack web framework。クライアントサイドは Preact。Astro と同じ Island アーキテクチャを採用。
- Next.js 12.2
- TanStack Table v8
- Prisma v4
- Deno Deploy Beta 4
- Deno が始めた Deno 向けのエッジコンピューティングサービス「DenoDeploy」。
- Visual Studio Code June 2022
- Announcing TypeScript 4.8 Beta - TypeScript
- unknown の型の定義が厳格に。
- Vite 3.0 is out! | Vite
- ドキュメントが刷新。
- 開発用サーバーのポート番号の変更。
- サポートブラウザバージョンの変更など。
- Release v1.24.0 · microsoft/playwright
- describe の title なしが可能になって、Component Test に使用できる beforeMount と afterMount が追加。
- Announcing Docusaurus 2.0 | Docusaurus
- MDX が利用できるようになったり、プラグインが作れるようになったり、なぜこのタイミングで 2.0 になったか、また 3.0 ではどのようなことをするかが紹介。
- Release astro@1.0.0-rc.1 · withastro/astro
- Storybook 7.0 design sneak peek
- Storybook7.0 の紹介。
- ツールバーが新しくなる。
- 7.0 からは Storybook があらかじめバンドルされる。
- バンドルサイズを削減するための依存関係の見直し。
- Storybook7.0 の紹介。
- Astro 1.0 | Astro
- 画像の最適化や MDX のサポート、Vite の 3.0 の採用などが新しく含まれる。
- npm v8.16.0 で npm query が追加
- Release 3.0.0-alpha.0 · prettier/prettier
- 影響が大きそうな breaking change として
- trailingComma のデフォルト値が “all”。
- Node.js の最低要件が v14。
- 影響が大きそうな breaking change として
- Rollup v3
- React Router 6.4 Release | Remix
- Announcing TypeScript 4.9 Beta - TypeScript
- as よりも強力に型推論してくれる satisfies operator の追加
- in operator による型の絞り込みがより使いやすくなった
- NaN との直接比較がエラーになる
- Astro 1.4.0 Release | Astro
- Volar 1.0 “Nika” Released! | The Vue Point
- ESLint v8.25.0 released - ESLint - Pluggable JavaScript Linter
- Release v1.27.0 · microsoft/playwright
- Gatsby v5 Alpha is Here (and it’s Pretty Exciting!) | Gatsby
- Blog - Next.js 13 | Next.js
- app ディレクトリによる Layouts や Server Components の利用や、Data Fetching 周りで変更などが含まれます。加えて、Alpha 機能として ビルドに Turbopack が利用可能になっています。
- Release v3.0.0 · vuetifyjs/vuetify
- Announcing TypeScript 4.9 RC - TypeScript
- Turborepo 1.6 – Turbo
- Introducing SolidStart
- SolidJS のフレームワークの SolidStart が beta に
- Announcing Rome v10
- Rust で rewrite してから初めての stable リリース
- Deno 1.28: Featuring 1.3 Million New Modules
- Deno で npm パッケージを stable に使えるようになった
- Release Notes for Safari Technology Preview 158 | WebKit
ブラウザ関連
- CSS Working Group の W3C のドキュメントで web-platform-tests の状況が分かりやすくなった
- Webkit が Github に移行
- Blink: Intent to Ship: fetch() upload streaming
- Chrome 105 で fetch() upload streaming が ship。
- 今ままで WebRTC とかでやっていた stream が fetch で扱えるように。
- Help pick a syntax for CSS nesting - Chrome Developers
- CSS をネストさせる際にどのような構文がいいかを Chrome でアンケート。
- Chromium Blog: Chrome 104 Beta: New Media Query Syntax, Region Capture, and More
- Chrome 104 で実装される機能などのまとめ。
- :has(): the family selector - Chrome Developers
- Chrome 105 で新しく追加される CSS の疑似要素
:has()
の紹介記事。 :has()
が適用される要素が特定のセレクターを持つ子要素を含んでいるかを判別することができる。
- Chrome 105 で新しく追加される CSS の疑似要素
- @container and :has(): two powerful new responsive APIs landing in Chromium 105 - Chrome Developers
- Chrome 105 で新しく追加される
@container
クエリと上述されているhas()
の紹介記事。
- Chrome 105 で新しく追加される
- Intent to Ship: CSS ‘ic’ Length Unit
ic
という新しいサイズ指定単位の話。- “水”という漢字一個分の横幅を
1ic
と定める。
- Finer grained control over CSS transforms with individual transform properties
- 主要 3 ブラウザに
transform
プロパティを個別で指定できる機能が実装。
- 主要 3 ブラウザに
- An Update On Chrome’s Web Framework Funding for 2022 - Chrome Developers
- Chrome がパフォーマンスやユーザー体験、開発体験を向上させるプロジェクトに対して Open Collective を通して 50 万ドルの寄付。
- 対象のプロジェクトは Nuxt.js や Vue.js、Vite、Astor、Svelte、Preact、ESLint、Rollup など。
- Chromium Blog: Chrome 106 Beta: New CSS Features, WebCodecs and WebXR Improvements, and More
- Performance insights: Get actionable insights on your website’s performance - Chrome Developers
- Chrome DevTools の Performance insights の機能について。
- Trusted Types が working draft に
- 型レベルで特定の validator を通ったことを保証できる。XSS などを防ぐのに有用
- Help pick a syntax for CSS nesting survey results - Chrome Developers
- CSS のネストの仕様について
- Dialogs, modality and popovers seem similar. How are they different? | hidde.blog
- Intent to Experiment: CSS Initial Letters
- CSS で先頭の文字だけ大きくするやつの Experiment が Chrome で開始した。
- agendas/11.md at main · tc39/agendas
- TC39 のミーティングに向けたアジェンダが公開されてる。Stage3 の文法に対する議論や Stage3 へ上げる議論が結構ある。
- setTimeout を完璧に理解する
- setTimeout の仕様や挙動について各ブラウザやランタイムでの比較を交えながら詳しく解説している記事
- Revamp of MDN Web Docs Contribution Docs - Mozilla Hacks - the Web developer blog
- Container queries are enabled on latest @FirefoxNightly
- Add position for WebMIDI (Add-On Gated) by bholley · Pull Request #704 · mozilla/standards-positions
- An iframe whose history can be transferred across parent navigations · Issue #8538 · whatwg/html
- 画面遷移しても消えない(リセットされない) iframe の提案
イベント
- ViteConf
- Vite のオンラインカンファレンスが 10/11-12 で開催。
- Next.js Conf 2022
- Vue Fes Japan Online 2022
OSS 関連
- Deno が 2100 万ドルを調達
- ESLint のサイトがリデザイン
- V8 チームの RegExp v フラグについての記事
- snowpack のメンテナンスが終了
- Remix でのデータの流れの解説
- SWC plugin を作成し、 Next.js に導入する方法
- Svelte での GraphQL 体験を最高にする KitQL + Houdini 構成について
- React コアチームの dan が React での CSS について回答してたまとめ
- Jest でテストを分割して実行できる—shard オプションについて
- Bun — fast all-in-one JavaScript runtime
- 新しい JS ランタイムとして Bun がリリース。
- edge で動くことを想定。
- バンドラー、トランスパイラー、パッケージマネージャーを含む。
- Bun 内部は ESM。
- npm パッケージが利用できる。
- TS, JSX がトランスパイルできる。
- SQLite クライアントがビルトイン。
- Jest ライクのテストランナーがビルトイン。
- Synchronizing with Effects
- React Docs BETA に記載されている useEffect についてのページ
- Hermes as the Default · React Native
- React Native 0.70.0 から JS エンジンのデフォルトが Hermes になる。
- 以前のバージョンと比べてどの程度速くなるかの比較の解説もある。
- Next.js はどうやってスクロール位置を復元するのか
- Next.js の実験的なオプション scrollRestoration に関しての記事。
- Chrome/Safari などでの挙動の差異などについても説明されている。
- Say no to Tailwind, embrace plain CSS - DEV Community 👩💻👨💻
- Tailwind CSS の採用の是非を議論している記事。
- aidenybai/million: Virtual DOM into the future! 🔟🔼6️⃣
- ライブラリに依存しない軽量な VirtualDOM。
- Vercel がスポンサーをしている。
- remix/streaming.md at deferred · remix-run/remix
- Remix の deferred api についてのドキュメント。
- React 18 の Suspense を使用する際に起こるデータの流れとそのソリューションについての解説も合わせられている。
- ronami/HypeScript: 🐬 A simplified implementation of TypeScript’s type system written in TypeScript’s type system
- TypeScript の型システムを TypeScript の型システムで実装したリポジトリ。
- React Server Components の仕組み:詳細ガイド | POSTD
- tc39/proposal-object-pick-or-omit: Ergonomic Dynamic Object Restructuring.
- Stage 1 になった Object に対して omit と pick ができるようになる proposal。
- Next.js の Layout RFC がどのように動くかのデモ
- Next.js の Layouts RFC を使った挙動を動画付きで紹介。
- ESLint’s new config system, Part 2: Introduction to flat config - ESLint - Pluggable JavaScript Linter
- ESLint が flat config と呼ばれる新しい設定方法を紹介。
- RFC: Reduce API fragmentation across platforms by necolas · Pull Request #496 · react-native-community/discussions-and-proposals
- React Native の API を Web 標準に準拠させる活動を進めている。
- Big Changes Ahead for Deno
- Deno が npm との互換性に対応する方針を発表。
- ankitpokhrel/jira-cli: 🔥 [WIP] Feature-rich interactive Jira command line.
gh
のような Jira 用の CLI。
- deno-ja | Deno Japan Users Group
- Deno の日本コミュニティ。
- experimental_use(promise) by acdlite · Pull Request #25084 · facebook/react
- React に promise に関する内部 api が実装される予定。
- Prisma OpenTelemetry tracing で Prisma のボトルネックを追う
- sakofchit/system.css: A design system for building retro Apple interfaces
- 昔の Mac 風 UI を再現できる CSS。
- tailwindlabs/tailwindcss-forms
- 上書きも容易な tailwind 用の form plugin。
- Apple joins the Open Web Docs Steering Committee - Open Collective
- React Docs BETA に新しいドキュメントが追加
- Tailwind 考 - uhyo/blog
- Bucketeer - Feature Flag Management and A/B Testing platform
- CyberAgent 製の A/B テスト用プラットフォームが公開されました。
- The Unicode Blog: Announcing ICU4X 1.0
- 主要デバイスや OS に組み込まれる国際化ライブラリ ICU の派生版として、ICU4X の stable リリースが公開されました。
- Improving the accessibility of our Next.js site – Vercel
- Next.js Conf の登録サイトにおいて、具体的に実施されたアクセシビリティ施策について。
- Framework reimagined for the edge! - Qwik
- パフォーマンスに特化し、エッジランタイム上での動作も考慮された Web フレームワーク。
- RFC: File System-Based Native Routing with Expo and React Native | by Evan Bacon | Exposition
- Expo と React Native において、Next.js のような ファイルシステムベースのルーティング機能が RFC として提案されました。
- substack パッケージのサルベージが始まってる
- 多くのパッケージが依存するパッケージを作成していた substack が gituhub のリポジトリを削除してしまっていたが、そのサルベージが始まっているよという話
- Introducing OG Image Generation: Fast, dynamic social card images at the Edge – Vercel
- vercel が HTML/CSS から SVG の OGP 画像を生成するツールを公開。 内部的には RN の layout engine である Yoga を利用している
- Example Showcase - Tailwind CSS
- Taliwind CSS を実際に使用している Web サイトを紹介するページ(Showcase)ができた
- whyframe
- iframe でコンポーネントのレンダリングをするライブラリ。iframe 内部はスタイルなどが独立できるのでデザインシステムの用例集にような使い方で便利そう
- Add no-nested-components ESLint rule by eps1lon · Pull Request #25360 · facebook/react
- Ten Years of TypeScript - TypeScript
- [Draft RFC] First-class support for promises and async/await · Discussion #2 · reactwg/server-components
- reactwg/server-components
- First-class Vite support in Storybook
- First Batch of Color Fonts Arrives on Google Fonts - Material Design
- Google Fonts にカラーフォントが登場!
- Tailwind CSS v3.2 Beta 2 · Discussion #9574 · tailwindlabs/tailwindcss
- Future of this library · Issue #558 · testing-library/playwright-testing-library
- testing-library like のクエリについて playwright-testing-library に作られた issue。testing-library と playwright で実装されたものの差分や playwright-testing-library をどうしていくかなどについて議論されている
- Randoma11y - Accessible color combinations
- アクセシブルな配色をランダムで生成してくれるツール
- marcj/TypeRunner: High-performance TypeScript compiler
- shadcn/taxonomy: An open source application built using the new router, server components and everything new in Next.js 13.
- Next.js 13 の機能をフルに利用したサンプルリポジトリ。
- React がネイティブの fetch を patch しようとしてる話
- Next.js や React で fetch を独自拡張している話
- Goodbye, Alexa. Hello, Cloudflare Radar Domain Rankings
- ウェブサイトのアクセス数のランク付けする Alexa traffic rank が、2022/5 にサービスを終了したが、それに相当するものを Cloudflare が公開した。
- shadcn/taxonomy: An open source application built using the new router, server components and everything new in Next.js 13.
- Complete rewrite of ESLint · Discussion #16557 · eslint/eslint
- ESLint は歴史的経緯から古い記法などが残っており辛い部分が増えてきたので、完全な書き直しを行なっていきたいという提案。いろいろな要望や提案が盛り込まれている。
- endojs/Jessie: Tiny subset of JavaScript for ocap-safe universal mobile code
- adobe/fetch: Simplified HTTP/1(.1) and HTTP/2 requests with Server Push Support
その他
- Defensive CSS
- 動的なコンテンツによってレイアウトが崩れないような CSS の実装方法のまとめ
- Cloudflare Workers と Zaraz を使ってサードパーティツールを安全に実行する
- Vercel の Edge Functions を local で動かす
- Vercel の Edge Functions が Cloudflare Workers で動いてる
- Amplify UI - Build UI fast with Amplify on React
- Amplify が公開している UI コンポーネントライブラリ
- ✨Style Queries | Una Kravets Online✨
- 特定のスタイルが当たっていてる要素を selector にできる機能の提案
- Cascade Layers – There’s a Polyfill for That! | OddBird
- 作成した Cascade Layer の Polyfill について、できることできないことなどのまとめ
- Min-Max-Value Interpolation
- サイズの最大最小とそれに対応する viewport サイズを入力すると clamp の値を計算してくれるサイト
- SPAs: theory versus practice | Read the Tea Leaves
- Osaka (Japan) is now available on the Edge Network – Vercel
- Vercel の Edge Network に大阪リージョンが追加。
- Using Grids in Interface Designs
- グリッドを使ったデザイン・レイアウトに関して、どういった種類が存在するかや、それらの実例、注意点などのまとめ。
- 8px の倍数を意識するとよいとのこと。
- vercel-labs/react-on-the-edge: Server-rendered React using Vercel Edge Functions.
- Vercel の Edge Functions 上で React コンポーネントを SSR するサンプルコード。
- Flutter 前史: Chrome が Flutter になるまで
- Flutter 開発者の動画をもとに内容を翻訳・解説している記事。
- Building Interoperable Web Components That Work | CSS-Tricks - CSS-Tricks
- React で Web Component を動かすための方法についてのまとめ。
- The Cost of Consistency in UI Frameworks - DEV Community 👩💻👨💻
- SolidJS の作者の人が書かれた記事で、React, Vue, Svelte, SolidJS で状態を更新する同じような処理を実装すると、それぞれで異なる挙動をする話。
- How to animate multiplayer cursors - Liveblocks blog
- マウスカーソルを動かすようなアニメーションの実装方法
- Can I DevTools?
- 各ブラウザの Devtool 対応機能の一覧。
- Testable Frontend: The Good, The Bad And The Flaky — Smashing Magazine
- フロントエンドのテストがなぜ難しいのか、どのように関心を分離してテストを書いていくといいのかについて考察している記事。
- LINE MUSIC のパフォーマンスを向上させた Vue3 マイグレーション
- LINE MUSIC Web 版がフロントエンドフレームワークを Vue.js v2 から v3 へマイグレートしてパフォーマンスが上がった話。
- Enhanced geolocation information for Vercel Functions – Vercel
- Vercel Functions でクライアントの public IP をもとにクライアントの位置情報を生成して origin へフォワードできるようになった話。
- New patterns
- web.dev の patterns(コードのスニペット集)にコンポーネント、アニメーション、テーマの新しいパターンが追加。
- Style with Stateful, Semantic Selectors
- aria 属性の selector を使ったステートフルなスタイルの定義方法
- Protocol Buffers, GraphQL Schema, Swagger Spec で始めるスキーマファースト開発入門 | KINTO Tech Blog | キントテックブログ
- 各スキーマへの変換について利用できるツールや対応状況などのまとめ。
- gRPC がフロントエンド通信の第一の選択肢になる時代がやってきたかも? | フューチャー技術ブログ
- ブラウザから RPC サーバを呼び出す TypeScript ファーストサポートなライブラリである connect-web がリリース。
- Designing A Better Back Button UX — Smashing Magazine
- 戻るボタンの UX についてのまとめ。
- JavaScript のクロージャーと for 文の let 初期化の例外
- 消費者操る「ダークパターン」 国内サイト 6 割該当: 日本経済新聞
- ユーザーを騙すような UI/UX は「ダークパターン」と呼ばれており、最近増加傾向にあることから海外などでは規制の対象になり始めている。
- Deceptive Design - user interfaces crafted to trick you
- Learn Postgres at the Playground
- WASM 上で PostgreSQL が動くような playground を実装した。
- PHP と SQLite を WebAssembly 化し、Web ブラウザ上で WordPress を実行可能にしたデモを VMware が公開 - Publickey
- Oven: the company behind Bun
- JavaScript ラインタイムの Bun の会社 Oven が設立。
- Oven は Bun 開発の主導と高速なサーバレスのホスティングとフロントエンド・バックエンドの JS アプリの CI を提供を行う。
- Fluent emoji — 1 | Figma Community
- Microsoft から OSS として公開された 3D の絵文字
- CSS Modules の歴史、現在、これから - Hatena Developer Blog
- Deno のライアン・ダール氏「親愛なるオラクル殿、どうか JavaScript の商標を手放して」と呼びかけ - Publickey
- CSS container queries are finally here - Ahmad Shadeed
- CSS Container Queries の実装方法まとめ。
- Modern alternatives to BEM - daverupert.com
- BEM 以外の CSS 設計的な話。GPC や WILS は新しい CSS のプロパティを活用している。
- focus()に focusVisible の option が追加
- How and why we removed jQuery from GOV.UK - Inside GOV.UK
- GOV.UK で jQuery を削除した話。
- Bun first impressions - Speaker Deck
- Node 学園で発表された Bun の話で使用されたスライド。
- The 2022 Web Almanac
- Web のリアルな状態の統計レポートである Web Almanac の 2022 版が公開されました。
- Introducing Learn HTML
- Introducing Learn Accessibility
- Google が提供する web.dev にて、HTML と アクセシビリティ に関する学習コンテンツが追加されました。
- State of CSS 2022
- Fastly で Next.js アプリケーションを実行 | Fastly
- Faslty の Compute@Edge 上で Next.js のアプリをホスティングできるようになった
- New patterns for amazing apps
- webdev のコンポーネントやレイアウトの実装パターンを集めた Patterns に下記の実装パターンが追加された
- The Web’s Next Transition | Epic Web Dev by Kent C. Dodds
- Web アプリケーションは MPA→PEMPA→SPA→PESPA に変遷していってるよってお話
- 動的コンテツをエッジの KV にキャッシュする - ゆーすけべー日記
- パフォーマンス向上や負荷を下げる目的で、エッジの KV ストアに動的コンテンツを保存するのはいかがってお話
- V8 の人が meta(react core team)へ転職
- d アカウントのログインにおける新たな認証手段(Web 認証・パスキー)の提供を開始
- Developer Roadmaps
- roadmap.sh に色々追加されてる
- Rome — Unified developer tools for JavaScript, TypeScript, and the web
- 次世代のフロントエンドツールとして開発が進められている Rome について、サイトがリニューアルされた。
- Facebook の親会社「Meta」が数千人規模の大規模レイオフを間もなく実施予定 - GIGAZINE
- Remixing Shopify | Remix
- Remix が Shopify と提携した話。(正式には Remix 側が買収された)
- And here’s another one: the Next.js Edge Runtime becomes the fourth full-stack framework supported by Cloudflare Pages
- Cloudflare Workers の Pages Functions 上に Next.js をデプロイできるようになった
- マーク・ザッカーバーグが「Meta の大量解雇は自分の責任、成長を楽観視しすぎて人員過剰につながった」と反省の弁 - GIGAZINE
- メタ、1.1 万人削減を発表 全社員の 13%: 日本経済新聞
- Advanced Next.js Masterclass
- Twitter のアーキテクチャの話
- 500 点出す! - ゆーすけべー日記
- Web Speed Hackathon 2022 で満点とったよという話
- メタフロントエンド開発者 プロフェッショナル認定証 | Coursera
- HTML/CSS/JavaScript から React までを学ぶ。週6時間未満の学習で7ヶ月という結構しっかりめの内容。
- Automate an isolated browser instance with just a few lines of code
- Cloudflare Worker 上で VRT や Performance Tests の環境が簡単に作れるようになるっぽい
- nodejs/performance: Node.js team focusing on performance
- Node.js にパフォーマンス改善チ/ームができた
- State of JavaScript
- Next.js が出てこない React Server Components ハンズオン
- Prisma で本物の DBMS を使って自動テストを書く - mizdra’s blog
- Prisma&DBMS を使った自動テストについてのブログ
- Qwik City - Vercel Edge Adaptor and Middleware - Qwik
- qwik が Vercel の Edge にデプロイできるように
- Comparison between Next.js 12 and the Next.js 13 experimental app dir!
- Next.js の v12 と v13 の比較。v12 の pages ディレクトリから apps ディレクトリにどのように書き換えられるかが一枚の画像にまとまっている
印象に残っている記事など
IE11 とさよならしたら全力で使える HTML/CSS まとめ【40 個以上】 : @b4h0-c4t
IE 卒業おめでとうございます! 今年は IE 卒業元年(要出典)だったこともあり、多くの企業や団体で IE の利用が終了したと思います。 6/22 には弊社オフィスを利用して IE 卒業式なんかが開催されたりしましたね。
この記事は IE を卒業した人たちが利用できるブラウザ API や CSS プロパティなどがまとめられています。 去年まで IE 対応に泣かされていた人もそうでない人も一度閲覧して今年の始めとの違いを振り返ってみるのも良いと思います。
Bun — fast all-in-one JavaScript runtime: @sosukesuzuki
2022 年 7 月に Bun が公開されました(それ以前もクローズドで開発中であることは公開されていた)。
Bun は、Node.js や Deno のような JavaScript ランタイムです。 起動時間の速さや、高いパフォーマンス、バンドラーやトランスパイラーなどを含むオールインワンなツールであるなどの特徴があります。
Node.js や Deno とは違い、JavaScript エンジンとして V8 ではなく JavaScriptCore を採用しています(スタートアップが速いらしい)。
Node.js は C++、Deno は Rust で記述されていますが Bun は Zig で書かれています。Zig は Rust のように所有権やライフタイムによって型システムのレベルでメモリの安全性を高めようとするのではなく、C や C++ のようにプログラマーが手動でメモリ管理を行う必要があります。しかし、C++ や D、Rust などのプログラミング言語と比べてシンプルであることが意識されているようです。Zig のウェブサイトに Why Zig When There is Already C++, D, and Rust? というページがあるので興味がある人は読んで見ることをおすすめします。
また、トランスパイラやバンドラ、npm クライアント、sqlite クライアント、HTTP クライアントなど、ほとんどのコンポーネントがスクラッチで記述されているようです。
Bun は、作者である Jerrad Summer が立ち上げた会社 Oven によって開発されています。Oven 社のウェブサイト ( https://oven.sh ) によると、$7m を調達しフルタイムの開発者の採用を行っているようです。GitHub の Contributors を見ると今のところまだ Jerrad Summer が主な開発をしているようですが、最近では他の Oven 社のメンバーのコミットも見られるようになってきています。
The story behind colors.js and faker.js | Revenera Blog : @mugi_uno
年始に、広く利用されている faker.js・color.js の作者自身が、意図的にコード内に無限ループの処理を含め Publish するという出来事がありました。 善意によって成り立っていることもある OSS を日々利用させて貰っている中、とてもインパクトの大きい事件で、行動の是非も含めて多く話題にあがっていた印象です。
別件にはなりますが pnpmのリポジトリトップの README に、ウクライナ・ロシア情勢に絡む文章が追記されたのも今年で、 最近では Meta 社のレイオフの兼ね合いで React チームの今後を心配する声があがったりもしていました。
OSS の存続とその向こうにいるメンテナの皆様について考えるきっかけの多い一年だったかなと思います。
New patterns : @nus3_
2022 年は、web.dev の Patterns(Web アプリケーションを最適化するためのコードスニペット集)に Clipboard や Animation、Theme など新しいパターンが追加されました。
新しく追加されたパターンの一つに Component patternsというクロスブラウザでの UI コンポーネントのコードスニペット集があります。
パンくずリストやボタン、ダイアログなどの UI コンポーネントのコードスニペットが提供されているだけでなく、各々のコンポーネント実装時のポイントをマークアップ・アクセシビリティ・スタイル・アニメーション・JavaScript の観点でまとめた記事が、それぞれ用意されています。
実際にいくつかのコンポーネントの記事を見てみると、たとえば、ボタンのキーボード操作からのクリックを視覚的にわかりやすくするスタイル方法など、参考になる情報がまとまっていました。
来年も新しい Patterns は増えていくと思うので楽しみですね!
Announcing 3.0 · Nuxt : @nakajmg
Vue 3 のリリースから 2 年の時を経て 2022 年 11 月に満を持して Nuxt 3.0 が正式リリースされました!👏
Composition API への対応や、TypeScript サポートの充実などが大きなポイントです。Nuxt ユーザーが首を長くして待っていた正式リリースで、これから 2 系から 3 系への以降の話などが多く出てきそうです。
すでに「Nuxt 3 への移行に向けて頑張ってます - STORES Product Blog」や「Nuxt2からNuxt3に移行してサービスをリリースするまでの1年9ヶ月の道程」といった記事も見られるようになってきました。
めでたいリリースの一方で、Vue 3 がリリースされてからの 2 年でフロントエンドフレームワーク界隈では変化がありました。Next.js の大きなアップデートや、Remix・Astro・Qwik などのフレームワークのリリースによって、選択肢が増えてきています。フロントエンドフレームワークはユースケースによって使い分けるものだと思いますが、Nuxt 3 がどういったユースケースにマッチするのか、ほかフレームワークとポジション争いをするのか、また既存の Nuxt ユーザーが満足できる体験が得られるのか、2023 年の Nuxt 3 の動向が楽しみです!
Next.js 13 : @koba04
Next.js Conf で Next.js 13 が発表されました。React Core Team のメンバーがこれが本当の React 18 のリリースだと言っていた通り、Beta ではありますが、app/
ディレクトリは React Server Components を含む React の新しい機能をフルに活用したようなリリースになっています。
React がフレームワークとしてのユースケースを満たすのではなく、プリミティブを提供しておいて各種フレームワークがそれぞれのユースケースを満たすためにそれらを活用するという形であることを再確認したリリースでした。その点においては、Next.js は React におけるフラッグシップなフレームワークだと感じます。
技術的な内容については、Edge と言うユーザーにも近くスケール可能な環境を前提としたサーバーファーストなアプローチに変化していると感じました。実現方法は異なりますが方向性としては別のフレームワークにも通じるものがあると思います。
2023 年以降、どこまでコミュニティが app/
に移行できるのかはこれからの React にとっても重要になりそうです。
A Community Group for Web-interoperable JavaScript runtimes : @shisama_
日本語版: https://blog.cloudflare.com/ja-jp/introducing-the-wintercg-ja-jp/
Web ブラウザ以外の JS ラインタイムが Web 互換を保ってそれぞれの互換性を高めていきましょうという活動をする Web-interoperable Runtimes Community Group (通称 WinterCG)というコミュニティが設立されました。
WinterCG には以下の企業・OSS のメンバーがいます。
- Bloomberg
- Cloudflare
- Deno
- Igalia
- Node.js
- Shopify
- Vercel
今年は Deno が npm 互換を実装したり、Bun が登場したりと、JS ランタイム関連の話題が目立ったと感じました。また、Cloudflare Workers や Vercel の Edge Runtime などのエッジもあり、JS を動かす環境が増えていってます。
その中で、Web との互換やそれぞれの互換性を高めていく活動は重要だと思います。
Node.js 以外の JS ランタイムをサポートすることを意識したQwikやHonoのようなフレームワークも出てきたり、すでにメジャーな npm package が Deno 上でも動くようになってきていたり、JS を動かす環境として Node.js 以外も選択肢として入ってくるのはそう遠くない未来かもしれないと考えています。
この記事を書いた James M Snell (@jasnell)は Cloudflare で働きながらにして長年 Node.js の TSC(技術的な仕様を決めたりする委員会)にも所属しています。
James は今年の JSConf.jp でもキーノートとしてこの WinterCG や Web 互換の話をしてくれているので、興味がある方は動画も観てみてください。