Fork me on GitHub

2023-02-15のJS: Lighthouse 10、core-jsとオープンソースの財政的な支援、WebContainers

Edit on GitHub 編集履歴を見る

JSer.info #631 - Lighthouse 10がリリースされました。

Lighthouse 10では、スコアからTTIが削除され、CLSにスコアが移行されています。
また、AuditとしてBFCacheの検証、ペースト禁止の検証が追加されています。
その他には、LighthouseのJSON出力の構造が変更されています。

関連する内容として、CrUX History APIというChrome User Experience Report (CrUX) の履歴データを取得するAPIがリリースされています。
特定のページのWeb Vitalsの値のデータを1週間単位で取得できます。


core-js 3.28.0がリリースされました。

core-js 3.28.0では、2023-01のTC 39 Meetingsの結果を反映した変更が含まれています。

  • Stage4となったChange Array by copy proposalをStableに移動
  • Stage3のJSON.parse source text access、ArrayBuffer.prototype.transfer、Explicit Resource Managementを追加
  • Stage 2のSymbol Predicatesを実装
  • Stage 1のNumber.rangeIterator.rangeに変更

また、core-jsの歴史、財政的な支援の募集や今後の方針についての記事も公開されています。

オープンソースのメンテナンスと財政的な話についてはWorking in Publicという書籍がよくまとまっています。
Babelやcore-jsのように少人数のメンテナーと多くのユーザーというように比率が大きく異なるプロジェクトは、スタジアムモデルという形に分類されて紹介されています。

また、ソフトウェアはほぼ無料で配布できるため、利用者の数は増え続け、メンテナンスにかかる費用が高くなるという問題が知られています。
(オープンソース)ソフトウェアを購入する動機は減っている一方で、その社会的価値は劇的に上昇していて、多くの人やサイトはオープンソースソフトウェアに依存しています(モダンなウェブアプリのコードの97%はnpmからきているという話もあります)。
そのため、オープンソースコードはメンテナンスが必要な公共インフラストラクチャの一種であるという話もされています。

オープンソースへ財政的な支援をする個人や企業は増えています。
一方でソフトウェアの依存関係は膨大になっているため、どこに対して支援すればいいかわからない問題も指摘されています。

📝 依存関係から自動的に分配するサービスもあります。

また、特定の人へのSponsorは「寄付」の概念と混同されやすいですが、どちらかというそのクリエイターの将来の仕事に対する期待、関心に紐づくので、サブスクリプションのようなものという話もあります。
最近では特定のプロジェクトに対するSponsorではなく、特定の人に対するSponsorという文化的な変化も起きているという話が紹介されていました。
(これは、プロジェクトが成長段階に入るとコードを書く開発者以外にも、モデレートやドキュメントなどを中心にする人の重要度が高くなっていくという話とも関係しています)

この本の出版後なので含まれていませんが、Babelでも同様の話がされていたので、興味があるひとは読むと良いかもしれません。

このサイトも💚JSer.info SponsorなどのSponsorsとして財政的に支援できます。


Node.jsをWebブラウザ上で動作させて、Playgroundなどに利用できるWebContainersのAPIとパッケージが公開されています。
Svelte Tutorialなどで利用されている事例が紹介されています。


JSer.infoをサポートするには

JSer.info Sponsors

JSer.info SponsorsGitHub SponsorsとしてJSer.infoを支援してくれている方々です。


ヘッドライン


Release Notes for Safari Technology Preview 163 | WebKit

webkit.org/blog/13839/release-notes-for-safari-technology-preview-163/

safari ReleaseNote

Safari Technology Preview 163リリース。
CSS GridのMasonry layoutをデフォルトで有効化、StorageManager.estimate()のサポート、Web Crypto APIがEd25519をサポート。
非標準なHTMLHeadElement.profileHTMLFrameElement.locationなどを削除


Release v3.2.0 · nuxt/nuxt

github.com/nuxt/nuxt/releases/tag/v3.2.0

Vue ReleaseNote library

Nuxt.js v3.2.0リリース。
Nuxt DevToolsの追加、useFetchでのリクエストに自動的にCookieが付くように。
サーバのコードからclient-only componentを取り除くtreeshakeClientOnlyがデフォルトでtrueへと変更など。


What's new in Lighthouse 10 - Chrome Developers

developer.chrome.com/blog/lighthouse-10-0/

browser performance Tools ReleaseNote

Lighthouse 10リリース。
スコアからTTIが削除され、CLSにスコアが移行する。
AuditとしてBFCacheの検証、ペースト禁止の検証の追加。
Lighthouseの結果であるJSONの構造の変更など


Electron 23.0.0 | Electron

www.electronjs.org/blog/electron-23-0

Electron ReleaseNote

Electron 23.0.0リリース。
Chromium 110、Node.js 18.12.1、V8 11.0へのアップデート。
Windows 7/8/8.1のサポートを終了、scroll-touch-*イベントの削除。
機能追加としてWebUSB APIのサポートなど


Release v1 Because I finally got around to it · jquense/yup

github.com/jquense/yup/releases/tag/v1.0.0

TypeScript library ReleaseNote

スキーマを組み上げてバリデーションできるyup 1.0.0リリース。
tupleの追加、bundleしたファイルを配布するように、when APIの変更、emailバリデーションをWHATWGの定義と同じものへ変更。
castignore-optionalityオプションを追加、型処理のパフォーマンス改善とObjectschemaクラスの追加など


Release DOMPurify 3.0.0 · cure53/DOMPurify

github.com/cure53/DOMPurify/releases/tag/3.0.0

DOM security library ReleaseNote

DOMpurify 3.0.0リリース。
IEのサポートを終了、ALLOW_SELF_CLOSE_IN_ATTRPオプションの追加など


Release 3.28.0 - 2023.02.14 · zloirock/core-js

github.com/zloirock/core-js/releases/tag/v3.28.0

JavaScript polyfill library ReleaseNote

core-js v3.28.0リリース。
Stage4となったChange Array by copy proposalをStableに移動。
Stage3のJSON.parse source text access、ArrayBuffer.prototype.transfer、Explicit Resource Managementを追加。
Stage 2のSymbol Predicatesを実装、Stage 1のNumber.rangeIterator.rangeに変更など


Nextra 2 – Next.js Static Site Generator – The Guild

the-guild.dev/blog/nextra-2

Next.js library ReleaseNote

Next.jsベースの静的サイトジェネレータであるNextra 2リリース。
MDX2のサポート、Markdownのインポート、Next 13に対応、リモートのMarkdownファイルを読み込んでレンダリングできるように、FlexSearchを使った全文検索のサポートなど


アーティクル


Bringing Javascript to WebAssembly for Shopify Functions (2023)

shopify.engineering/javascript-in-webassembly-for-shopify-functions

WebAssembly JavaScript article

JavaScriptをWasmにして実行する仕組みについて。
QuickJSを使いJavaScriptをByteCodeにしたscript.wasmを作成し、QuickJS.wasmと動的にリンクして大部分を共有している。

Shopify Functionで利用されるが、非同期処理の制限や5ms未満での実行制限がある。現在はRustで作成したWasmより3枚ていど遅いが、今後はSpiderMonkeyの利用やJITについてやっていく。


Speculation Rules API によるプリレンダリングのためのメトリクス設計

nhiroki.jp/2023/02/13/metrics-for-prerendering

Chrome performance article

Speculation Rules APIのPreRenderingについて。
Prerenderした場合のnavigationStartは事前実行のタイミングとなるため、activationStartというメトリクスが追加された点。
また、Predenderが実際に利用されているかの判定方法について


Improved type safety in Storybook 7

storybook.js.org/blog/improved-type-safety-in-storybook-7/

TypeScript article

Storybook 7でのTypeScriptの型について。
StoryObjタイプやsatisfies演算子を使ってexportするコンポーネントの定義に型を付ける話


Understanding App Directory Architecture In Next.js — Smashing Magazine

www.smashingmagazine.com/2023/02/understanding-app-directory-architecture-next-js/

Next.js article

Next.jsのappディレクトリについての記事


A Historical Reference of React Criticism—zachleat.com

www.zachleat.com/web/react-criticism/

React article history

Reactに対する批判の歴史についての記事


core-js/2023-02-14-so-whats-next.md at master · zloirock/core-js · GitHub

github.com/zloirock/core-js/blob/master/docs/2023-02-14-so-whats-next.md

JavaScript polyfill article OpenSource opinion

core-jsの歴史、財政的な問題、ロードマップについて。
また、多くのウェブサイトが複数のバージョンのcore-jsを同じページに読み込んでいるパッケージの依存関係の問題について


サイト、サービス、ドキュメント


WebContainers - Dev environments. In your web app. | WebContainers

webcontainers.io/

node.js JavaScript library webservice

Node.jsをWebブラウザ上で動作させて、Playgroundなどに利用できるWebContainersのAPIとパッケージが公開された


Introducing historical web performance data via the CrUX History API - Chrome Developers

developer.chrome.com/en/blog/chrome-ux-report-history-api/

Chrome browser performance

CrUX History APIで1週間間隔のデータを6ヶ月間分の履歴が確認できるようになった。
WebVitalsのデータを各ページレベルでも取得できるようになっている


ソフトウェア、ツール、ライブラリ関係


upgradejs/depngn: A CLI tool to find out if your dependencies support a given version of node.

github.com/upgradejs/depngn

node.js Tools

インストールされている依存関係のenginesフィールドを見て、指定したNode.jsバージョンが条件を満たすかを一覧できるツール


slashd-analytics/run: Run user-provided code in a Web Worker

github.com/slashd-analytics/run

JavaScript webworker library

Web Workerを一種のSandboxとして使い、任意のJSコードを実行するライブラリ


書籍関係


Design Patterns in TypeScript

refactoring.guru/design-patterns/typescript

TypeScript document book

TypeScriptでのデザインパターンについてまとめたサイト


この記事へ修正リクエストをする
JSer.info Slackに参加する