カテゴリ: React 更新日: 2026/02/02

Reactのリストとキーを完全理解!大量データを効率的に表示する仮想化リスト入門

大量データを効率的に表示する(仮想化リスト)
大量データを効率的に表示する(仮想化リスト)

先生と生徒の会話形式で理解しよう

生徒

「Reactでリスト表示をしたら、データが多いと画面が重くなりました…」

先生

「それは大量のデータを一気に表示しているからですね」

生徒

「たくさん表示したい場合はどうすればいいんですか?」

先生

「仮想化リストという考え方を使うと、軽く表示できます」

1. 大量データのリスト表示で起こる問題

1. 大量データのリスト表示で起こる問題
1. 大量データのリスト表示で起こる問題

Reactでリストを表示するとき、 配列の中身をすべて画面に 並べることができます。

しかし、 データが数百や数千になると、 一度に描画される要素が増え、 画面の動きが とても重くなります。

スクロールが カクカクしたり、 ボタンの反応が 遅くなったりするのは、 このためです。

2. 仮想化リストとは何か

2. 仮想化リストとは何か
2. 仮想化リストとは何か

仮想化リストとは、 画面に見えている分だけを 表示する仕組みです。

たとえば、 長い名簿を机の上に すべて広げるのではなく、 今見ているページだけを 開いている状態を 想像してください。

画面に表示されていない部分は 作らないため、 パソコンへの負担が 大きく減ります。

3. 通常のリスト表示の例

3. 通常のリスト表示の例
3. 通常のリスト表示の例

まずは、 よくあるリスト表示の 書き方を確認します。


function App() {
  const items = Array.from({ length: 1000 }, (_, i) => `アイテム${i}`);

  return (
    <ul>
      {items.map(item => (
        <li key={item}>{item}</li>
      ))}
    </ul>
  );
}
(1000件のアイテムがすべて画面に表示されます)

この方法は分かりやすいですが、 データが増えるほど 表示が重くなります。

4. 仮想化リストの基本的な考え方

4. 仮想化リストの基本的な考え方
4. 仮想化リストの基本的な考え方

仮想化リストでは、 実際に画面に 見えている項目だけを 作ります。

スクロールすると、 見えなくなった項目を消し、 新しく見える項目を 追加します。

この切り替えを 自動で行うことで、 たくさんのデータでも 軽い表示を 保つことができます。

5. 仮想化リストの簡単なイメージ例

5. 仮想化リストの簡単なイメージ例
5. 仮想化リストの簡単なイメージ例

ここでは考え方を 分かりやすくするため、 表示する件数を 制限した例を見てみます。


function App() {
  const items = Array.from({ length: 1000 }, (_, i) => `データ${i}`);
  const visibleItems = items.slice(0, 20);

  return (
    <ul>
      {visibleItems.map(item => (
        <li key={item}>{item}</li>
      ))}
    </ul>
  );
}
(最初の20件だけが表示されます)

実際の仮想化では、 スクロールに合わせて この範囲を 動かしていきます。

6. 専用ライブラリを使う理由

6. 専用ライブラリを使う理由
6. 専用ライブラリを使う理由

スクロール位置を 自分で計算するのは とても大変です。

そのため、 仮想化リスト専用の ライブラリを使うと、 少ないコードで 実現できます。

Reactでは、 大量データ表示のために よく使われる ライブラリがあります。

7. 仮想化リストのシンプルな構造例

7. 仮想化リストのシンプルな構造例
7. 仮想化リストのシンプルな構造例

以下は、 仮想化の考え方を 意識した シンプルな構造例です。


function Row({ index }) {
  return <div>行番号 {index}</div>;
}

function App() {
  const rows = Array.from({ length: 1000 });

  return (
    <div>
      {rows.slice(0, 30).map((_, index) => (
        <Row key={index} index={index} />
      ))}
    </div>
  );
}
(表示される行数を制限して描画します)

8. keyは仮想化リストでも重要

8. keyは仮想化リストでも重要
8. keyは仮想化リストでも重要

仮想化リストでも、 keyはとても重要です。

keyが正しく設定されていないと、 表示の入れ替え時に 内容がずれたり、 予想しない動きに なることがあります。

データごとに 安定したkeyを 持たせることで、 Reactは正しく リストを管理できます。

9. 仮想化リストが活躍する場面

9. 仮想化リストが活躍する場面
9. 仮想化リストが活躍する場面

仮想化リストは、 チャット履歴、 商品一覧、 検索結果一覧など、 データが多い画面で 特に効果を発揮します。

すべてを一気に 表示しないという考え方が、 快適な操作につながります。

10. 初心者でも意識したいポイント

10. 初心者でも意識したいポイント
10. 初心者でも意識したいポイント

大量データを扱うときは、 まず 表示が重くならないかを 意識します。

仮想化リストという 考え方を知っているだけでも、 Reactでの リスト表示の理解が 大きく深まります。

カテゴリの一覧へ
新着記事
New1
React
Reactの条件分岐の使い方を完全ガイド!初心者でもわかるReactの条件分岐
New2
React
PropsとStateの違いを徹底解説!使い分けのポイントまとめ
New3
React
Reactのフォーム入力を再利用しよう!初心者でもわかるフィールドコンポーネント化の考え方
New4
React
Reactでできること一覧!初心者でもわかるWebアプリ・スマホアプリ・PWAの活用方法
人気記事
No.1
Java&Spring記事人気No1
React
Reactでキーボードイベントを活用する方法!onKeyDown, onKeyUp, onKeyPressを初心者向けに解説
No.2
Java&Spring記事人気No2
React
ReactのPresentational Componentを完全ガイド!初心者でもわかるStateを持たないコンポーネントの特徴
No.3
Java&Spring記事人気No3
React
Reactでフォーカスイベントを制御する方法!onFocusとonBlurを初心者向けに解説
No.4
Java&Spring記事人気No4
React
ViteでReact開発環境を構築する手順を完全ガイド!初心者でもできるReactの環境構築
No.5
Java&Spring記事人気No5
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.6
Java&Spring記事人気No6
Next.js
Next.js Server Componentsのメリット・デメリットを完全解説!初心者でもわかるNext.jsの基本
No.7
Java&Spring記事人気No7
React
Reactのカードコンポーネントを汎用的に設計する方法!初心者でもわかる再利用の考え方
No.8
Java&Spring記事人気No8
React
ReactでAxiosローディング状態を管理する方法を完全ガイド!初心者でもわかる非同期通信の基本