Skip to Content
ドキュメントWebコースReactの基本なぜReactを使うのか

なぜ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>
html

これくらいなら書けます。でも、機能が増えてきたら?

  • 「完了したTodoはグレーにする」
  • 「Todoを削除できる」
  • 「未完了の件数を上部に表示する」
  • 「完了済みだけフィルタリングする」

コードはすぐ複雑になります。「どのDOMがどの状態を持っているか」を追いかけるのが辛くなり、バグが増えます。

Reactが解決すること

React の考え方はシンプルです:

「データ(state)が変わったら、UIを自動的に更新する」

手動でDOMを操作する必要がなくなります。

素のJS: データが変わる → 自分でDOMを探して書き換える(手動)
React:  データが変わる → UIが自動で再描画される(自動)
plaintext

コンポーネントという考え方

React では、UIをコンポーネントという部品に分けて作ります。

ページ全体
├── ヘッダーコンポーネント
├── Todoリストコンポーネント
│   ├── Todoアイテムコンポーネント(×何個も)
│   └── ...
└── フッターコンポーネント
plaintext

部品ごとに独立して作れるので、複雑なUIでも管理しやすくなります。


React と Next.js の関係

説明
ReactUIを作るためのライブラリ。コンポーネント・state などの仕組みを提供する
Next.jsReactをベースに作られたフレームワーク。ルーティング・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
bash

いくつか質問が出るので、以下のように答える。

✔ 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
plaintext

ステップ2: 開発サーバーを起動する

cd my-app
npm run dev
bash

http://localhost:3000 をブラウザで開いて、Next.js のデフォルト画面が表示されれば成功。

ステップ3: フォルダ構成を確認する

my-app/
├── app/                ← ページやレイアウトを置く場所(App Router)
│   ├── layout.js       ← 全ページ共通のレイアウト
│   ├── page.js         ← / にアクセスしたときに表示されるページ
│   └── globals.css     ← グローバルCSS
├── public/             ← 画像などの静的ファイル
├── package.json
└── next.config.mjs
plaintext

ステップ4: page.js を書き換えてみる

app/page.js を開いて、中身を全部消して以下に書き換える。

// app/page.js
export default function Home() {
  return (
    <main>
      <h1>こんにちは、React!</h1>
      <p>Next.js のセットアップが完了しました。</p>
    </main>
  )
}
javascript

ブラウザが自動でリロードされ、「こんにちは、React!」と表示されれば成功。

JSの中に HTMLっぽいものが書ける?
これは JSX という記法です。JavaScriptの中にHTMLライクなコードが書けます。
実際にはJavaScriptに変換されて実行されますが、見た目はHTMLに近いので直感的に書けます。


確認しよう

  • npx create-next-app@latest でプロジェクトを作成した
  • npm run dev で開発サーバーが起動した
  • app/page.js を書き換えて、ブラウザに反映された

AIに聞いてみよう

「ReactのVirtual DOMとは何ですか?初心者向けに説明してください」


次のステップ

コンポーネントを作ってみよう

Last updated on