なぜReactを使うのか
このページで学ぶこと
- 素のHTML/JS だけでは何が辛いかがわかる
- React がどんな問題を解決するかがわかる
- Next.js と React の関係がわかる
なぜ必要か(読む時間: 3〜4分)
素のHTML/JSでTodoアプリを作ると…
「Web・プログラミング基礎」でHTML/CSS/JSを学びました。
では、「ボタンを押したらTodoリストが増える」というアプリを素のJSで作るとどうなるでしょうか。
<!-- index.html -->
<ul id="todo-list"></ul>
<input id="input" type="text" />
<button onclick="addTodo()">追加</button>
<script>
function addTodo() {
const input = document.getElementById('input')
const li = document.createElement('li')
li.textContent = input.value
document.getElementById('todo-list').appendChild(li)
input.value = ''
}
</script>これくらいなら書けます。でも、機能が増えてきたら?
- 「完了したTodoはグレーにする」
- 「Todoを削除できる」
- 「未完了の件数を上部に表示する」
- 「完了済みだけフィルタリングする」
コードはすぐ複雑になります。「どのDOMがどの状態を持っているか」を追いかけるのが辛くなり、バグが増えます。
Reactが解決すること
React の考え方はシンプルです:
「データ(state)が変わったら、UIを自動的に更新する」
手動でDOMを操作する必要がなくなります。
素のJS: データが変わる → 自分でDOMを探して書き換える(手動)
React: データが変わる → UIが自動で再描画される(自動)コンポーネントという考え方
React では、UIをコンポーネントという部品に分けて作ります。
ページ全体
├── ヘッダーコンポーネント
├── Todoリストコンポーネント
│ ├── Todoアイテムコンポーネント(×何個も)
│ └── ...
└── フッターコンポーネント部品ごとに独立して作れるので、複雑なUIでも管理しやすくなります。
React と Next.js の関係
| 説明 | |
|---|---|
| React | UIを作るためのライブラリ。コンポーネント・state などの仕組みを提供する |
| Next.js | Reactをベースに作られたフレームワーク。ルーティング・SSR・APIルートなど実用的な機能が揃っている |
React だけでもアプリは作れますが、Next.js を使うとルーティングや API サーバーの機能が最初から使えて便利です。
とんペディアでは Next.js 16 の App Router を使います。
Next.jsプロジェクトをセットアップしよう
ステップ1: プロジェクトを作成する
VS Code のターミナルを開いて(Windows: Ctrl + @ / Mac: Ctrl + `)、以下を実行する。
npx create-next-app@latest my-appいくつか質問が出るので、以下のように答える。
✔ Would you like to use TypeScript? › No(← JavaScriptで学ぶため)
✔ Would you like to use ESLint? › Yes
✔ Would you like to use Tailwind CSS? › No(← 後で追加する)
✔ Would you like your code inside a `src/` directory? › No
✔ Would you like to use App Router? › Yes(← 必ずYes)
✔ Would you like to use Turbopack for next dev? › No
✔ Would you like to customize the import alias? › Noステップ2: 開発サーバーを起動する
cd my-app
npm run devhttp://localhost:3000 をブラウザで開いて、Next.js のデフォルト画面が表示されれば成功。
ステップ3: フォルダ構成を確認する
my-app/
├── app/ ← ページやレイアウトを置く場所(App Router)
│ ├── layout.js ← 全ページ共通のレイアウト
│ ├── page.js ← / にアクセスしたときに表示されるページ
│ └── globals.css ← グローバルCSS
├── public/ ← 画像などの静的ファイル
├── package.json
└── next.config.mjsステップ4: page.js を書き換えてみる
app/page.js を開いて、中身を全部消して以下に書き換える。
// app/page.js
export default function Home() {
return (
<main>
<h1>こんにちは、React!</h1>
<p>Next.js のセットアップが完了しました。</p>
</main>
)
}ブラウザが自動でリロードされ、「こんにちは、React!」と表示されれば成功。
JSの中に HTMLっぽいものが書ける?
これは JSX という記法です。JavaScriptの中にHTMLライクなコードが書けます。
実際にはJavaScriptに変換されて実行されますが、見た目はHTMLに近いので直感的に書けます。
確認しよう
-
npx create-next-app@latestでプロジェクトを作成した -
npm run devで開発サーバーが起動した -
app/page.jsを書き換えて、ブラウザに反映された
AIに聞いてみよう
「ReactのVirtual DOMとは何ですか?初心者向けに説明してください」