WebサイトをReactで開発する利点
1.コンポーネントベースの設計
再利用性が高い: UIの各部分(ボタン、フォーム、カードなど)をコンポーネントとして定義でき、他のページでも簡単に再利用できます。
保守性が高い: 各コンポーネントが独立しているため、バグ修正や機能追加がしやすいです。
2.仮想DOM(Virtual DOM)による高速な描画
変更があった部分だけを効率的に更新するため、パフォーマンスが良く、スムーズなUIを実現できます。
3.単方向データフロー
データの流れが一方向なため、アプリの状態を把握しやすく、バグの原因を特定しやすいです。
4.豊富なエコシステムとライブラリ
・状態管理(Redux、Recoil、Zustandなど)
・ルーティング(React Router)
・UIライブラリ(Material UI、Chakra UI、Tailwind CSSなど)
・開発支援ツール(React DevTools)
5. 活発なコミュニティと継続的なアップデート
・ドキュメントが豊富で、困ったときに情報を得やすい
・バグ修正や新機能が活発にリリースされている
6. サーバーサイドレンダリング(SSR)や静的サイト生成(SSG)にも対応
Next.js などのフレームワークと組み合わせることで、SEOにも強いWebサイトが作れます。
7. クロスプラットフォーム展開も可能
React Nativeを使えば、Reactの知識を活かしてモバイルアプリも開発できます。
WebサイトにおけるReactとは何か、従来のhtml、cssと比較
React(正式には「React.js」)は、Facebookが開発したJavaScriptライブラリで、主にUI(ユーザーインターフェース)を効率的に作るために使われます。
【従来のHTML+CSS+JavaScriptによる開発】
[特徴]
・各ページにHTMLファイルを用意し、CSSでデザイン、JavaScriptで動きをつける。
・UIを構成するパーツ(ボタンやナビゲーションバーなど)は手動で管理・再利用。
・ページ全体が読み込まれ、必要に応じて再読み込みが発生する(=ページ遷移が遅くなりがち)。
[問題点]
・同じUIを複数ページで使いたいとき、コピー&ペーストになる。
・複雑な状態管理(例えばユーザーログイン情報、カートの中身など)が難しい。
・ページの一部だけを更新するのが面倒。
【Reactによる開発】
[特徴]
・HTML、CSS、JavaScriptを1つの「コンポーネント」としてまとめて扱う。
・ページの一部だけを効率的に更新できる(=速くてスムーズなUI)。
・状態管理がしやすく、アプリのような動的サイトが簡単に作れる。
・JavaScriptの中にHTMLのような構文(JSX)を書くことで、より柔軟にUIを構成できる。
[問題点]
・JSX、Hooks、Context API、状態管理ライブラリ(Redux、Zustandなど)など、多くの概念を理解する必要がある。
・UIもロジックもすべてJavaScriptで書くため、JavaScriptの理解が不十分だと開発が困難。
・アプリケーション全体をJavaScriptとして一度に読み込むため、初回の表示が遅くなることがある。
従来のHTML
html
<button onclick="alert('Hello!')">Click Me</button>
React(JSX)
jsx
function MyButton() {
return <button onClick={() => alert('Hello!')}>Click Me</button>;
}
比較項目 |
従来のHTML/CSS |
React |
再利用性 |
低い(コピー&ペースト) |
高い(コンポーネント化) |
UI更新 |
ページ全体を更新 |
必要な部分だけ更新 |
コード構造 |
HTML/CSS/JSが分離 |
コンポーネントにまとめられる |
状態管理 |
基本的に手動 |
useStateなどの仕組みで簡単 |
学習コスト |
低め |
やや高め(JSX、フックなど) |
Webサイト開発におけるReactのチュートリアル
ステップ1:環境構築
Vite という高速ビルドツールを使います。
bash
npm create vite@latest my-react-app -- --template react
cd my-react-app
npm install
npm run dev
ステップ2:プロジェクト構造を理解する
Reactプロジェクトの典型的な構造は以下のようになります:
css
my-app/
├─ public/p
│ └─ index.html
├─ src/
│ ├─ App.jsx
│ ├─ main.jsx(Viteの場合)
│ └─ components/
│ └─ MyButton.jsx
・App.jsx がアプリ全体の中心。
・各部品は components/ に分けて書くと整理しやすい。
ステップ3:基本的なReactコードを書く
App.jsx
jsx
import React from 'react';
mport MyButton from './components/MyButton';
function App() {
return (
<div>
<h1>Hello React!</h1>
<MyButton />
</div>
);
}
components/MyButton.jsx
jsx
import React from 'react';
function MyButton() {
const handleClick = () => alert('ボタンがクリックされました!');
return <button onClick={handleClick}>クリックしてください</button>;
}
export default MyButton;
ステップ4:状態管理(useState)
jsx
import { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>現在のカウント: {count}</p>
<button onClick={() => setCount(count + 1)}>+1</button>
</div>
);
}
ステップ5:ルーティング(ページ遷移)
react-router-dom を使ってページ遷移を実装します。
bash
npm install react-router-dom
App.jsx
jsx
import { BrowserRouter, Routes, Route, Link } from 'react-router-dom';
import Home from './pages/Home';
import About from './pages/About';
function App() {
return (
<BrowserRouter>
<nav>
<Link to="/">ホーム</Link> | <Link to="/about">About</Link>
</nav>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</BrowserRouter>
);
}
ステップ6:スタイルを追加する
CSSファイルを直接インポートします。
Tailwind CSSやStyled Componentsなどを導入する方法も人気です
jsx
import './App.css';
ステップ7:デプロイ(公開)
Vercel や Netlify にGitHub経由でアップロードすれば、すぐにWeb上で公開できます。