⚛️

Next.jsとは何か?Reactとの違いとChatGPT

に公開

はじめに

こんにちは。Sorairoです。
「ReactとNext.jsは何が違うのだろう?」
Webアプリ開発を始めると、このような疑問を持つ方は多いと思います。
この記事では、ReactとNext.jsの違いを整理しながら、Next.jsがどのようにWebアプリ開発をシンプルにするのかをご説明します。

1. ReactとNext.jsの関係

React:UIを構築するためのライブラリ
→ 画面の見た目や状態管理に特化しており、Webアプリケーションの「フロントエンド」の部分だけを担います。
Hooks(useState, useRefなど)が用意されており、コンポーネントを組み合わせながらUIを構築するのが基本です。

Next.js:Reactをベースにしたフレームワーク
→ Reactに「サーバー機能」や「ルーティング」など、Webアプリケーション開発に必要な仕組みを追加したものです。
React単体では不足している部分を補い、アプリケーション全体を構築できるようにしてくれます。

2. Webアプリケーションの三層構造

Webアプリケーションは、大きく分けて以下の3つの層で構成されています。

層            役割
Webサーバー :ユーザーからのリクエストを受け取り、HTTPレスポンスを返します
アプリケーションサーバー :データの処理ロジック(追加・削除・変更など)を担当します
データベースサーバー   :データを保存するためのサーバーです

Reactだけではフロントエンドでの動作にとどまり、アプリケーションサーバーやデータベースとの連携は別途考える必要があります。
しかし、Next.jsを利用するとAPI Routesを活用でき、アプリケーションサーバー的な役割を一部担うことが可能になります。

3. ChatGPTで例えるとわかりやすいかも...?

※ここでのChatGPTの例えは、あくまでも概念をイメージしやすくするためのものであり、実際のChatGPTの内部構造を正確に説明するものではありません。

ここで、これまでの内容をChatGPTの仕組みに当てはめて考えてみます。
こうすると、Next.jsがどのような役割を果たしているのかが、さらに直感的に理解できるかもと考えました。

Next.js(GPTの脳=サーバー)

→ ユーザーからの質問を受け取り、裏側で考え(処理)を実行する場所です。
→ API RoutesやSSR(サーバーサイドレンダリング)がこれにあたります。

React(考えを伝える=UI)

→ GPTが考えた答えを、ユーザーにわかりやすく表示するための部分です。
→ ブラウザ上で動作するUI(コンポーネント)がこれに該当します。

Vercel(ChatGPTを公開する仕組み)

→ GPTをクラウド上で動作させ、世界中のユーザーがアクセスできるようにするための基盤です。

Neon(GPTの記憶=データベース)

→ 過去の会話やデータを保存する場所です。

つまり、
ユーザーが質問(ブラウザ) → Next.jsが考える(サーバー) → Reactが答えを表示(UI)
という流れは、まさにChatGPTと同じ構造なのだと気付きました。

4. フロントエンド・バックエンド・インフラのつながり

Webアプリケーション開発では、「フロントエンド」「バックエンド」「インフラ」の3つをどのようにつなげるかが重要になります。

フロントエンド:UI部分(React)
バックエンド:APIやロジック(Next.jsのAPI Routes)
インフラ:アプリケーションを動作させるための基盤(VercelやAWS,GoogleCloud,MicrosoftAzureなど)

Next.jsを利用すると、Reactで構築したUIにAPIを追加し、そのままVercelにデプロイできます。
さらに、データベースはNeonのようなクラウドサービスを活用すれば、サーバー管理なしでDBまで揃えることが可能です。

5. Next.js × Vercel × Neonの流れ

Next.jsはVercelとの相性が非常に良いです。
例えば、以下の流れでアプリケーションを構築できます。

UIをReactで作成

Next.jsのAPI Routesでサーバー側の処理を追加

Neonでデータベースをクラウド上に用意

Vercelにデプロイして外部公開

これだけで、フロントエンドからバックエンド、データベース、そしてインフラまでをまとめて用意することができます。

6. まとめ

・ReactはUIに特化したライブラリ、Next.jsはReactにサーバー機能を追加したフレームワーク

・Webアプリケーションは「フロント」「バック」「インフラ」の3つで構成される

・Next.jsとVercel、Neonを組み合わせることで、インフラを意識せずフルスタック開発が可能

・ChatGPTの仕組みで例えると、全体像がよりイメージしやすい

ここまでお読みいただき、ありがとうございました😊

Discussion