【Webアプリ開発2026 #9】SSR(Server Side Rendering)

サーバー側でデータ取得・HTMLレンダリングを行うことで、CSRの欠点を補ったもの。

📖ページ表示方法

  1. ユーザーはサーバーへリクエストを送り、サーバーは対応したページをレスポンスとして返却
    • 必要なデータがあれば、サーバーでAPIを叩きデータを取得した上でHTMLに埋め込む
  2. クライアント側でJavaScriptをもう一度走らせることで動的な動作が行える状態にする

💭実装イメージ

  • Next.jsではgetServerSidePropsを使うことでサーバーサイドで実行される
    export default function Page({ data }) {
      // Render data...
    }
     
    // This gets called on every request
    export async function getServerSideProps() {
      // Fetch data from external API
      const res = await fetch(`https://.../data`)
      const data = await res.json()
     
      // Pass data to the page via props
      return { props: { data } }
    }
    https://nextjs.org/docs/pages/building-your-application/rendering/server-side-rendering
  • https://learn.svelte.jp/tutorial/ssr: デフォルトでON

メリット

デメリット

  • サーバ側でのHTML生成が必要なため、SSR用のサーバーが必要になる
  • 表示完了から操作可能になるまでにタイムラグがある
    • 表示は返ってきたHTMLをそのまま表示するだけ
    • JavaScriptが必要な処理はHydrationの完了を待つ必要がある

有名なSSR対応フレームワーク