フロントエンドの全体像 — 「何で作る」×「どこで描画する」

📖 このページのゴール:フロントエンドの数えきれない選択肢(素のJS・React・Vue・SPA・SSR・Next.js…)を、バラバラの暗記項目ではなく、たった2つの問いでできた1枚の地図の上に並べられるようになること。この地図さえ手に入れば、あとのページがぐっと読みやすくなり、この先どんな新しい名前が出てきても怖くなくなります。 ← 目次・はじめにへもどる


🧭 いちばん大事なこと:選択肢は「2つの問い」で見通せる

最初に、このガイドでいちばん大事なことを言ってしまいます。フロントエンドの技術がたくさんあるように見えるのは、軸を持たずに眺めているからです。 次のたった2つの問いに分けると、一気に見通せます。

問い① 何で作る?     … 命令的(素のTS/JS) → 宣言的(React/Vue)
問い② どこで描画する? … ブラウザ(SPA) ↔ サーバー(SSR/SSG) ↔ 混ぜる(ハイブリッド)

このガイドは、ぜんぶこの2軸の上に乗っています。横軸(問い①)が「道具」、縦軸(問い②)が「描く場所」。 どんな新しい流行り言葉も、この2軸の交差点のどこかに置けます。では、ひとつずつほどいていきます。


🛠️ 問い①「何で作る?」— 手で動かす vs 状態を書く

まず言葉をほどきます。フロントエンドは結局、画面(DOM)を書き換える仕事です。

🟢 DOM(ドム) … ブラウザが持っている「画面の部品ツリー」のこと。ボタン・文字・画像などが枝分かれして並んでいます。JavaScript がこのツリーを書き換えると、表示が変わります。 フロントエンドの正体は、つきつめると「DOMをどう書き換えるか」です。

その「書き換え方」に、大きく2つの流派があります。

🤖 命令的(素のTS/JS)=手で人形を動かす

命令的(めいれいてき)とは、やることを1手順ずつ自分で指示するやり方です。素のJavaScript はこちら。「このボタンが押されたら、この文字を取り出して、この場所のDOMをこう書き換えろ」と、手順をぜんぶ自分で書きます。

🤖 たとえるなら、手で人形を動かすのと同じ。「右手を上げろ」「次は左足を出せ」と、動きを毎回ぜんぶ指示します。思いどおりに動かせますが、複雑な動きになるほど指示の量が爆発します。

🪄 宣言的(React / Vue)=「今は喜び」と書けば笑顔になる

宣言的(せんげんてき)とは、手順ではなく「結果(こうあってほしい状態)」を書くやり方です。React や Vue はこちら。「いまの状態がこうなら、画面はこう」とだけ書いておくと、実際のDOMの書き換えはフレームワークが裏で勝手にやってくれます。

🪄 たとえるなら、人形に「今は“喜び”」と書いた札を貼るだけで、勝手に笑顔の姿になるようなもの。あなたは「どう動かすか」ではなく「どうなっていてほしいか」を書くだけ。手順は人形(フレームワーク)が面倒を見ます。

この「状態を変えれば画面が自動で追いつく」性質を リアクティブ(reactive=反応する)と呼びます。React の名前もここから来ています。

  命令的(素のTS/JS) 宣言的(React / Vue)
たとえ 🤖 手で人形を動かす 🪄「今は喜び」と書けば笑顔になる
あなたが書くもの 手順(どう書き換えるか) 状態(どうあってほしいか)
DOMの書き換え 自分でやる フレームワークが自動でやる(リアクティブ)
向いている規模 小さい・単純な画面 大きい・複雑で変化の多い画面

🟢 どちらが偉い、ではありません。 小さな飾り程度なら素のJSで十分。状態がたくさん絡む複雑な画面ほど、宣言的(React/Vue)が効いてきます。これが本書 02〜05ページのテーマです。


🍳 問い②「どこで描画する?」— 厨房で作る?客が作る?作り置き?

次は縦軸。同じ画面でも、「画面を組み立てる(=レンダリング)作業を、どこでやるか」で性格がまるで変わります。

🟢 レンダリング … 画面を組み立てて表示すること。この作業をブラウザ側でやるか、サーバー側でやるかが、ここでの分かれ道です。

ここは料理の出し方でたとえると一生忘れません。

描画の場所 たとえ(料理の出し方) ひとことで 主な英略語
ブラウザで描く 🍳 材料(JS)を送って、客が自分で調理 最初は待つが、以後の操作はサクサク CSR / SPA
サーバーで描く 👨‍🍳 厨房で作って、皿で出す すぐ食べられる(初回が速い・SEOに強い) SSR / SSG / MPA
混ぜる 🍱 作り置きも厨房も注文も使い分け ページごとに良いとこ取り ハイブリッド

少しだけ言葉をほどきます(詳しくは第2部 06〜09ページ)。

  • 🟢 SPA(CSR) … SPA=シングルページアプリケーション、CSR=クライアントサイドレンダリング。サーバーはほぼ空のHTMLと、JSの束を送るだけ。画面を組み立てるのはブラウザのJSです。🍳 材料を送って客が調理するスタイル。最初の調理(JSのダウンロードと実行)に時間がかかりますが、いちど動き出せばページ遷移はサクサク
  • 🟢 SSR(サーバー描画) … SSR=サーバーサイドレンダリング。サーバーで完成HTMLを作って送るので、👨‍🍳 厨房で作った皿が出てくるようにすぐ見られて、検索エンジンにも優しい
  • 🟢 SSG(作り置き) … SSG=静的サイト生成。前もって(ビルド時に)HTMLを作り置きしておき、配信するだけ。最速・最安・安全。ブログやLP(ランディングページ)など、内容があまり変わらないもの向き。
  • 🟢 MPA(昔ながら) … MPA=マルチページアプリ。リンクを押すたびにサーバーが新しいHTMLを返して毎回ページを読み直す、いにしえの基本形です。
  • 🟢 ハイブリッド … Next.js などが代表。🍱 1つのサイトの中で、ページごとに「ブラウザ描画/サーバー描画/作り置き」を混ぜます。一部だけサーバーで動かす」こともでき、ここが後で効いてくる勘どころです。

💡 横軸(問い①)と縦軸(問い②)は別の話です。「React(宣言的)でSPA」も「React でSSR」もある。「素のJS でSPA」も「素のJS でMPA」もある。道具(①)と描く場所(②)は、自由に組み合わせられます。


🗺️ だから、新しい名前が出てきても怖くない

このガイドのいちばんの狙いはここです。流行り言葉に振り回されない1枚の地図を持つこと。

              宣言的(状態を書く:React/Vue)
                        ▲
   React の SPA          │          Next.js / Nuxt
   Vue の SPA            │          (ハイブリッド・一部サーバー)
                        │
 ブラウザで描く ◀────────┼────────▶ サーバーで描く
   (SPA / CSR)         │          (SSR / SSG / MPA)
                        │
   素のJS の SPA          │          昔ながらのMPA / Astro(作り置き)
                        ▼
              命令的(手順を書く:素のTS/JS)

🟢 新しい名前が出てきたら、こう問うだけ。「これは①が命令的か宣言的か?」「②はブラウザ寄りかサーバー寄りか、混ぜるのか?」——たいていの流行りは、この2軸の地図のどこかにぽんと置けます。 用語そのものより、地図の上の位置でつかむのがコツです。


🔑 最初に握っておく勘どころ

各ページでくり返し出てくる「背骨」を、先に3つだけ。

  • 🔒 SPAでも、APIキー・秘密はフロントに出さない。 ブラウザに送ったJSは中身が丸見えです。一方、SSR や「一部をサーバーで動かす」仕組みなら、秘密をサーバー側に置けるのが利点(姉妹教材の「鍵を守る」と地続き)。
  • 🔎 SEO・初回の速さが要るなら SSR/SSG、アプリ的な操作中心なら SPA。 用途が描く場所を決めます。
  • 🌱 まず素のHTML/JSで動かし、必要になってからフレームワーク。 最初から全部盛りにしない——これがいちばんやさしい入り口です。

🤝 姉妹教材(Twitter/ChatGPTクローン)が素のTS/JSで書かれているのは、「仕組みに集中し、フレームワークに依存しない」ため。実務では React/Vue が主流です——その両方の理由を、このガイドで回収します。


🔗 「どこに置く?」は姉妹編と地続き

「どこで描画するか(②)」が決まると、次に「できたものを どこに置いて配るか(ホスティング)」が問題になります。これは姉妹編とそのまま地続きです。

  • SPA / SSG(作り置き・JSの束)→ 静的ホスティング(Vercel / Netlify / Cloudflare Pages / GitHub Pages …)。
  • SSR(サーバーで都度作る)→ サーバー/サーバーレス(Vercel / Netlify Functions / Cloudflare Workers …)。

これらの「置き場所(PaaS・サーバーレス)」の中身は、姉妹編 コンピューティングの選択肢 で1本のはしごとして解説しています。本書とあわせて読むと、「何で作り → どこで描き → どこに置くか」が一直線につながります。


📖 この先の読み方

このページで手に入れた「2つの問いの地図」が、全ページ共通の土台です。この先はこう進みます。

  • 第1部(02〜05)=問い①「何で作る?」:素のTS/JS → React → Vue → その他(jQuery/Svelte/Solid/Angular)の順で、同じ小さなUIを見比べながら、命令的→宣言的の流れをつかみます。
  • 第2部(06〜09)=問い②「どこで描画する?」:SPA → SSR → SSG → メタフレームワーク(Next.js/Nuxt/Astro)。どこで何が起きるかを1つずつ。
  • 第3部(10〜12)=道具とまとめ:ビルドツール(Vite)とホスティング → フローチャート&早見表 → 用語ミニ辞典。

急ぐ人は、まずこの地図だけ頭に入れて、第3部のまとめ(フローチャート&早見表)へ飛んでも、最初の一手は選べます。


🟢 ひとことで言うと

フロントエンドの選択肢は多く見えますが、正体はたった2つの問い——「①何で作る?(命令的な素のJS → 宣言的なReact/Vue)」と「②どこで描画する?(ブラウザのSPA ↔ サーバーのSSR/SSG ↔ 混ぜるハイブリッド)」——でできた1枚の地図です。横軸が道具、縦軸が描く場所で、両者は自由に組み合わせられます。新しい名前が出てきても、この2軸の上に置けば迷子になりません。

➡️ 次へ

次のページ:素のTS/JS(バニラ)— 自分でDOMを動かす → ← 目次・はじめにへもどる