blog-hero-img

今さら聞けない【RSC】とは?(Reactサーバー・コンポーネントの仕組み)

pen-icon2025.7.4

この記事は約2分で読めます

Profile Pic

この記事の筆者:三好アキ


🟢 専門用語なしでプログラミングを教えるメソッドに定評があり、1200人以上のビギナーを、最新のフロントエンド開発入門に成功させる。
🟢『はじめてつくるReactアプリ with TypeScript』、『動かして学ぶ!Next.js/React開発入門(翔泳社/*韓国でも出版)』著者。


▼ Amazon著者ページはこちら
amazon.co.jp/stores/author/B099Z51QF2



SSRからRSCへ

前々回の記事(SPA)と、前回の記事(SSR)で、それぞれ「SPA(シングル・ページ・アプリケーション)」および「SSR(サーバー・サイド・レンダリング)」を紹介しました。

そしてSPA、SSR、どちらであっても「クライアントが使うJavaScriptをとにかくすべて送る」という点が同じであることにも触れました。

図で示すと、次のようになっています。

▼ SPA

mpa.png

▼ SSR

mpa.png

ここを改善したものが、本記事で紹介する「RSC(Reactサーバー・コンポーネント)」になります。

登場時期
MPA(マルチ・ページ・アプリケーション) SPA以前(2000年ごろ)
SPA(シングル・ページ・アプリケーション) 2010年ごろ
SSR(サーバー・サイド・レンダリング) 2016年ごろ
RSC(Reactサーバー・コンポーネント) 2022年ごろ

RSCの仕組み

RSCにおいても、SSRのように初回リクエスト時に「一部組み立てたHTMLファイル」と「JavaScript」を送るという点は同じです(つまりRSCとSSRは一緒に使うことができます)。

しかし送るJavaScriptの量が違います。

ブラウザで必要な量だけにしぼって送るのです。

rsc-1.png

なぜこのようなことが可能かというと、初回リクエストがあったとき、サーバーはRSCのコードを実行し、この段階でJavaScriptを処理しているからです。

ここでクライアントに送るJavaScriptの量が必要最低限になるよう絞っています。

(*JavaScript削減を実際に確認したい人は、こちらの記事を参考にしてください。)

ではページ移動時にはどうなのでしょうか。

前々回と、前回の記事で見たSPAとSSRでは、サーバーとのやりとりがなく、これがページ移動のスピードが速い理由でした。

実はRSCでは、ページ移動時にはサーバーとのやりとりが発生します。

rsc-2.png

図を見るとリクエストが送られており、SPA以前の仕組み(=MPA)に戻ったようですが、大きな違いがあります。

RSCでは「ページの変更箇所だけを部分的に更新する」ということが可能なのです。

なおMPA(マルチ・ページ・アプリケーション)については、下記記事に目を通してください。

RSCとMPAの違い

MPAでは新しいページを表示するとき、ページは全体がリロードされていました。

サーバーから毎回、新しいページに必要なHTMLとJavaScriptを受け取り、それでページを上書きするように表示していたからです。

たとえばすべてのページで表示されるヘッダーやフッターも、クライアント側で使いまわされるのではなく、毎回サーバーから送られてきていました。

一方、RSCにおけるページ移動時には、「変更箇所だけを部分的に更新する」という方法が使われます(これはPartial Renderingと呼ばれます)。

rsc-3.png

この結果、サーバーから送られてくるものはごく少量で済み、さらにページ全体がリロードされることもなくなります。

サーバーから送られてくるものはHTMLやJavaScriptではなく、最適化・軽量化された「RSC Payload」と呼ばれるものです。

「RSC Payload」のコード例

RSC Payloadとは下記のようなものです。HTMLではなくJSON形式のデータであるのがわかります。

{
    "data": {
        "children": [
            {
                "type": "h1",
                "key": null,
                "props": {
                    "children": "Hello, Server Components!"
                }
            },
            {
                "type": "p",
                "key": null,
                "props": {
                    "children": "This is rendered on the server and streamed to the client."
                }
            }
        ]
    },
    "metadata": {
        "status": "complete"
    }
}

もっと詳しく知りたい人へ

以上、本記事まで4連続でウェブアプリケーションの発展の歴史を見てきました。

MPA、SPA、SSR、そしてRSCという流れです。

しかし実は、ここまでの説明はすべて「データベースを使っていない場合」の解説でした。

説明を簡略化するためです。

データベースとの連携があるケースでは、特にReactサーバー・コンポーネントのメリットがよりわかるようになります。

Reactサーバー・コンポーネントについて、その原理からメリット、デメリットまで、一段深く知りたい人は下記記事を参考にしてください。

Profile Pic

🟩 フロントエンド開発者入門ガイド【無料配布中】


最初にこれが知りたかった!
フロントエンド初心者が必ず押さえておきたい ― 『挫折しない勉強法』とその具体的ステップ、無料配布中。
(*名前不要・メールアドレスだけで受け取り可能です)