React開発の応用編!Webサイトの環境構築から作り方まで解説


こんにちは。Wakka Inc.メディア編集部です。
Facebookが開発したJavaScriptライブラリであるReactは、効率性と保守性に優れたUI構築を可能にします。
Webサイト開発においてReactは有力な選択肢となりますが、初めてReactでの開発に挑む際、環境構築の手順で戸惑う方も少なくありません。
本稿では、Reactの基本概念から、スムーズな開発環境のセットアップ、そして実際のWebサイト構築までを丁寧に解説します。
ReactによるWebサイト開発を始めたい方は、ぜひ本記事をご参照ください。
ヘッドレスCMSの導入を予定している事業会社さまへ。
ヘッドレスCMSの導入目的に応じた、インフラ環境選定の手助けに。
ヘッドレスCMSのタイプの違いに応じたインフラ環境の構築例や、サーバー調達時に必要になる情報をチェックリストとして網羅しました。

Reactの基礎知識

Reactを使ってWebサイトを開発するには、まずReactの基礎知識を身につける必要があります。Reactの定義や歴史、特徴やメリット、そして仕組みや基本概念について説明していきます。
Reactの定義と歴史
Reactは、宣言型で効率的なJavaScriptのライブラリです。ユーザーインターフェースの構築に特化していて、複雑なWebアプリケーションを作るのに適しています。
Reactは、もともとFacebookが社内で使うために開発したものでしたが、2013年にオープンソース化されて、今では多くの企業や開発者に利用されています。
Reactの仕組みと基本概念
Reactの中心となる概念は、仮想DOM(Virtual DOM)です。
仮想DOMは、実際のDOMとは別に、メモリ上に保持される仮想的なDOMツリーのことです。
Reactは、仮想DOMを使って、UIの変更を効率的に行います。
変更があった場合、仮想DOM上で差分を計算し、必要な部分だけを実際のDOMに反映させることにより、パフォーマンスが向上します。
また、Reactではコンポーネントの考え方が重要です。
コンポーネントとは、UIの構成要素を独立した部品として定義するための仕組みを指します。
コンポーネントは、プロパティ(props)とステート(state)を持っています。
propsとは親コンポーネントから受け取るデータで、stateはコンポーネント内で管理されるデータです。
Reactの特徴とメリット
Reactには、多くの特徴やメリットがあります。
まず、Reactは仮想DOM(Virtual DOM)の仕組みを使用しています。
この仕組みにより、パフォーマンスが向上し、大規模なアプリケーションでも効率的に動作させられます。
また、Reactではコンポーネントベースの開発が可能です。
UIの部品をコンポーネントとして定義して再利用し、開発の効率化とコードの保守性を高められます。
さらに、ReactではJSXの記法を使います。
JavaScriptの中にHTMLのようなタグを書けるため、コードの見通しがよくなる点がメリットです。
React.jsとは
React.jsとは、ReactでUIのパーツを開発するうえで利用するライブラリを意味します。
React.jsはMeta(旧Facebook)が公開しており、さまざまな企業で導入されています。
React.jsを運用するには、html5に対応したブラウザが必須です。
ブラウザが古い場合、Babelでトランスパイルするなどして、html5相当の機能を搭載する必要があります。
React.jsは高速で作動する仮想DOMが魅力であり、高いパフォーマンスを発揮します。
ライブラリの管理が容易なため、大規模なアプリケーション開発に最適です。
SPA開発におけるReactの役割
SPA開発において、Reactは重要な役割を担います。
SPAとは「Single Page Application」の略称であり、1つのWebページでアプリケーションを表示するレイアウトを意味します。
従来のアプリケーション開発では、MPA(Multi Page Application)が用いられていました。
SPA開発なら別のページをダウンロードせず、1つのWebページで完結させられる点から、近年はUX(ユーザーエクスペリエンス)が向上させられる開発手法として注目されています。
一方で、SPA開発は手間がかかる手法であり、作業を効率化するフレームワークがリリースされています。
ReactはSPA開発に用いられる主要なフレームワークです。
SPA開発のフレームワークには、AngularやVue.jsがありますが、Reactはトップクラスの使用率を誇ります。
特殊な記述方法を用いるため学習コストこそ高いものの、Reactは実装するUIを独立したコンポーネントごとに分割して開発できます。
複雑になりやすい開発工程を効率化でき、スムーズなアプリケーション開発が可能です。
JavaScriptフレームワークとしてのReact
ReactはJavaScriptフレームワークの一種です。
JavaScriptとは、動的コンテンツの開発に適したプログラミング言語であり、世界的に利用されています。
ブラウザの環境とエディタを用意すれば起動できるため、プログラミングの経験が少ない企業でも導入しやすい点が特徴です。
JavaScriptはさまざまなプログラムの開発に用いられますが、Webアプリケーションを開発するうえで、そのまま利用することはほとんどありません。
Webアプリケーションの開発では、もっぱらJavaScriptを利用したフレームワークを導入することが一般的です。
数あるJavaScriptフレームワークのなかでも、Reactは高い人気を誇ります。
ReactならJavaScriptだけではコードが複雑になるプログラミングでも、分かりやすい明瞭なコードでの開発が可能です。
React開発に必要なもの

React開発を実施するなら、以下のような準備を進める必要があります。
- 開発環境の構築
- 開発に役立つライブラリ
- 状態管理ライブラリ(Redux・Zustandなど)
- ルーティング(React Routerなど)
それぞれについて、順番に解説するので、ぜひ参考にしてください。
開発環境の構築
まずはReactに適した開発環境を構築しましょう。
Reactの開発環境を構築するには、Node.jsとパッケージマネージャー(npmあるいはyarn)のインストールが必須です。
Node.jsのバージョンを管理するために、nvmのようなツールを使用することを推奨します。
Node.jsはアプリケーション開発に用いられるプラットフォームであり、JavaScriptをサーバーで開発するうえで欠かせません。
複数の多様なモジュールを搭載しているため、効率的に開発を進められます。
対してnvmはNode.jsのバージョン管理で用いるツールです。
あらかじめNode.jsのバージョンを複数インストールすることで、簡単に切り替えができるようにしましょう。
そもそもNode.jsはバージョンアップの頻度が多く、そのたびに機能の削除や変更がされるケースが珍しくありません。
スムーズにNode.jsを運用するうえでも、nvmは不可欠です。
なお、インストールの順番はパッケージマネージャーから行います。
公式サイトを確認し、正しいインストールスクリプトを実行すればnvmのインストールは完了です。
開発に役立つライブラリ
Reactで開発を進めるなら、ライブラリも用意しましょう。
React開発に特化したライブラリがあれば、効率的な開発が可能です。
Reactの開発に利用できるライブラリは多種多様であり、無償のOSSも珍しくありません。
代表的な無償ライブラリには以下のようなものがあります。
Material UI | もっとも知名度が高いUIライブラリ。カスタマイズ性が高く、サンプルも豊富に備えている。 |
Ant Design | 企業向けのライブラリであり、洗練されたデザインのUIが特徴。カスタマイズ性も高いが、やや重めな点に注意。 |
React Bootstrap | Bootstrapに基づいたUIを提供するライブラリ。簡単に運用できるので、シンプルなアプリケーション開発におすすめ。 |
Headless UI | フルカスタマイズが可能なライブラリ。自由度が高く、独自のデザインを導入できる。 |
Evergreen | 直感的な操作が可能なライブラリ。自由度は低いが、操作が容易。 |
Reactのライブラリには動画の埋め込みや特定の操作のUI(ローディングなど)に特化したものもあります。
好みのデザインを提供してくれるものを選びましょう。
なお、ライブラリには有償で利用するものもあります。
有償ライブラリは企業のアプリケーション開発に特化したものや、開発の効率化に特化したものがあり、無償ライブラリよりも大規模で複雑なアプリケーション開発に適しています。
状態管理ライブラリ(Redux・Zustandなど)
Reactを開発するうえで、状態管理ライブラリも不可欠です。
状態管理ライブラリとは、状態(コンポーネントのデータ)を管理するためのライブラリを指します。
Reactでアプリケーション開発を進めていくと、状態の数が増えていき、それぞれの機能の把握が困難です。
そのため、状態管理ライブラリを導入し、それぞれの状態の把握や管理を効率化する必要があります。
代表的な状態管理ライブラリは以下の通りです。
Redux | トップクラスの利用率を誇る状態管理ライブラリ。大規模なアプリケーション開発に最適。 |
Zustand | JavaScriptの状態管理ライブラリにおいて、Reduxと並ぶ利用率を誇る。Hooksにも対応できる。 |
Jotai | 独立した個々の状態を管理できる。直感的な操作が可能。 |
Reactの状態管理ライブラリはReduxが代表的ですが、近年はHooksの影響もあり、別の状態管理ライブラリに切り替えるケースも少なくありません。
自社の開発工程に合わせて選ぶように心がけましょう。
ルーティング(React Routerなど)
Reactは単体でルーティング機能を持っていないため、ルーティングライブラリが必要になります。
ルーティングライブラリとは、複数のページに展開するアプリケーションを開発する際に、構成するURLとコンテンツを紐づけるためのツールです。
ルーティングライブラリには以下のようなものがあります。
React Router | 代表的なルーティングライブラリ。標準的な性能を持ち、トップクラスの利用率を誇る。 |
TanStack Router | 開発者の目線で設計されたルーティングライブラリ。Web標準とは異なるが、責務がルーティングに限定されている。 |
基本的にルーティングライブラリはReact Routerが選ばれるケースがほとんどです。
近年はTanStack Routerの登場もあり、選択肢が増えました。
ただし、TanStack Routerはルーティングに限定されているため、データの更新などを行う際は、状態管理ライブラリを別途で用意する必要があります。
Webサイトの作り方1|React開発環境の準備

Reactでの開発を始めるには、まず開発環境を整える必要があります。
必要なソフトウェアやツールのインストール方法と、プロジェクトの作成や初期設定の手順について説明します。
1.Node.jsとnpmのインストール
Reactの開発には、Node.jsとnpm(あるいはyarn)が必要です。
Node.jsとは、JavaScriptを実行するためのランタイム環境で、npmはパッケージ管理ツールです。
Node.jsとnpmは、公式サイトからダウンロードしてインストールできます。
インストールが完了したら、ターミナルで「node -v」と「npm -v」のコマンドを実行して、バージョンが表示されれば成功です。
次に、テキストエディタを用意しましょう。
おすすめは、Visual Studio CodeやSublime Textなどです。
最後に、ブラウザを選びます。
Reactの開発では、Google ChromeやMozilla Firefoxがよく使われています。
どちらも開発者ツールが充実していて、デバッグに役立ちます。
2.プロジェクトの作成と初期設定
開発環境が整ったら、プロジェクトを作成しましょう。
Reactでは、create-react-appのツールを使って、簡単にプロジェクトの作成が可能です。
ターミナルで、プロジェクトを作成したいディレクトリに移動し、「npx create-react-app プロジェクト名」のコマンドを実行します。
実行すると、必要なファイルやフォルダが自動的に生成されます。
プロジェクト作成後、「cd プロジェクト名」でプロジェクトのディレクトリに移動し、「npm start」のコマンドを実行しましょう。
その後、開発用のサーバーが起動し、ブラウザでReactアプリケーションが表示されます。
プロジェクトのディレクトリ構成は、次の通りです。
node_modules | npmでインストールしたパッケージが保存されるフォルダ |
public | 公開用のファイル(index.htmlなど)が入っているフォルダ |
src | Reactコンポーネントなどのソースコードを置くフォルダ |
package.json | プロジェクトの設定や、依存パッケージの情報が書かれたファイル |
package.jsonは、プロジェクトの設定ファイルで、プロジェクト名やバージョン、依存パッケージなどの情報が記述されています。
3.基本的なファイル構造の理解
開発環境を構築したら、基本的なファイル構造の理解を進めましょう。
create-react-appでプロジェクトを作成すると、srcフォルダ内に主要なファイル(例:エントリーポイントとなるindex.js、メインのコンポーネントであるApp.js、関連するCSSファイルApp.cssやindex.cssなど)が生成されます。
これらの基本的なファイル構造を理解することから始めましょう。
それぞれのファイル構造を確認したら、任意のやり方でディレクトリを作成しましょう。
フォルダを作成し、ファイルを格納しておけば、コンポーネントの管理や確認を効率的に実践できます。
なお、ディレクトリの構成に悩んだら、AIを利用する方法もおすすめです。
Webサイトの作り方2|Reactアプリケーションを開発する方法

コンポーネントの作成や管理の方法・CSSとスタイリングの構築方法・ルーティングの設定方法について説明します。
1.コンポーネントの作成と管理
Reactでは、UIの構成要素をコンポーネントとして定義する点が特徴です。
コンポーネントには、関数コンポーネントとクラスコンポーネントの2種類があります。
関数コンポーネントは、シンプルなコンポーネントを作るうえで最適です。
propsを受け取って、JSXを返す関数として定義します。
一方、クラスコンポーネントは、複雑な処理や状態管理が必要な場合に使うものです。
Reactのライフサイクルメソッドを使って、コンポーネントの振る舞いを制御できます。
コンポーネントには、プロパティ(props)とステート(state)があります。
propsは、親コンポーネントから受け取る読み取り専用のデータで、stateはコンポーネント内で管理される変更可能なデータです。
また、コンポーネントにはライフサイクルがあります。
マウントやアップデート、アンマウントの各段階で、特定の処理を実行できます。
2.CSSとスタイリングの構築
Reactアプリケーションのスタイリングには、いくつかの方法があります。
基本的な方法は、CSSファイルを使う方法です。
コンポーネントごとにCSSファイルを作成し、クラス名などを使ってスタイルを適用します。
また、CSS-in-JSと呼ばれる手法も有効です。
JavaScriptの中にCSSを記述する方法で、styled-componentsやEmotionなどのライブラリを使います。
CSS-in-JSを使えば、コンポーネントとスタイルを一緒に管理でき、スタイルの適用範囲を限定しやすくなります。
なお、スタイリングの管理には、ベストプラクティスがあるので、積極的に活用しましょう。
コンポーネントの役割に応じてクラス名を付けたり、変数を使ってスタイルを再利用したりするのがポイントです。
3.ルーティングの設定
Webアプリケーションには、複数のページがあるため、URLによって切り替える必要があり、実現するのがルーティングです。
Reactでは、react-routerのライブラリを使ってルーティングを設定します。
react-routerを使えば、URLとコンポーネントのマッピングの定義が可能です。
ルートの定義には、Routeコンポーネントを使いましょう。
pathでURLを指定し、componentでURLに対応するコンポーネントを指定します。
また、Linkコンポーネントを使えば、ページ間のリンクを作ることができます。toでリンク先のURLを指定します。
パラメータを使ったルーティングも可能です。
URLの一部をパラメータとして扱い、コンポーネントに渡せます。
4.Stateの管理とHookの使用
続いてはStateの管理とHookの使用を実施します。
Stateは「状態」を意味し、React開発で利用するコンポーネントの値を保持するものです。
これにより、再レンダリングを実施しても、値を維持できます。
Hookはuseから始まるReact特有の関数であり、活用することでReactの機能と接続(hook into)するために用いられます。
Stateを管理する際は、「useState」と呼ばれるHookを使いましょう。
Hookを使うことで、Reactの機能を反映できます。
5.イベント処理
Reactにおけるイベント処理は「ハンドリング」とも呼ばれるプロセスです。
イベントとは、ユーザーがボタンをクリックしたり、マウスを動かしたりすることを意味します。
そのイベントをプログラムが処理することが、イベント処理です。
Reactのイベント処理はイベントをcamelCaseで名付け、関数を入力する点が特徴です。
例えば、以下のように関数を記載します。
関数 | Reactでの表記 |
onclick | onClick |
onchange | onChange |
ヘッドレスCMSの導入を予定している事業会社さまへ。
ヘッドレスCMSの導入目的に応じた、インフラ環境選定の手助けに。
ヘッドレスCMSのタイプの違いに応じたインフラ環境の構築例や、サーバー調達時に必要になる情報をチェックリストとして網羅しました。

Webサイトの作り方3|開発ツールとデプロイ

Reactアプリケーションの開発には、便利な開発ツールがあります。
開発ツールの活用方法と、完成したアプリケーションのデプロイ方法について説明します。
1.開発ツールの活用
Reactの開発では、ブラウザの開発者ツールが役立ちます。
React Developer Toolsなどの拡張機能がおすすめです。
React Developer Toolsを使えば、Reactコンポーネントのツリー構造を見たり、コンポーネントのpropsやstateを確認したりできます。
コンポーネントの動作を理解するのに役立ちます。
また、開発者ツールを使えばデバッグも可能です。
ブレークポイントを設定して、コードの実行を止めたり、変数の値を確認したりできます。
パフォーマンスの分析をする際にも、拡張機能が便利です。
開発者ツールのパフォーマンスタブを使えば、コンポーネントのレンダリング時間などを計測できます。
ボトルネックを見つけて、最適化するのに役立ちます。
テストを書くことも大切です。
Jestのテストフレームワークを使えば、コンポーネントの動作を自動的にテストできます。
テストを書いておけば、コードの変更によって意図しない動作が起きていないか確認できます。
2. Webサイトのデプロイ
Reactアプリケーションが完成したら、デプロイしてWebサイトとして公開しましょう。
デプロイの前に、ビルドの作業が不可欠です。
ビルドとは、Reactのコードを最適化して、ブラウザで動作可能な状態です。
ビルドするには、プロジェクトのルートディレクトリで「npm run build」のコマンドを実行します。
すると、buildフォルダに最適化されたファイルが生成されます。
ビルドしたファイルをWebサーバーに配置すれば、Webサイトとして公開が可能です。
デプロイするには、いくつかの方法があります。
代表的なのは、Netlifyを使う方法とGitHub Pagesを使う方法です。
Netlifyは、静的サイトのホスティングサービスです。Gitリポジトリと連携させて、自動的にビルドとデプロイができます。
GitHub Pagesは、GitHubが提供する静的サイトのホスティングサービスです。GitHub上のリポジトリからWebサイトを公開できます。
どちらのサービスも、無料で利用が可能です。
Reactアプリケーションのデプロイに適しているので、ぜひ試してみてください。
Webサイト作成におけるReact開発の応用編

本章ではWebサイト作成における、React開発の応用方法について解説します。
Reactを事業に取り入れる際の参考にしてください。
サーバーサイドレンダリング(Next.jsなど)
Reactを使えば、サーバーサイドレンダリングが可能です。
サーバーサイドレンダリングとは「SSR」と呼ばれ、サーバーで生成したHTMLをクライアントのブラウザに送信するプロセスを意味します。
通常、静的なHTMLサイトは記述されているHTMLをそのまま表示するだけです。
一方、サーバーサイドレンダリングなら、動的データに合わせてHTMLが生成ができるため、スピーディーに動的コンテンツを表示できます。
Reactでサーバーサイドレンダリングを行うなら、Next.jsを使いましょう。
Next.jsはReactフレームワークの一種であり、サイドレンダリングを含め、効率的かつスピーディーに稼働するアプリケーションの開発に適しています。
パフォーマンス最適化
動的コンテンツを大量に扱ったり、大規模なアプリケーションを運用したりするなら、Reactによるパフォーマンス最適化を実施しましょう。
Reactによるパフォーマンス最適化は、React Scanを利用します。
React Scanとは、Reactで開発したアプリケーションのパフォーマンスを分析するための、サードパーティ製のツールです。
React Scanには以下のような機能があります。
レンダリングの把握 | Reactで開発したアプリケーションで実施されているレンダリング(コンポーネントを呼び出すこと)を把握し、回数を可視化する。 |
無駄なレンダリングの検出 | アプリケーションのパフォーマンスを悪化させる無駄なレンダリングを検出する。 |
開発工程の効率化 | レンダリング状況を把握することで問題にアプローチしやすくなり、開発工程を効率化できる |
React Scanを活用すれば、レンダリングを調整することで、アプリケーションのパフォーマンスを最適化できます。
アプリケーションを運用するうえでも、積極的に活用しましょう。
テストとデバッグ
アプリケーションを安定的に稼働させるなら、テストとデバッグは不可欠です。
先述したように、ReactのデバッグはReact Developer Toolsを利用するだけで実践できます。
ブラウザの拡張機能であるため、手軽に利用できる点がメリットです。
Reactでテストを行うなら、専用のテストフレームワークであるJestや、DOMを直接操作して検証できるReact Testing Libraryを使いましょう。
いずれも手軽に使えるツールであり、組み合わせれば、包括的なテストが可能です。
API連携
API連携によって、Reactで開発したアプリケーションと外部のシステムを接続するなら、Reactフックの一種である「useEffect」を使いましょう。
useEffectはAPI通信やDOMの操作などに用いるフックであり、関数を実行するタイミングを任意で設定できる点がメリットです。
セキュリティ対策
ReactはデフォルトでXSS攻撃に対する一定の保護を有していますが、万全のセキュリティ対策を講じるなら、以下のプラクティスを実践しましょう。
- 危険なURLやURLベースのスクリプトインジェクション
- HTMLのレンダリング
- ダイレクトDOMアクセス
- サーバーサイドレンダリング
- 依存関係における脆弱性の検出
- JSON ステートのインジェクション
- 脆弱な Reactの バージョンの検出
- セキュリティ Linter の設定
- 危険なライブラリーコードの回避
それぞれのプラクティスを実践すれば、より安全性が高いセキュリティが実現します。
ReactでWebサイト開発をしよう

本記事では、ReactでWebサイトを開発するための環境構築について、包括的に解説しました。
Reactは、Vue.jsやAngularなどのモダンなWebアプリケーション開発に欠かせないツールの一つです。
仮想DOMやコンポーネントベースの開発により、効率的でパフォーマンスの高いWebサイトを構築できます。
Reactを使った開発を始めるには、まず開発環境を整える必要があります。
本記事で紹介した環境構築の手順を参考に、ぜひReactの開発に挑戦してみてください。
Reactの学習過程で得られる知識と経験は、エンジニアとしての成長にも大きく役立つはずです。
ヘッドレスCMSの導入を予定している事業会社さまへ。
ヘッドレスCMSの導入目的に応じた、インフラ環境選定の手助けに。
ヘッドレスCMSのタイプの違いに応じたインフラ環境の構築例や、サーバー調達時に必要になる情報をチェックリストとして網羅しました。

