Study Log

日々の学習のまとめ・備忘録

View on GitHub
12 December 2025

パフォーマンス改善

by Natsumi Chiba

Reactを使ったアプリのパフォーマンス改善法

【前提】
この改善方法はあくまで「事例」であって 最適解ではない
アプリや環境によって有効な手法は変わる

【内容】
1.視聴中のパフォーマンス改善(ランタイム、画面描画の速さ)
2.ページロードのパフォーマンス改善(ページを開くまでの速さ)

1. 視聴中のパフォーマンス改善(概要)

これは ページが表示された後の動きを速くするための改善です。
例として次のような問題/改善例が扱われています:

✔️ 無駄な DOM の再描画
✔️ フルスクリーン時の描画負荷
✔️ 不必要に再生成される関数や描画処理の削減
✔️ 動かない不要な処理の停止
✔️ リストの描画の最適化(再レンダリングの削減)

これらは ユーザーの操作感(スクロール、クリックなど)をスムーズにするための改善です。

2. ページロードのパフォーマンス改善(イントロ〜ファイルサイズまで)

ページロードでは URL にアクセスしてからページが表示されるまでの時間を短くすることがテーマになります。
ここでのポイントの1つが ファイルサイズを減らすこと です。

ページロード改善:ファイルサイズを減らす(要点)

なぜファイルサイズが重要か?

ページを表示する際に JavaScript や CSS などのファイルを読み込みます。
これらのサイズが大きいほど ダウンロード・パース・実行が遅くなるため、ページ表示速度が落ちます。
特に JavaScript はパース/コンパイルコストも高いため、単純なバイト数以上の影響が出ます。

具体的な改善アプローチ

① バンドル(bundle)の分析
Webpack などで生成されたバンドルを分析して どの部分がどれだけのサイズになっているか可視化します。
これにより、不要なライブラリや重い依存を発見できる。

使用するツール例:
✔️ bundlephobia — ライブラリ単位で圧縮後のサイズを見る
✔️ webpack-bundle-analyzer — 実際のバンドル内のサイズ構成を可視化する
✔️ bundlesize や size-plugin — CI(PR 時)でファイルサイズの変化をチェックする 

これらを使うことで 無駄なコード・依存が含まれていないかを早めに気づける仕組み作りができます。

② 初期表示に不要なものを遅延ロード(lazy load)
初期表示で必要ない JavaScript / CSS は最初に読み込まないことで、ファーストビューのロード時間を短縮します。

具体的には:
✔️ <script async defer …> の活用
✔️ セクションに応じて動的にスクリプトを読み込む仕組みを作る(React コンポーネントとして動的ロードなど)

③ コード分割(Code Splitting)
Webpack の「コード分割(Code Splitting)」で、初期ロードに必要な部分とそれ以外を 別ファイルに分けることで主要ロードのサイズを減らせます。
特に「ユーザー向けページ」と「管理者向けページ」で共通のコードがあっても、全てを一つのバンドルに含めるのは無駄です。
適切な分割を行うことで ユーザーの初回体験速度がアップします。

比較や検出の仕組みづくり

類似サービスとファイルサイズを比較して 問題点を見つける
CI や PR 時にサイズチェックを入れて 増えすぎていないか監視する
こういった仕組みで “気づき” を早くします。

まとめ:ファイルサイズを減らすまでの流れ

バンドルを分析して何が重いか把握する
不要なライブラリや依存を取り除く
初期ロード不要なコードを遅延読み込みする
コード分割を活用して必要最低限だけ最初に読み込む
CI などでサイズ増加を監視して品質を保つ

この流れは ページロード性能を改善してユーザー体感を良くするための基本戦略 となります。

tags: