image-【今スグ分かる】『Reactサーバー・コンポーネント』とは?

【今スグ分かる】『Reactサーバー・コンポーネント』とは?

pen-icon2025.7.5rewrite-icon2026.3.30

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


なぜRSCは新しいのか?

SPAとSSRとの違いから、Partial RenderingとRSC Payloadの仕組みまで。

図解で分かりやすく紹介します。

Profile Pic

筆者:三好アキ(専門用語なしでプログラミング)

▶︎ 三好アキの著書一覧はこちら

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削減を実際に確認したい人は、こちらの記事を参考にしてください。)

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

image

⚫︎ https://monotein.com/present-for-readers

前々回と、前回の記事で見た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"
    }
}

よくある質問(FAQ)

Q1. RSCはNext.jsを使わないと使えませんか?

現時点では、RSCを実用的に使える環境としてNext.jsが最も一般的です。

RSCはReact本体の機能ですが、実際の開発ではNext.jsと組み合わせて使うのが主流です。

Next.jsは3分で使えるので、下記ガイドを参考にしてください。

image

monotein.com/present

Q2. データベースを使う場合、RSCのメリットはどう変わりますか?

データベースとの連携があるケースでは、RSCのメリットがより明確になります。

サーバーコンポーネントがデータベースに直接アクセスしてデータを取得し、その結果だけをクライアントに渡せるためです。

詳しくは次に紹介する記事をご覧ください ▼

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

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

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

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

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

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

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

image

monotein.com/present

Profile Pic

✤ 筆者 ✤
三好アキ(専門用語なしでプログラミング)


「専門用語なし」のメソッドで1,200人以上のビギナーをフロントエンド開発入門に成功させる。翔泳社『動かして学ぶ!Next.js/React開発入門』(韓国でも出版)など著書25冊以上。Amazonベストセラー1位複数回獲得。


React、Next.js、TypeScriptなどの最新情報や初心者向けコンテンツを、無料メルマガ配信中。メールアドレスだけで登録可 ▶︎ 無料メルマガ登録