← PC・IT用語集へ戻る

React

React
ユーザーインターフェース(UI)を構築するためのJavaScriptライブラリ。
React (React)

概要(サマリー)

Reactは、Webサイトやアプリの見た目(UI)を効率よく構築するためのJavaScriptライブラリである。

ブラウザの画面上に表示されるボタンやフォーム、リストなどの部品を「コンポーネント」という単位で分割し、それらを組み立てるように画面を構築できる。表示するデータ(状態)が変わると、Reactはコンポーネントを再計算し、必要な変更を画面に反映する。そのため、動きの多いモダンなWebアプリを開発する際に広く使われている技術である。


詳細解説

Reactとは何か(UIを効率的に作るライブラリ)

Reactは、Meta社(旧Facebook)が開発したUI構築のためのツールである。

従来のWeb制作では、HTMLで骨組みを作り、CSSで装飾し、JavaScriptで「ボタンが押されたら画面のこの文字を書き換える」という処理を記述していた。しかし、アプリが複雑になると、どのJavaScriptコードが画面のどこを書き換えているのかが分からなくなり、バグの原因になりやすかった。

Reactは、この「画面の書き換え処理」をスマートに解決し、大規模なWebアプリでもバグが発生しにくい構造を提供する。

コンポーネント指向(部品を組み合わせて画面を作る)

Reactの最大の特徴は「コンポーネント」という考え方である。

Webページを巨大な1枚のHTMLとして書くのではなく、ヘッダー、サイドバー、投稿ボタン、コメント欄といった「小さな部品(コンポーネント)」に分解して開発する。

このアプローチには、次のような大きなメリットがある。

  • 再利用ができる:同じデザインのボタンやカードを、1つのコンポーネントを呼び出すだけで何箇所にも配置できる。
  • コードが整理される:部品ごとにHTML(見た目)とJavaScript(動き)が1つのファイルにまとまるため、修正したい場所がすぐに見つかる。
  • 分担して開発しやすい:複数人のチームで開発する際、「Aさんはヘッダー」「Bさんはフッター」のように競合を避けて作業を進められる。

宣言的UI(状態に合わせて自動的に画面が変わる)

Reactは「宣言的(せんげんてき)」と呼ばれるスタイルで画面を定義する。

これは、「データがこうなったら、画面はこういう見た目になる」というルールをあらかじめ記述しておく方法である。

従来のやり方(命令的UI)では、「ボタンが押されたら、データを読み込み、ローディングアイコンを表示し、古い文字を削除し、新しい文字を追加する」といった細かい手順をすべてプログラムで命令する必要があった。

Reactの宣言的UIでは、「読み込み中(loading)というデータが true ならローディング画面、 false なら結果画面を表示する」とだけ宣言しておく。あとはReactのシステムがデータの変化を監視し、自動で画面を適切な状態に書き換えてくれる。

状態(state)によるデータの保持と再描画

Reactにおいて、画面の表示内容を決める重要なデータは「ステート(state)」と呼ばれる。

ステートは、ユーザーの入力内容、ログイン状態、APIから取得したデータなど、「時間とともに変化する情報」を指す。

ステートが更新されると、Reactはそれをトリガーとしてコンポーネントを再計算し、画面を自動的に描き直す(これを再描画、またはレンダリングと呼ぶ)。この仕組みにより、開発者は画面の更新タイミングを手動で管理するストレスから解放される。

Reactの基本的な書き方(JSXとコンポーネントの例)

Reactでは、HTMLとJavaScriptを合体させたような「JSX」という特殊な書き方を使用する。

以下は、Reactでシンプルなクリックカウンターを作成するコード例である。

import React, { useState } from 'react';

// Counterという名前の部品(コンポーネント)を定義
function Counter() {
  // countというステートを定義(初期値は0)
  const [count, setCount] = useState(0);

  // ボタンがクリックされたときの処理
  const handleClick = () => {
    setCount(count + 1); // カウントを1増やす
  };

  // 見た目をJSX形式で返す
  return (
    <div style={{ padding: '20px', border: '1px solid #ccc' }}>
      <p>現在のクリック数: {count} 回</p>
      <button onClick={handleClick}>
        カウントアップ
      </button>
    </div>
  );
}

export default Counter;

このコードでは、useState を使って count という状態を管理している。ボタンを押すと setCount が呼ばれてデータが変わり、Reactが自動的に <p> タグの中の数字だけを書き換えてくれる。


AIコーディングとの関係

Reactは、AIコーディングツール(Cursor、v0、GitHub Copilotなど)と極めて相性が良い。

AIによるコンポーネント生成の容易さ

Reactは「1ファイルにHTML(JSX)とJavaScriptがコンパクトにまとまる」という構造をしているため、AIが全体のコードを出力しやすい。たとえば、「モダンなデザインのログインフォームのReactコンポーネントを作って」と指示すると、たたき台として使いやすいコードが返ってくることが多い。ただし、状態管理、アクセシビリティ、デザインの細部は人間が確認する必要がある。

AIへの効果的な指示の出し方

AIにReactのコードを書いてもらう際は、状態(state)とプロップス(props:親から子に渡すデータ)を明確に指定すると成功しやすい。

  • 指示の例:「ReactのFunctional Componentを使って、タスク管理アプリを作ってください。各タスクは idtextisCompleted の状態を持ち、親からリストを渡して表示する構成にしてください。」

注意点・確認ポイント

AIは時に不要に複雑な状態管理(state)を提案したり、古いReactの書き方(クラスコンポーネントなど)を出力したりすることがある。また、コンポーネント間のデータの受け渡し(バケツリレー)が多くなりすぎている場合は、AIに「この状態管理をリファクタリングして、よりシンプルな構成にしてください」と指示してクリーンアップさせるとよい。


よくある勘違い

Reactはフレームワーク?

よく「Reactフレームワーク」と表現されることがあるが、厳密にはReact自体は「ライブラリ」である。

フレームワークは、アプリ全体のフォルダ構成やURLルーティング、データ取得など、開発に必要なすべての土台を提供する巨大な枠組み(Next.jsなど)である。

一方、Reactは「UI(見た目)を効率よく記述する」ための特化ツールであり、ルーティングなどの機能は別のライブラリを組み合わせて使う前提になっている。この自由度の高さがReactの魅力だが、初心者にとっては「何を組み合わせて選べばいいか分からない」という迷いやすさの原因にもなっている。

Reactを使えば常にページ読み込みが速くなる?

Reactを導入したからといって、無条件にページの初期表示速度が速くなるわけではない。

Reactで作られたWebアプリは、ブラウザ側でJavaScriptを大量に実行して画面を組み立てる(SPA形式)ため、最初に巨大なJavaScriptファイルを読み込む必要がある。そのため、初期読み込み(ファーストビュー)に関しては、単純な静的HTMLで作られたサイトよりも遅くなることがある。

ただし、一度読み込みが終わった後の「ページ移動」や「ボタンを押した時の画面切り替え」は、サーバーとの通信が不要な範囲で高速に処理できる。そのため、設計がうまくできていれば、ユーザーが感じる「操作の快適さ(サクサク感)」は向上しやすい。

HTMLやCSSの知識は一切不要?

「Reactがあれば、もうHTMLやCSSを書かなくていい」と思うかもしれないが、それは誤りである。

Reactで画面の見た目を定義する「JSX」は、ほぼHTMLのタグ構造そのものである。また、スタイリングには通常のCSSや、Tailwind CSSなどのスタイリングツールが必要となる。

HTMLの構造(セマンティックなタグ設計)やCSSの知識がない状態でReactを始めると、AIに指示を出す際にも不自然な要素が生成されやすく、修正が難しくなるため、最低限のマークアップの基礎を学んでおくことは必須である。


情報ソース


まとめ

  • Reactは、Webの画面(UI)を効率よく作るためのJavaScriptライブラリ。
  • 画面を「コンポーネント(部品)」に分割して開発するため、再利用性や整理がしやすい。
  • 「データが変われば画面が自動で変わる(宣言的UI)」ため、面倒な手動の書き換え処理を減らせる。
  • AIコーディングとの相性がよく、仕様を細かく指定すれば、レビューしやすいコンポーネントのたたき台を生成しやすい。

より詳しくAIに聞いてみよう

  • Reactの「コンポーネント指向」とは何か、初心者にわかりやすく身近な例で説明してください。
  • Reactの「状態(state)」と「プロップス(props)」の違いを具体例を交えて教えてください。
  • なぜ従来のJavaScriptによる画面書き換え(DOM操作)に比べて、Reactの書き換えは高速なのですか?
  • AIコーディングを使ってReactのコンポーネントを設計するとき、コンポーネント分割の基準はどうすればよいですか?
  • Reactでボタンを1回クリックしたときに複数のステートを更新する場合、裏側でどのように再描画が行われるか説明してください。