TL

SPA と MPA

ページ遷移を JavaScript で差し替える SPA と、サーバが毎回ページを返す MPA の違いです。体感速度・初期表示・SEO のトレードオフを整理します。

中級SPAMPAアーキテクチャ最終更新: 2026-06-06
TL;DR要点だけ先に
  • 1.SPA は最初に 1 枚のページを読み込み、以降は JavaScript で中身だけ差し替える。MPA は遷移のたびにサーバが新しいページを返す。
  • 2.SPA は遷移が速くアプリ的だが初期表示が重い。MPA は初期表示と SEO に強いが、遷移ごとに全体を読み直す。
  • 3.二択ではなく中間が主流。MPA に部分的な動きを足す、SPA を初回だけサーバ描画するなど、いいとこ取りが現実解。

SPA と MPA とは

Web サイトの作り方には、大きく 2 つの設計思想があります。ページ遷移のたびに何が起きるかが、両者の決定的な違いです。

  • MPA(Multi-Page Application):リンクをクリックするたびに、サーバが新しい HTML ページをまるごと返す。昔ながらの Web の形。
  • SPA(Single Page Application):最初に1 枚のページを読み込んだら、あとは JavaScript が必要な部分だけ書き換える。ページ全体の再読み込みは起きない。

MPA は「本をめくる」イメージ、SPA は「1 つの画面の中身が動的に入れ替わる」イメージです。どちらが優れているという話ではなく、向き不向きがあります。

MPA:ページ単位で完結する

MPA では、各 URL がそれぞれ独立した HTML ページに対応します。//about/products はすべて別ファイル(または別の動的生成)で、遷移のたびにブラウザはサーバへ要求し、返ってきたページを最初から描画し直します。

MPA の遷移
クリック → サーバへ要求 → 完成HTMLが届く → ページ全体を再描画
(毎回まっさらから組み立てる)

仕組みが素直なので、サーバ側のフレームワーク(PHP、Ruby on Rails、Django など)だけで完結しやすく、各ページが独立しているぶん初期表示が速く、SEO にも強いのが特長です。半面、共通のヘッダーやサイドバーも遷移のたびに読み直すため、画面が一瞬白くなるような体験になりがちです。

SPA:JavaScript が画面を差し替える

SPA では、最初のアクセスでアプリ本体の JavaScript を読み込みます。以降の「ページ遷移」は本物の遷移ではなく、JavaScript が API でデータだけ取得し、画面の必要な部分を書き換えて URL の表示を更新する、という見せかけの遷移です。

SPA の遷移
クリック → JSが必要なデータだけ取得(API) → 該当部分のみ差し替え
(ページ全体は読み直さない)

ページ全体を読み直さないため、遷移がほぼ瞬時で、ネイティブアプリのような滑らかさが得られます。React・Vue・Angular といったフレームワークがこの作りを支えます。一方、最初に大きな JavaScript を読み込む必要があり、初期表示が重くなりがちです。

URL が変わるのに再読み込みされない理由

SPA は History API(pushState)でアドレスバーの URL だけを書き換え、実際のページ遷移を抑止しています。だから戻る・進むボタンやブックマークは効くのに、画面は白くならない。この「ルーティングを JavaScript が肩代わりする」のが SPA の中核技術です。

トレードオフを一枚で

どちらを選ぶかは、次の観点を天秤にかけて決めます。

観点SPAMPA
初期表示△ 重い(大きな JS を待つ)○ 速い(完成 HTML が届く)
画面遷移◎ 瞬時・滑らか△ 毎回読み直しで白くなる
SEO / リンクプレビュー△ 工夫が要る(JS 実行前は空)◎ 標準で強い
サーバ負荷○ API のみで軽め△ 毎回ページ生成
実装の複雑さ△ 状態管理・ルーティングが必要○ 素直で枯れている
向く用途管理画面・ダッシュボード・SNS記事・LP・EC の商品ページ

ポイントは、**SPA は「使い込む画面」、MPA は「見て回る画面」**に向くということです。ログイン後に長く操作するダッシュボードは SPA が快適で、検索から訪れて数ページ見る記事サイトは MPA が堅実です。

SPA は SEO とリンクプレビューに注意

SPA が返す初期 HTML は中身が空(<div id="root"></div> だけ)のことが多く、検索エンジンや SNS の OGP 取得 bot が本文を読めない事故が起きます。bot の多くは JavaScript を実行しないか、実行が遅延・不確実だからです。公開・集客が重要なページは、後述のサーバ側描画で完成 HTML を返すのが安全です。

二択ではなく「いいとこ取り」が主流

現実には、純粋な SPA か純粋な MPA かの二択ではありません。両者の長所を組み合わせる手法が一般的です。

  • MPA に部分的な動的化を足す:基本は MPA の作りのまま、一部だけ JavaScript で動かす。最近は HTML の断片をサーバから差し替える軽量な手法(hotwire / HTMX 系)も人気。
  • SPA を初回だけサーバ描画する:SPA でありながら、最初のページだけサーバで完成 HTML を作って返す(SSR)。これで初期表示と SEO の弱点を補い、2 回目以降は SPA の滑らかさを得る。

この「初回はサーバ描画、以降は SPA」がいわゆるハイブリッドで、Next.js や Nuxt のようなメタフレームワークが標準で支えています。どこで HTML を作るか(CSR / SSR / SSG)の整理は SPA / SSR / SSG で詳しく扱っています。

迷ったら、コンテンツの性質で選ぶのが堅実です。「ユーザーが長く滞在し、頻繁に操作する」なら SPA 寄り、「検索から来て情報を読む」なら MPA 寄り。そして公開ページは初回だけでもサーバで完成 HTML を返す——この方針で大半のサイトは破綻しません。

まとめ

  • MPA:遷移ごとにサーバが完成ページを返す。初期表示と SEO に強く、作りが素直。
  • SPA:最初に 1 枚読み込み、以降は JavaScript で差し替え。遷移が滑らかだが初期表示が重い。
  • 違いの本質:「ページを読み直すか」「JavaScript が中身だけ差し替えるか」。
  • 現実解:純粋な二択ではなく、初回はサーバ描画・以降は SPA のハイブリッドが主流。

土台となる HTTP/HTTPS や、SPA がデータを取得する REST API、別オリジン取得でつまずく CORS も合わせて押さえると理解が深まります。

Web/フロントエンド Article

SPA と MPAを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

SPA

比較で見る軸

難易度: intermediate / カテゴリ: Web/フロントエンド / タグ数: 3

導入後に効く点

SPA は遷移が速くアプリ的だが初期表示が重い。MPA は初期表示と SEO に強いが、遷移ごとに全体を読み直す。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
intermediate
カテゴリ
Web/フロントエンド
タグ数
3

判断チェックリスト

  • 自社の用途が「SPA / MPA」に近いか確認する。
  • 強みである「SPA は最初に 1 枚のページを読み込み、以降は JavaScript で中身だけ差し替える。MPA は遷移のたびにサーバが新しいページを返す。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

SPAMPAアーキテクチャSPAMPAアーキテクチャ
参考: 公式情報