JavaScriptバンドルサイズバジェット戦略

JavaScriptバンドルサイズバジェットの定義と実施。分割戦略、ツリーシェイキング、コード分割チャンクとサードパーティスクリプト間のJSサイズのパフォーマンスバジェット追跡方法。

Asset Budgets

詳細な説明

JavaScriptバンドルサイズバジェット

JavaScriptは通常、Webページで最もコストの高いアセットです。ダウンロードコスト以外に、JSにはパース、コンパイル、実行コストがあり、Time to Interactive(TTI)とTotal Blocking Time(TBT)に直接影響します。

推奨JSバジェット範囲

サイトタイプ JSバジェット
ブログ/コンテンツ 50-80 KB
ランディングページ 60-100 KB
Eコマース 150-300 KB
SPA 200-400 KB
ダッシュボード 300-500 KB

これらは転送サイズ(圧縮済み)です。非圧縮サイズは通常3-4倍大きくなります。

JSバジェットの内訳

JSバジェットはカテゴリ間で分割すべきです:

  • フレームワーク/ランタイム — React(約40 KB gzip)、Vue(約30 KB)、Svelte(約2 KB)
  • ファーストパーティコード — アプリケーションロジック
  • サードパーティスクリプト — アナリティクス、広告、チャットウィジェット、A/Bテスト
  • ポリフィル — 必要なブラウザにのみ配信

追跡戦略

パフォーマンスバジェットトラッカーにリソースを追加する際:

  1. 各コード分割チャンクを個別のエントリとして追加(例:vendor.jsapp.jspage-home.js
  2. サードパーティスクリプトを実際の転送サイズで含める
  3. HTML内のインラインスクリプトを考慮

バンドルサイズの削減

  • ツリーシェイキング — モダンなバンドラー(webpack、Rollup、esbuild)で未使用コードを削除
  • コード分割 — ダイナミックインポートで必要時のみJSを読み込み
  • 圧縮 — 本番環境でBrotli(gzipより30%小さい)を使用
  • バンドル分析 — webpack-bundle-analyzerのようなツールで肥大化を特定
  • インポートコスト意識 — 依存関係追加前にパッケージサイズを確認

サードパーティの問題

サードパーティスクリプトはJSバジェット違反の主要原因です。1つのアナリティクススクリプトで50-100 KB追加される可能性があります。各サードパーティスクリプトを個別のリソースエントリとして追跡し、各スクリプトがコストに見合うかどうかを定期的に監査します。

ユースケース

JavaScriptバジェット追跡は、SPAや複雑なWebアプリケーションに取り組むチームにとって重要です。よくあるシナリオ:初期ビルドはバジェット内で出荷されますが、数ヶ月の機能開発で誰も気づかないうちにバンドルが2-3倍に成長します。パフォーマンスバジェットトラッカーでの継続的な追跡により、このドリフトを早期にキャッチできます。

試してみる — Performance Budget Tracker

フルツールを開く