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

Reactのコンポーネント責務分離と関心分離を完全解説!初心者でもわかる設計の考え方

コンポーネントの責務分離と関心分離の考え方
コンポーネントの責務分離と関心分離の考え方

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

生徒

「Reactのコンポーネントって、どこまで書いていいのかわからなくなります…」

先生

「一つのコンポーネントに役割を詰め込みすぎているのかもしれません。」

生徒

「役割を分けるって、どう考えればいいんですか?」

先生

「それが責務分離と関心分離という考え方です。順番に見ていきましょう。」

1. コンポーネントの責務とは何か

1. コンポーネントの責務とは何か
1. コンポーネントの責務とは何か

Reactにおける責務とは、そのコンポーネントが担当する仕事の範囲を指します。 例えるなら、家事の分担のようなもので、一人が掃除も料理も洗濯も全部担当すると大変になります。 コンポーネントも同じで、表示、処理、データ管理をすべて一つにまとめると複雑になります。

責務を意識することで、「このコンポーネントは何をするためのものか」がはっきりし、 読みやすく、修正しやすいコードになります。

2. 関心分離という考え方

2. 関心分離という考え方
2. 関心分離という考え方

関心分離とは、見た目、動き、データの扱いといった関心ごとを分けて考える設計の考え方です。 Reactでは特に「見た目を表示する役割」と「状態を管理する役割」を分けると理解しやすくなります。

初心者のうちは難しく感じますが、 「表示だけする部品」と「考える部品」を分けるイメージを持つと整理しやすくなります。

3. 責務を分けていない例

3. 責務を分けていない例
3. 責務を分けていない例

まずは、すべてを一つのコンポーネントに書いてしまった例を見てみましょう。 この形は最初は楽ですが、機能が増えると急に読みにくくなります。


import React, { useState } from "react";

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

  return (
    <div>
      <h1>カウント: {count}</h1>
      <button onClick={() => setCount(count + 1)}>増やす</button>
    </div>
  );
}

export default App;
(数字が表示され、ボタンを押すと数が増えていきます)

4. 表示と処理を分けた設計

4. 表示と処理を分けた設計
4. 表示と処理を分けた設計

次に、表示だけを担当するコンポーネントと、 状態を管理するコンポーネントに分けてみます。 これが責務分離の基本形です。


import React from "react";

function CounterView({ count, onIncrement }) {
  return (
    <div>
      <h1>カウント: {count}</h1>
      <button onClick={onIncrement}>増やす</button>
    </div>
  );
}

export default CounterView;

5. 状態を管理する親コンポーネント

5. 状態を管理する親コンポーネント
5. 状態を管理する親コンポーネント

状態管理は親コンポーネントに任せます。 表示側は「受け取ったものを表示するだけ」にするのがポイントです。


import React, { useState } from "react";
import CounterView from "./CounterView";

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

  return (
    <CounterView
      count={count}
      onIncrement={() => setCount(count + 1)}
    />
  );
}

export default App;
(表示は同じですが、役割が明確に分かれています)

6. 責務分離のメリット

6. 責務分離のメリット
6. 責務分離のメリット

責務を分けることで、表示デザインを変更してもロジックに影響しません。 逆に、処理を変更しても見た目のコンポーネントはそのまま使えます。

これはReactのコンポーネント再利用と分割において、とても重要な考え方です。 小さく、役割がはっきりした部品ほど、長く使い回せるようになります。

7. 初心者が意識するとよい判断基準

7. 初心者が意識するとよい判断基準
7. 初心者が意識するとよい判断基準

コンポーネントを書くときは、 「この部品は一つの仕事だけをしているか」を自分に問いかけてみてください。 表示と処理が混ざってきたら、分ける合図です。

最初から完璧に分ける必要はありません。 書いてみてから分けることで、責務分離と関心分離の感覚が自然と身についていきます。

カテゴリの一覧へ
新着記事
New1
React
React Hooksを使う上でのルール徹底解説!初心者でもわかるHooksの正しい使い方
New2
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
New3
React
Reactのコンポーネント責務分離と関心分離を完全解説!初心者でもわかる設計の考え方
New4
React
Reactの学習ロードマップ!初心者が最短で習得する流れを完全ガイド
人気記事
No.1
Java&Spring記事人気No1
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.2
Java&Spring記事人気No2
React
Reactでフォーカスイベントを制御する方法!onFocusとonBlurを初心者向けに解説
No.3
Java&Spring記事人気No3
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.4
Java&Spring記事人気No4
React
ReactとTypeScriptの相性とは?型安全な開発のメリット
No.5
Java&Spring記事人気No5
Next.js
Next.jsのPages Routerフォルダ構成を完全ガイド!初心者でもわかるNext.jsのpagesディレクトリ
No.6
Java&Spring記事人気No6
Next.js
Next.jsとは?Reactとの関係を初心者向けにやさしく解説|Next.jsの基本概念と特徴
No.7
Java&Spring記事人気No7
Next.js
Next.js Pages Routerで動的ルーティングを完全ガイド!初心者でもわかるURLの仕組み
No.8
Java&Spring記事人気No8
React
ViteでReact開発環境を構築する手順を完全ガイド!初心者でもできるReactの環境構築