0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

React と Next.js の関係が腑に落ちていなかった話

Posted at

「React のフレームワークって何?」と感じた違和感の正体

React と Next.js について調べると、よく次のように説明されます。

  • React は JavaScript のライブラリ
  • Next.js は React のフレームワーク

ここまでは理解できていました。
しかし、この関係性がどうにもピンときませんでした。


フレームワークとライブラリの一般的な理解

まず、自分の中では次のように整理していました。

  • フレームワーク
    アプリ全体の骨組みや流れを提供し、その決められた枠(ホットスポット)にコードを書いていくもの

  • ライブラリ
    必要な機能を、必要なタイミングで呼び出して使う部品集

つまり、

フレームワークを使ってアプリを構築し、その中で必要に応じてライブラリを使う

というイメージです。
これは多くのフレームワークで当てはまると思います。


そこで生まれた違和感

この一般論に当てはめると、次の疑問が生まれました。

  • Next.js を使ってアプリを作る
  • その中でライブラリを使う
  • だったら React もその「使われるライブラリの一つ」なのでは?

しかし実際には、

  • Next.js は「React のフレームワーク」と呼ばれる
  • React は必須で、外せない存在

ここがどうしても腑に落ちませんでした。

さらに言うと、

  • JavaScript という言語があり
  • TypeScript はその別言語として並んでいて
  • その上に React があり
  • さらにその上に Next.js がある

このような階層構造に見えてしまい、
「React がフレームワークの一部、という説明は矛盾していないか?」
と感じていました。


理解の転換点:React は「UI に特化したライブラリ」

整理して分かったのは、React がかなり特殊な立ち位置にいるということです。

React は、

  • ルーティングを持たない
  • データ取得の仕組みを持たない
  • ビルドや実行の方法を定義しない

React が担当しているのは、ほぼ UI レイヤーだけです。

  • 状態をどう持つか
  • UI をどう再描画するか
  • コンポーネントをどう組み立てるか

つまり、React 単体では「アプリ」になりません。


Next.js の役割がはっきりした

一方で Next.js は、

  • ルーティング
  • ビルド・実行環境
  • SSR / SSG / ISR
  • データ取得の流れ
  • ディレクトリ構成

といった、アプリとして成立させるための枠組みを提供します。

重要なのは、

Next.js は「React を使うことを前提に作られたフレームワーク」

だという点です。

Next.js の内部では React が使われており、
React は 差し替えられない前提技術になっています。


関係性を図にすると

理解後は、次の構造として捉えるとしっくりきました。

Next.js(フレームワーク)
 └── React(UIライブラリ・必須)
      └── 自分が書くコンポーネント
  • Next.js は React を内包する
  • React は Next.js なしでも使える
  • 主導権(制御権)は Next.js 側にある

この上下関係がポイントでした。


なぜ React がややこしく見えるのか

React が「フレームワークっぽく」見える理由は、

  • Hooks による強い設計思想
  • コンポーネント中心の考え方
  • アプリ全体の書き方に大きく影響する点

にあります。

しかし、アプリ全体の流れを支配しているわけではないため、
分類としてはあくまでライブラリです。

ただし、普通のライブラリよりも影響範囲が圧倒的に広い。
ここが混乱の原因だったと感じています。


まとめ

  • React は「UI を作るためのライブラリ」
  • Next.js は「React を使ってアプリを作るためのフレームワーク」
  • React はフレームワークとライブラリの中間のような、特殊な存在
  • 違和感を持ったのは自然で、むしろ正しい疑問だった
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?