Frontend Weekly 2025-08-08
V8 v13.8でJSON.stringifyが2倍以上高速化
日付:2025年8月5日
V8 v13.8でJSON.stringify
が2倍以上高速化。副作用のない単純なオブジェクトのシリアライズに特化した新しい反復的アプローチを実装し、パフォーマンスを大幅に改善。
- 新しいシリアライザ:
toJSON
メソッドやreplacer
引数がない単純なオブジェクトを処理する「ファストパス」を導入。再帰的実装を反復的アプローチに変更し、スタックオーバーフローを防止。 - 文字列処理の最適化: SIMD命令やSWAR技術を利用し、文字列内のエスケープ文字検索を高速化。
- プロパティキーの最適化: 特定の条件を満たすプロパティキーを持つオブジェクトの隠しクラスにフラグを設定。次回以降のシリアライズ時にキーのチェックを省略する「エクスプレスレーン」を導入。
- 数値変換の改善: 数値から文字列への変換アルゴリズムをDragonboxに更新。
- メモリ管理の改善: 一時バッファをセグメント化し、メモリの再割り当てとコピーのオーバーヘッドを削減。
TypeScript 5.9 リリース
日付:2025年8月1日
TypeScript 5.9がリリース。tsc --init
コマンドの更新、import defer
のサポート、DOM APIの要約説明、エディタツールチップの拡張可能なホバー表示プレビューなどが含まれる。
tsc --init
の更新:より最小限で規範的なtsconfig.json
ファイルを生成。import defer
のサポート:モジュールの評価を遅延させ、パフォーマンスを向上。- DOM APIの要約説明:MDNドキュメントに基づいた要約説明を提供。
- 拡張可能なホバー表示:エディタのツールチップでホバー内容を展開できるプレビュー機能。
--module node20
のサポート。- ホバーの最大長の構成が可能に。
- パフォーマンスを向上させるための様々な最適化。
lib.d.ts
の破壊的な変更:ArrayBufferがTypedArray型(Node.jsのBufferなど)のスーパータイプではなくなった。@types/node
の更新、Uint8Array<ArrayBuffer>
やbuffer
プロパティへのアクセスなどの対応が必要。
今後の展望として、TypeScript 6.0がバージョン7.0でのネイティブポートへの移行版として機能する予定。
ESLint v9.33.0 リリース、one-varルールがES2026の構文をサポート
日付:2025年8月8日
ESLint v9.33.0がリリース。
- 変数をまとめて宣言するかどうかを制御する
one-var
ルールが、ES2026のExplicit resource management機能であるusing
およびawait using
構文で宣言された変数を処理可能に。 no-restricted-globals
ルールが、グローバルオブジェクト(例:window.Promise
)経由でアクセスされた制限付きグローバルを検出可能に。この動作は3つの新しいオプションで制御される。checkGlobalObjectAccess
: グローバルオブジェクト経由のアクセスを報告するブール値。globalObjects
: グローバルオブジェクト参照として扱う識別子のリスト。globals
: 制限付きグローバル名のリスト。
Visual Studio Code v1.103 リリース、Git worktreeをサポート
日付:2025年8月7日
Visual Studio Code v1.103がリリースされ、Git worktreeのサポート、TypeScript 5.9の搭載、エディタやノートブック機能の改善が含まれる。
- Git worktreeのサポート: ワークツリーが自動的に検出され、Souce Controlビューに表示。コマンドパレットまたはSouce Controlビューからワークツリーを表示、作成、削除、切替が可能。
- TypeScript 5.9搭載:
import defer
のサポートやDOM APIのドキュメント改善が含まれる。 - JavaScriptとTypeScriptのホバー表示改善: 型の詳細を展開・折りたたみ可能になり、表示を調整できる。
- エディタタブのコンテキストメニュー整理: 関連オプションがサブメニューにグループ化され整理。
- ノートブックの改善: uvで作成された仮想環境でJupyter Notebookを実行する際に、必要な依存関係の自動インストールが可能に。
Chrome 139 リリース
日付:2025年8月5日
Chrome 139がリリース。
CSS Custom Functions、Web Speech APIのオンデバイス利用、@font-face
の font-feature-settings
サポートなど。
出展:
オンデバイス Web Speech API(Web Speech API)
Web Speech API にデバイス上の音声認識のサポートが追加。ウェブサイトで音声と文字変換された音声の両方が処理のためにサードパーティのサービスに送信されないようにすることが可能。オンデバイス音声認識に必要なリソースをインストールするようにユーザーに促す。基本利用コードは従来通り。
const Recognition = window.SpeechRecognition || window.webkitSpeechRecognition;const recognition = new Recognition();recognition.lang = 'ja-JP';recognition.continuous = true;recognition.interimResults = true;
recognition.onresult = (event) => { const transcript = Array.from(event.results) .map((r) => r[0].transcript) .join(''); console.log(transcript);};
recognition.start();
CSS の角の形状(Corner Shapes)
corner-shape
を導入。border-radius
と併用して、squircle、notch、scoop 等の角表現やアニメーションが可能。
.card { border-radius: 24px;^^ corner-shape: round; /* squircle 風の滑らかな角 */}
.badge--notch { border-radius: 12px; corner-shape: notch; /* 角を切り欠く */}
.avatar--scoop { border-radius: 20px; corner-shape: scoop; /* 角をえぐる */}
/* 形状間のアニメーション */.card:hover { corner-shape: scoop; transition: corner-shape 300ms ease;}
CSS Custom Functions(@function
)
CSS にユーザー定義関数を導入。引数や他のカスタムプロパティに基づいて値を生成。
@function --negate(--value) { result: calc(var(--value) * -1);}
.box { --gap: 1em; margin-top: --negate(var(--gap));}
Web App Manifest: scope_extensions
複数のサブドメインを紐づける
複数のサブドメインや別 TLD を 1 つの Web App として扱うための拡張スコープを宣言。
{ "name": "Sample App", "start_url": "/", "scope": "https://example.com/", "scope_extensions": [ { "origin": "https://a.example.com" }, { "origin": "https://example.org", "scope": "/subapp/" } ]}
WHATWG mimesniff に準拠した JSON MIME の認識
application/manifest+json
など、仕様で有効な JSON MIME を JSON として認識。
const res = await fetch('/manifest.webmanifest');// Content-Type: application/manifest+jsonconst data = await res.json();
@font-face
ルールで font-feature-settings
構文をサポート
@font-face
で OpenType feature の既定値を指定可能に。
@font-face { font-family: "MyFont"; src: local("MyFont Regular"), url("/fonts/myfont.woff2") format("woff2"); font-display: swap; font-feature-settings: "liga" 1, "kern" 1, "ss01" 1;}
body { font-family: "MyFont", system-ui, sans-serif;}
.title { font-feature-settings: "ss01" 0, "ss02" 1;}
Wrangler v4.27.0、.env ファイルをサポート
日付:2025年7月25日
Wrangler v4.27.0 がリリースされ、ローカル開発用に .env ファイルのサポートが追加。プロジェクトのルートディレクトリに .envや.env.local、.env.production、.env.development.localといったファイルを配置することで、wrangler dev 実行時に環境変数が自動的に読み込まれる。
Vite開発サーバーでCloudflare Containersが利用可能に
日付:2025年8月1日
Cloudflare Viteプラグインを使用し、ローカル開発時にCloudflare Workerと並行してContainersを実行可能に。従来、Containersとのローカル開発はWrangler使用時のみ可能だった。
wrangler.jsonc
またはwrangler.toml
ファイルでコンテナのクラス名、イメージの場所、インスタンス数などを定義し、WorkerコードからgetContainer
でアクセス。ターミナルでvite dev
コマンドを実行するだけで、ローカル開発サーバーが起動する。これにより、Cloudflare WorkersとContainersを両方利用するアプリケーションの開発ワークフローが効率化。
出展:Develop locally with Containers and the Cloudflare Vite plugin