現場で使えるChrome DevTools実践ガイド 第7章:Performanceパネルでパフォーマンス分析

ページ表示が重い、スクロールがカクつく、JavaScriptが固まる…。
そういった問題を解決するには、パフォーマンスの可視化と分析が不可欠です。

Google Chromeの「Performance」パネルでは、レンダリング・スクリプト処理・レイアウト・ペイントなどの一連の流れを視覚的に確認できます。

この章では、実際のユースケースを通じて、ページのボトルネックを見つける手順を学びましょう。


7.1 メモリリークの検出

メモリリークとは、不要になったオブジェクトが解放されず、メモリを使い続けてしまう現象です。
長時間ページを開いていると重くなる、アニメーションが徐々に遅くなる…といった不具合の原因になり得ます。

Memory snapshot の使い方:

  1. Memory タブを開いて「Snapshot」を取得
  2. GC(ガーベジコレクション)後にも消えないオブジェクトを調査
  3. Retainers でどのオブジェクトが参照し続けているかを確認

💡 活用例:

  • SPA(Single Page Application)で画面を切り替えても前のイベントリスナが残り続ける
  • WebSocketのコールバックが解放されず蓄積する

7.2 タイムラインによるレンダリング確認

Performance タブで記録を開始すると、ページの描画処理全体のタイムラインが表示されます。

見るべきポイント:

  • Scripting:JavaScriptの実行時間
  • Rendering:レイアウト・スタイル計算などの時間
  • Painting:実際の画面描画処理
  • Idle:空き時間

シナリオ:

  1. 「Record」ボタンをクリックして操作を再現(例:ページスクロール、ボタン押下)
  2. 処理が固まった瞬間をズームイン
  3. 長時間を占めている処理やレイアウト・リフローを特定

💡 ユースケース:

  • 「スクロールが重い」→ リスト描画で毎回全 DOM を更新していた
  • 「クリック後の応答が遅い」→ 重い同期処理がブロッキングしていた

7.3 スロットリング設定(CPU / ネットワーク制限)

リアルユーザーの環境では、開発マシンほど高速なCPUやネットワークは使われていません。
DevToolsでは「スロットリング機能」により、意図的にリソースを制限して動作を再現・確認できます。

設定方法:

  • Performance または Network パネルで、上部の「Throttling」オプションを選択
  • ネットワーク:
    • No throttling(制限なし)
    • Fast 3G / Slow 3G
  • CPU:
    • 2x slow-down / 4x slow-down(処理速度を落とす)

活用例:

  • モバイル通信環境下でのページ初期表示速度を確認
  • 高負荷ページでのCPUボトルネックを再現し、体感速度を測定

🧑‍💻 実践課題

課題:画像付き記事リストがスクロール時にカクつく問題を調査・改善する

  1. Performance パネルでスクロールを記録
  2. 長い ScriptingRendering の箇所を特定
  3. 画像の読み込みや DOM の再描画が原因か確認
  4. 遅延読み込み(lazy-loading)や requestAnimationFrame の活用など改善案を検討

📝 まとめ

  • Memoryパネル:メモリリークを特定し、パフォーマンス劣化の根本原因を発見
  • Performanceタイムライン:スクリプト・レイアウト・描画の流れを可視化して、遅延の原因を分析
  • スロットリング:ユーザー実環境を再現し、UXの劣化を未然に防ぐ

Performanceパネルは、見た目では分からない”重さ”の原因を科学的に突き止める道具です。
単に「遅い」を「速くする」ための最初の一歩として、定量的な視点を養いましょう。

mh

Related Posts

現場で使えるChrome DevTools実践ガイド 第13章:拡張機能・Snippetsの活用

現場で使えるChrome DevTools実践ガイド 第12章:ワークスペース連携とファイルのライブ編集

You Missed

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第13章:ストレージとデータベースの基礎 : オブジェクトストレージ: Cloud Storage(バケット、オブジェクト、ストレージクラス)- あなたの「データ置き場」

  • 投稿者 mh
  • 6月 23, 2025
  • 9 views

Kubernetes Learning 第39章:CRD(Custom Resource Definition)とは?~Kubernetesに“自分専用のリソース”を追加する仕組み~

  • 投稿者 mh
  • 6月 21, 2025
  • 27 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第12章:Cloud CDN(Content Delivery Network):あなたのWebサイトを「世界中のユーザーに超高速で届ける宅配便ネットワーク」

  • 投稿者 mh
  • 6月 20, 2025
  • 35 views

Kubernetes Learning 第38章:Operatorとは? ~Kubernetesに「運用の自動化ロボット」を組み込む仕組み~

  • 投稿者 mh
  • 6月 19, 2025
  • 40 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第11章:Cloud Load Balancing:あなたのGCPリソースを「賢く振り分ける交通整理の達人」

  • 投稿者 mh
  • 6月 18, 2025
  • 43 views

Kubernetes Learning 第37章:JenkinsやGitHub ActionsからのKubernetesデプロイ例 ~CI/CDツールとKubernetesをつなげてみよう~

  • 投稿者 mh
  • 6月 17, 2025
  • 42 views