1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🔧 対象:フロントエンドエンジニア、Reactユーザー、Web APIを使う人
📅 投稿テーマ:「アプリケーションパフォーマンス最適化のヒントを共有しよう!」(Qiita Tech Festa 2025)


👋 はじめに

こんにちは、アミットです!
React × Web APIのアプリを作っていて、こんな悩みありませんか?

  • ページ読み込みが遅い…
  • スクロールがカクつく…
  • 不要なレンダリングが発生している…

本記事では、実務で成果が出たReactアプリのパフォーマンス最適化テクニックを、「Before / After形式」でコード付きで紹介します!


① useMemo / useCallback で不要な再レンダリングを防ぐ

🐌 Before: 毎回再生成される関数

const handleClick = () => {
  console.log("Clicked!");
};

<MyComponent onClick={handleClick} />

➡ 子コンポーネントが毎回再レンダリングされる可能性あり


⚡ After: useCallback でメモ化

const handleClick = useCallback(() => {
  console.log("Clicked!");
}, []);

✅ 子コンポーネントの再レンダリングを最小限に!


② コンポーネント分割 + React.memo

大量データを扱う表などは、部品単位で分割&メモ化

const TableRow = React.memo(({ data }) => {
  return <tr><td>{data.name}</td></tr>;
});

props.dataが変わらなければ、再描画されません!


③ 不要な再描画を防ぐ React Dev Tools の活用

✅ Chrome拡張の「Highlight updates」機能をONにして、
✅ 「なぜここが再描画されるのか?」をチェック!

npm i react-devtools

④ Suspense + lazy で画面分割&初期ロードを高速化

const Dashboard = React.lazy(() => import('./Dashboard'));

<Suspense fallback={<Spinner />}>
  <Dashboard />
</Suspense>

✅ 大画面の遅延読み込みで初期表示が高速に!


⑤ API呼び出しはキャッシュ戦略を使う(SWR or React Query)

🐌 Before

useEffect(() => {
  fetch("/api/user").then(res => res.json()).then(setData);
}, []);

⚡ After(SWR)

import useSWR from "swr";
const fetcher = (url) => fetch(url).then((res) => res.json());

const { data, error } = useSWR("/api/user", fetcher);

✅ キャッシュ・再取得・エラーハンドリングが自動


⑥ Web Vitals を Site24x7で監視(体験レベルを定量的に)

📊 Site24x7(クラウドAPMツール)を使えば:

  • LCP / FID / CLS をグラフ化
  • アラート通知
  • 地域別のUXレポート

➡ 無料トライアルはこちら 👉 Site24x7を試す


⑦ useTransition で「体感パフォーマンス」をアップ!

React 18 の新機能!

const [isPending, startTransition] = useTransition();

const handleSearch = (text) => {
  startTransition(() => {
    setSearchQuery(text);
  });
};

✅ 重たい処理でも「止まらないUI」を実現!


🧠 まとめ:最適化テクニック一覧

テクニック 効果
useCallback / useMemo 再描画防止
React.memo パフォーマンス改善
React.lazy + Suspense 初期表示高速化
SWR / React Query ネットワーク最適化
useTransition UX向上(非同期感)
Site24x7 本番環境のUX監視
React DevTools 再レンダリング可視化

🎁 Site24x7を試してみた感想(応募用)

実際にSite24x7を使ってみて、以下のようなことがすぐに分かりました

  • 特定ページの読み込みが東南アジアで遅い
  • Core Web Vitals がモバイルで悪化していた
  • APIレスポンスの変動を通知で受け取れた

初期セットアップ5分、無料で使えるのが最高!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?