こんにちは。現場の最前線でコードの深淵と戦っている皆さんのために、今日は「ブラウザの裏側を透視する技術」についてお話しします。
大規模なWebアプリケーションを開発していると、必ずぶつかる壁があります。「機能は増えたのに、なぜかサイトが重い」「デプロイするたびにバンドルサイズが肥大化し、読み込み時間が伸びる」。
その犯人は、多くの場合、あなたのコードの中に潜む「使われていないコード(デッドコード)」です。今日は、Chrome DevToolsのCoverageパネルを使って、パフォーマンスを喰らい尽くす無駄をあぶり出し、Lighthouseスコアを劇的に改善する「外科手術」の手法を伝授します。
—
1. なぜ「Coverageパネル」が最強の武器なのか?
多くのエンジニアは「何が読み込まれているか」は知っていますが、「そのうち、どれが実際に実行されているか」を意識していません。
ブラウザはページを開く際、巨大なJavaScriptファイルをダウンロードし、パース(解析)し、コンパイルしてから実行します。もし、その中の80%が「今の画面では必要ないコード」だとしたら? ブラウザはその無駄な処理のためにCPUとメモリを浪費し、あなたのアプリの評価(Lighthouseスコア)を容赦なく下げます。
Coverageパネルは、実行時に「どの行が使われたか」をリアルタイムで追跡し、「実行されていない行」を赤くハイライトして教えてくれる、まさに「コードの健康診断ツール」なのです。
—
2. 実践:Coverageパネルで「無駄」を可視化する
まずは、あなたの手元の開発環境で、実際にボトルネックを暴いてみましょう。
セットアップと計測の開始
1. Chromeで対象のWebアプリを開く。
2. `F12` キーで DevTools を開く。
3. `Command + Shift + P` (Mac) または `Ctrl + Shift + P` (Windows) を押してコマンドメニューを開く。
4. `Coverage` と入力し、「Show Coverage」を選択。
すると、画面下にパネルが出現します。「録画ボタン(●)」を押してページを再読み込み(または操作)してみてください。
データの読み方(ここが重要!)
パネルには、読み込まれたファイルの一覧が表示されます。注目すべきは 「Usage Visualization(使用率)」 のバーです。
- 青い部分: 実際に実行されたコード。
- 赤い部分: 読み込まれたが、一度も実行されなかったデッドコード。
特に、巨大なライブラリが「赤」に染まっているのを見つけた時が、エンジニアとしての腕の見せ所です。
—
3. HelloWorld的・最適化の思考プロセス
単に「消す」だけが正解ではありません。アーキテクトとして、以下のステップで最適化を進めるのが「プロの作法」です。
手順1:巨大なライブラリの特定
例えば、`lodash` や `moment.js` のような汎用ライブラリが100%読み込まれているのに、実際には数関数しか使われていない場面を特定します。
手順2:コード分割(Code Splitting)への移行
特定のルートや機能でしか使わない重いコンポーネントがあれば、Reactなら `React.lazy()` や `Suspense` を使って、「必要な時だけロードする」ように動的インポートへ切り替えます。
// Before: 常にバンドルに含まれる
import { HeavyChart } from ‘./components/HeavyChart’;
// After: 必要な時までダウンロードを遅延させる(動的インポート)
const HeavyChart = React.lazy(() => import(‘./components/HeavyChart’));
// この一行で、初期ロード時の「赤いコード(未使用コード)」を劇的に減らせます
手順3:Tree Shakingの確認
ビルドツール(WebpackやVite)が正しく機能しているか確認してください。もし「使っていないはずのライブラリが全て含まれている」なら、ES Modulesのインポート形式(`import { … }`)が崩れている可能性があります。
—
4. アーキテクトからのアドバイス:このツールは「習慣」にするもの
多くの人はパフォーマンスチューニングを「リリース前の儀式」だと考えていますが、それは間違いです。
「機能を追加するたびに、Coverageパネルをチラ見する」
これだけで、将来的な技術負債を劇的に減らせます。新しいライブラリを導入した時、Coverageを見て「あ、このライブラリ、今の画面ではこれしか使っていないんだな」と気づく。その小さな積み重ねが、半年後の「爆速でサクサク動くアプリケーション」という財産を作るのです。
—
まとめ:あなたのコードは、もっと軽くなれる
DevToolsのCoverageパネルは、単なるデバッグツールではありません。「開発者の意識を変える鏡」です。
今日から、Chromeを開くたびにこのパネルを起動してみてください。「自分のコードがどれだけ無駄なく動いているか」を可視化するだけで、あなたの書くコードの質は一段上のステージへと駆け上がります。
もし「どうしてもこの赤色が消えない!」という難所があれば、次は「バンドル解析(Webpack Bundle Analyzer等)」と組み合わせることで、犯人をさらに深掘りできます。それはまた、別の機会にお話ししましょう。
さあ、あなたのアプリのボトルネックを暴きに行きましょう!