カテゴリ: React 更新日: 2026/03/29

React Hooksとは?クラスコンポーネントから進化した仕組みをやさしく解説

React Hooksとは?クラスコンポーネントから進化した仕組み
React Hooksとは?クラスコンポーネントから進化した仕組み

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

生徒

「先生、ReactのHooksってよく聞くんですけど、いったい何なんですか?」

先生

「Hooks(フック)は、Reactの機能をより簡単に使えるようにする仕組みなんです。特にuseStateuseEffectといったHooksがよく使われます。」

生徒

「昔からあるクラスコンポーネントと何が違うんですか?」

先生

「とても良いポイントですね。クラスコンポーネントでは複雑な書き方が必要でしたが、Hooksを使うことでシンプルに書けるようになったんです。今は関数コンポーネントとHooksを組み合わせるのが主流になっています。」

生徒

「なるほど!実際にどんなふうに使うのか見てみたいです。」

先生

「では、具体的にReact Hooksを使ったサンプルコードを見ていきましょう。」

1. React Hooksとは?

1. React Hooksとは?
1. React Hooksとは?

React Hooks(リアクトフック)とは、Reactのバージョン16.8から導入された新しい仕組みで、従来クラスコンポーネントでしかできなかった「状態管理」や「ライフサイクル処理」を、関数コンポーネントの中で簡単に書けるようにした機能です。

例えば、クラスコンポーネントではthis.statethis.setState()を使って状態を管理していました。しかし初心者にとってはthisの使い方やコンストラクタの記述が難しく、コードも長くなりがちでした。

Hooksを使えば、シンプルな関数だけで状態管理や副作用の処理ができるようになります。これにより、プログラムが短く分かりやすくなるのです。

2. クラスコンポーネントとHooksの違い

2. クラスコンポーネントとHooksの違い
2. クラスコンポーネントとHooksの違い

クラスコンポーネントとHooksの違いを、初心者でもイメージしやすいように「家の電気スイッチ」に例えてみましょう。

  • クラスコンポーネント:スイッチを入れるために複雑な回路(コンストラクタやライフサイクルメソッド)が必要。
  • Hooks:シンプルなスイッチを壁につけるだけで簡単にオンオフできる。

つまり、やりたいことは同じでも、Hooksを使うことでよりシンプルに書けるのです。

3. useStateで状態を管理する

3. useStateで状態を管理する
3. useStateで状態を管理する

useStateは、コンポーネントの中で「状態(state)」を持たせるためのHooksです。ボタンを押すと文字が変わるような処理を、わかりやすいサンプルで見てみましょう。


import React, { useState } from "react";

function App() {
  const [message, setMessage] = useState("こんにちは!");

  return (
    <div>
      <h1>{message}</h1>
      <button onClick={() => setMessage("ボタンがクリックされました!")}>
        クリックしてみよう
      </button>
    </div>
  );
}

export default App;
(画面に「こんにちは!」と表示され、ボタンを押すと「ボタンがクリックされました!」に変わります)

このように、useStateを使うと「現在の値」と「値を更新するための関数」を簡単に扱えます。クラスコンポーネントではthis.statethis.setStateを使っていましたが、Hooksなら一行で済みます。

4. useEffectで副作用を扱う

4. useEffectで副作用を扱う
4. useEffectで副作用を扱う

Reactでは、画面に表示する処理以外に「副作用(サイドエフェクト)」と呼ばれる処理を行うことがあります。例えばデータの取得やログの出力などが副作用です。クラスコンポーネントではcomponentDidMountcomponentDidUpdateを使っていましたが、HooksではuseEffectを使います。


import React, { useState, useEffect } from "react";

function App() {
  const [count, setCount] = useState(0);

  useEffect(() => {
    document.title = `カウント: ${count}`;
  }, [count]);

  return (
    <div>
      <p>現在のカウント: {count}</p>
      <button onClick={() => setCount(count + 1)}>カウントアップ</button>
    </div>
  );
}

export default App;
(画面に「現在のカウント: 0」と表示され、ボタンを押すたびに数字が増え、ブラウザのタイトルも「カウント: ○」に変わります)

useEffectの第2引数に配列[count]を指定すると、その値が変わったときだけ処理が実行されます。もし空の配列[]を渡せば「最初の一回だけ実行」になります。

5. Hooksのメリット

5. Hooksのメリット
5. Hooksのメリット

Hooksを使うメリットはたくさんあります。

  • クラスを使わなくても状態やライフサイクルを扱える
  • コードが短く、読みやすい
  • 複数のHooksを組み合わせて柔軟に機能を追加できる
  • 関数として独自のHooksを作り、再利用しやすい

このように、HooksはReactをシンプルで扱いやすいものに進化させた仕組みといえます。

まとめ

まとめ
まとめ

React Hooksは、関数コンポーネントで状態管理や副作用処理をシンプルに扱える仕組みとして、今やReact開発の中心的な存在となっています。従来のクラスコンポーネントでは、コンストラクタの記述やthisの扱いに慣れる必要があり、初心者にとって敷居の高い部分も少なくありませんでした。しかし、Hooksの登場によって、状態管理はuseState、副作用処理はuseEffectといった明確で分かりやすい構文が用意され、Reactの学習曲線は大きく改善されました。 また、Hooksの魅力は基本Hooksだけにとどまらず、「独自のカスタムHooksを作る」ことでロジックを再利用できる点にもあります。複雑な仕様をコンポーネントから切り離して分割できるため、保守性や拡張性の向上にもつながります。大規模なアプリケーションでは、複数の画面で同じデータ取得ロジックを使い回すケースがよくありますが、カスタムHooksを作っておけば、そのロジックを一か所にまとめて管理できるため、変更に強い構成を実現できます。 さらに、HooksはReactのライフサイクルの理解を深めるきっかけにもなります。useEffectの依存配列の扱い方や、クリーンアップ処理の役割を知ることで、コンポーネントがどのタイミングで動いているのかがイメージしやすくなり、より予測しやすいプログラムが書けるようになります。ただ「動くコードを書くだけ」ではなく、Reactの仕組みそのものを理解できる点がHooksの最大の魅力とも言えるでしょう。 Hooksを使いこなせるようになると、コードの読みやすさや再利用性が大きく向上し、チーム開発でも意思疎通がしやすくなります。以下では、今回の内容を踏まえて、Hooksを活用した追加のサンプルとして「カスタムHooksの基本例」を紹介します。

追加サンプル:カスタムHookでカウンターロジックを共通化する

Hooksの理解を深めるために、カスタムHooksでカウント機能を共通化する例を見てみましょう。


// useCounter.js
import { useState } from "react";

export function useCounter(initialValue = 0) {
  const [count, setCount] = useState(initialValue);

  const increment = () => setCount(count + 1);
  const decrement = () => setCount(count - 1);
  const reset = () => setCount(initialValue);

  return { count, increment, decrement, reset };
}

// App.js
import React from "react";
import { useCounter } from "./useCounter";

function App() {
  const { count, increment, decrement, reset } = useCounter(0);

  return (
    <div>
      <h2>現在のカウント: {count}</h2>
      <button onClick={increment}>増やす</button>
      <button onClick={decrement}>減らす</button>
      <button onClick={reset}>リセット</button>
    </div>
  );
}

export default App;

このように、Hooksを関数として切り出すことで、UIとは独立したロジックを何度でも再利用でき、アプリ全体の構造がより美しく整理されます。小さなコンポーネントでも、大規模な画面でも、Hooksを意識した設計はReact開発の重要な基盤となります。

先生と生徒の振り返り会話

生徒

「Hooksって便利ですね!特にuseStateとuseEffectの仕組みが分かったら、一気にReactが使いやすくなりました。」

先生

「その通りですよ。Hooksを理解できると、Reactのほとんどの機能が扱えるようになります。しかも、カスタムHooksを作ればさらに開発の幅が広がります。」

生徒

「カスタムHooksって難しそうと思っていましたが、関数として処理をまとめるだけなら挑戦できそうです!」

先生

「その意識が大切ですね。Hooksは使えば使うほど理解が深まるので、これからもいろいろ試しながら身につけていきましょう。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

ReactのHooksとは何ですか?初心者でも理解できますか?

React Hooksとは、Reactで状態管理や副作用の処理を関数コンポーネント内で簡単に扱えるようにする仕組みで、初心者でも理解しやすくなっています。

React Hooksはいつから導入された機能ですか?

React Hooksは、Reactのバージョン16.8から導入された新機能で、関数コンポーネントでも状態管理やライフサイクル処理が可能になりました。
カテゴリの一覧へ
新着記事
New1
React
JSXのベストプラクティス!読みやすく保守しやすいコードにする方法
New2
React
ReactでJSXを使わない書き方とは?React.createElementの使い方をやさしく解説
New3
React
React RouterのuseSearchParamsでクエリパラメータを扱う方法を完全解説!初心者でもわかるURL操作
New4
React
ReactのJSXエラーを完全解説!初心者がつまずきやすいポイントと対処法
人気記事
No.1
Java&Spring記事人気No1
React
React Context APIのデバッグ方法を完全解説!React DevToolsで中身を丸見えにする方法
No.2
Java&Spring記事人気No2
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.3
Java&Spring記事人気No3
React
React Routerとは?シングルページアプリのルーティングを初心者向けにわかりやすく解説
No.4
Java&Spring記事人気No4
React
React RouterのuseParamsでURLパラメータを取得する方法を完全解説!初心者でもわかる動的ルーティング
No.5
Java&Spring記事人気No5
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.6
Java&Spring記事人気No6
React
React RouterのLinkコンポーネントの使い方を完全解説!初心者でもわかるページ遷移の基本
No.7
Java&Spring記事人気No7
React
React RouterのRouteコンポーネントの使い方を完全解説!初心者でもわかるルーティングの基本
No.8
Java&Spring記事人気No8
React
React開発におすすめのVSCode拡張機能まとめ!初心者でもすぐ使える便利ツール紹介