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

Reactのカスタムフックでポーリングを実装する方法を解説!初心者でもわかるリアルタイム更新

カスタムフックでポーリングを実装する方法
カスタムフックでポーリングを実装する方法

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

生徒

「Reactで最新のデータを常に取得したいんですが、どうすればいいですか?」

先生

「それならポーリングを使う方法があります。一定の間隔でAPIを呼び出して、データを更新する仕組みです。」

生徒

「ポーリングって難しそうですね。Reactで簡単にできますか?」

先生

「カスタムフックを作ればシンプルに書けますよ。では、実際にコードを見ながら仕組みを理解していきましょう。」

1. ポーリングとは?初心者向けの解説

1. ポーリングとは?初心者向けの解説
1. ポーリングとは?初心者向けの解説

ポーリングとは、一定の間隔ごとにサーバーにリクエストを送ってデータを更新する仕組みのことです。例えば「毎秒ごとに新しいメールが届いているか確認する」といった使い方ができます。

リアルタイム性が重要なアプリ、例えばチャットや株価の更新、センサーのデータ取得などに役立ちます。初心者の方は「定期的にリロードして最新の情報を取りに行く」イメージを持つと理解しやすいでしょう。

2. Reactでポーリングを実装するメリット

2. Reactでポーリングを実装するメリット
2. Reactでポーリングを実装するメリット

Reactアプリでポーリングを実装すると、ユーザーがリロードしなくても自動で最新のデータが表示されます。これによりユーザー体験が向上します。

さらに、カスタムフックにまとめることで複数のコンポーネントで簡単に再利用でき、コードの見通しも良くなります。

3. カスタムフックでポーリングを作る基本

3. カスタムフックでポーリングを作る基本
3. カスタムフックでポーリングを作る基本

ポーリングの仕組みは、JavaScriptのsetIntervalを使って定期的にAPIを呼び出します。ReactではuseEffectを組み合わせて書き、カスタムフックにまとめます。


import { useState, useEffect } from "react";

function usePollingAPI(url, interval = 5000) {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState(null);

  useEffect(() => {
    let timer;
    const fetchData = async () => {
      try {
        const res = await fetch(url);
        const json = await res.json();
        setData(json);
        setError(null);
      } catch (err) {
        setError(err);
      } finally {
        setLoading(false);
      }
    };

    fetchData(); // 初回実行
    timer = setInterval(fetchData, interval); // 定期的に実行

    return () => clearInterval(timer); // クリーンアップ
  }, [url, interval]);

  return { data, loading, error };
}

export default usePollingAPI;
(このフックを使うと、指定した間隔でAPIを呼び出し続け、常に最新のデータを取得できます)

4. コンポーネントでポーリングを使う例

4. コンポーネントでポーリングを使う例
4. コンポーネントでポーリングを使う例

作成したカスタムフックをコンポーネントで使ってみましょう。ここでは記事の一覧を定期的に更新する例を紹介します。


import React from "react";
import usePollingAPI from "./usePollingAPI";

function Posts() {
  const { data, loading, error } = usePollingAPI("https://jsonplaceholder.typicode.com/posts", 3000);

  if (loading) return <p>読み込み中です...</p>;
  if (error) return <p>エラーが発生しました: {error.message}</p>;

  return (
    <ul>
      {data.slice(0, 5).map(post => (
        <li key={post.id}>{post.title}</li>
      ))}
    </ul>
  );
}

export default Posts;
(画面に記事一覧が表示され、3秒ごとに最新のデータに更新されます)

5. ポーリングの注意点

5. ポーリングの注意点
5. ポーリングの注意点

ポーリングは便利ですが、以下のような注意点もあります。

  • 間隔を短くしすぎるとサーバーに負荷がかかる
  • 不要なときはポーリングを停止しないと無駄な通信が発生する
  • エラー処理をしっかり入れないと正しく動作しなくなる

そのため、必要に応じてポーリングの間隔を調整したり、特定の画面を開いているときだけ実行する工夫が大切です。

6. ポーリングを活用できる場面

6. ポーリングを活用できる場面
6. ポーリングを活用できる場面

ポーリングは次のようなアプリでよく使われます。

  • チャットアプリで新しいメッセージを定期的に取得する
  • 株価や仮想通貨の価格を更新し続ける
  • IoTデバイスのセンサー情報を定期的に読み取る

このように「常に最新の情報が必要な場面」でポーリングはとても役立ちます。

カテゴリの一覧へ
新着記事
New1
React
Reactのカスタムフックで認証トークンを扱う方法!初心者でもわかるAPI管理の基本
New2
React
Reactのカスタムフックでポーリングを実装する方法を解説!初心者でもわかるリアルタイム更新
New3
Next.js
Next.jsのstylesフォルダとCSS Modules整理方法を完全ガイド!初心者でもわかるNext.jsのディレクトリ構成
New4
Next.js
Next.jsの環境構築とは?初心者が最初にやるべき準備を完全ガイド
人気記事
No.1
Java&Spring記事人気No1
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.2
Java&Spring記事人気No2
React
ReactのPropsを使ってコンポーネントの表示を動的に切り替える方法を解説!初心者でもわかるReact入門
No.3
Java&Spring記事人気No3
React
ReactでonChangeイベントを使ってフォーム入力値を管理する方法を初心者向けに解説
No.4
Java&Spring記事人気No4
Next.js
Next.jsのApp RouterとPages Routerの役割の違いを完全解説!初心者でもわかるNext.jsの基本概念
No.5
Java&Spring記事人気No5
React
ReactでAxiosのPUT・DELETEリクエストを完全ガイド!初心者でもわかるAPI通信の基本
No.6
Java&Spring記事人気No6
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.7
Java&Spring記事人気No7
React
Reactのラジオボタン選択を完全解説!初心者でもわかるReactフォーム処理
No.8
Java&Spring記事人気No8
React
Reactの条件分岐の使い方を完全ガイド!初心者でもわかるReactの条件分岐