カテゴリ: React 更新日: 2026/01/25

Reactのリストとキーを完全解説!初心者でもわかるリストレンダリングとパフォーマンス最適化

リストレンダリングとパフォーマンス最適化
リストレンダリングとパフォーマンス最適化

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

生徒

「Reactでリストは表示できたんですが、データが多いと重くなるって聞きました」

先生

「はい、リストの表示方法によっては、画面がもたつくことがあります」

生徒

「パソコンが遅くなる感じですか?」

先生

「そうです。Reactでは、それを防ぐための考え方があります。一緒に見ていきましょう」

1. リストレンダリングとは何か

1. リストレンダリングとは何か
1. リストレンダリングとは何か

リストレンダリングとは、配列のデータを使って、 同じ形の表示を何個も並べることです。

たとえば、名前の一覧や商品リストなど、 繰り返し表示したいときによく使われます。

Reactではmapという仕組みを使って、 データ一つ一つを画面に表示します。

2. シンプルなリスト表示の基本

2. シンプルなリスト表示の基本
2. シンプルなリスト表示の基本

まずは、一番基本的なリストの表示方法を確認しましょう。 難しいことは考えず、配列をそのまま画面に出します。


import React from "react";

function App() {
  const names = ["たろう", "はなこ", "じろう"];

  return (
    <ul>
      {names.map((name, index) => (
        <li key={index}>{name}</li>
      ))}
    </ul>
  );
}

export default App;
(画面に名前のリストが縦に表示されます)

このように、Reactはデータの数だけ表示を作ります。 データが増えれば、その分表示も増えます。

3. パフォーマンスとはどういう意味か

3. パフォーマンスとはどういう意味か
3. パフォーマンスとはどういう意味か

パフォーマンスとは、動きの速さや滑らかさのことです。 画面がすぐ反応するかどうかを表します。

データが少ないうちは問題ありませんが、 何百、何千と増えてくると、 画面を描き直す処理が重くなります。

例えるなら、メモ帳に数行書くのはすぐでも、 何百ページも書き直すと時間がかかるのと同じです。

4. keyがパフォーマンスに関係する理由

4. keyがパフォーマンスに関係する理由
4. keyがパフォーマンスに関係する理由

keyは、Reactがリストの中身を見分けるための番号札です。 これがあることで、どの項目が変わったのかを判断できます。

keyが正しくないと、全部を書き直したと勘違いして、 無駄な処理が増えてしまいます。

人の名前リストに番号が付いていないと、 誰が誰だか分からなくなるのと同じです。

5. 安定したkeyを使う例

5. 安定したkeyを使う例
5. 安定したkeyを使う例

indexをkeyにするのは簡単ですが、 並び替えや削除があると問題になることがあります。

できるだけ、データごとに決まった番号を使いましょう。


import React from "react";

function App() {
  const users = [
    { id: 1, name: "たろう" },
    { id: 2, name: "はなこ" },
    { id: 3, name: "じろう" }
  ];

  return (
    <ul>
      {users.map(user => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}

export default App;
(ユーザーの名前が安定した形で表示されます)

6. 無駄な再描画を減らす考え方

6. 無駄な再描画を減らす考え方
6. 無駄な再描画を減らす考え方

Reactでは、状態が変わると画面を描き直します。 しかし、関係ない部分まで描き直すと重くなります。

リストの一部だけが変わるなら、 その部分だけが更新されるのが理想です。

正しいkeyを使うことは、 その理想に近づくための第一歩です。

7. コンポーネントに分けると軽くなる理由

7. コンポーネントに分けると軽くなる理由
7. コンポーネントに分けると軽くなる理由

リストの一行を部品として分けると、 Reactは変更があった部品だけを更新しやすくなります。

大きな紙に全部書くより、 付箋を貼り替えるほうが楽なのと同じです。


import React from "react";

function Item({ name }) {
  return <li>{name}</li>;
}

function App() {
  const names = ["たろう", "はなこ", "じろう"];

  return (
    <ul>
      {names.map((name, index) => (
        <Item key={index} name={name} />
      ))}
    </ul>
  );
}

export default App;
(リストの一行一行が部品として表示されます)

8. 初心者が意識すべき最適化のポイント

8. 初心者が意識すべき最適化のポイント
8. 初心者が意識すべき最適化のポイント

最初から難しい最適化を考える必要はありません。 まずは正しく表示できることが大切です。

そのうえで、リストが増えてきたら、 keyが正しいか、無駄な描画がないかを確認します。

この順番を守ることで、自然とパフォーマンスも良くなります。

9. リストとパフォーマンスの基本的な考え方

9. リストとパフォーマンスの基本的な考え方
9. リストとパフォーマンスの基本的な考え方

リストレンダリングとパフォーマンス最適化は、 特別な技術ではありません。

「どこが変わったのかを分かりやすく伝える」 これをReactに教えてあげるだけです。

keyを正しく使い、構造を整理することで、 画面は軽く、分かりやすくなります。

カテゴリの一覧へ
新着記事
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
ViteでReact開発環境を構築する手順を完全ガイド!初心者でもできるReactの環境構築
No.4
Java&Spring記事人気No4
React
Reactでフォーカスイベントを制御する方法!onFocusとonBlurを初心者向けに解説
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とTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.8
Java&Spring記事人気No8
React
Reactのカードコンポーネントを汎用的に設計する方法!初心者でもわかる再利用の考え方