システム開発
約20分
更新

モダンWeb開発の構成判断:Next.jsとヘッドレスCMSをどう組み合わせるか

執筆・編集Malake株式会社
まず押さえたいこと

この記事でいうモダンWeb開発とは、表示、コンテンツの管理、配信、動的な処理の役割を分け、要件に応じてフレームワーク、CMS、CDNや実行環境を組み合わせる設計の考え方です。決まった規格や、すべてを分割すべきという方式を指すものではありません。

この記事の要点

Next.jsやヘッドレスCMSを使うかは、技術の新しさではなく、誰が更新するか、承認やプレビューが必要か、更新をいつまでに反映したいか、認証・検索・取引などの機能があるか、公開後に誰が保守するかで決めます。CMSを使わない構成や、今のCMSを続ける選択も候補です。静的に生成する方式、再検証する方式、要求のたびに処理する方式では、更新が反映される条件と必要な実行環境が異なります。採用する前に、運用とセキュリティの担当と、失敗したときの対応を確認票で整理します。

この記事でわかること

  • 更新する人・必要な機能・保守の体制から、構成を選ぶための確認項目
  • SSG・ISR・SSRで、更新が反映される条件と必要な環境の違い
  • ヘッドレスCMSと一体型CMSで変わる、編集と保守の役割
  • 要件別の構成例と、運用・セキュリティの確認票

Next.jsとヘッドレスCMSは必要か:構成を選ぶ判断基準

Next.jsとヘッドレスCMSを使うかどうかは、技術の新しさではなく、誰がどのように更新するか、どんな機能が必要か、公開後に誰が保守するかで決めます。会社案内のように更新が少ないサイトなら、CMSを使わずに静的なファイルを配信する構成や、今使っているWordPressなどのCMSを続ける構成も候補です。社内の担当者が記事を頻繁に更新する、会員向けの機能がある、といった条件が加わると、CMSや動的な処理を組み合わせる理由が生まれます。

この記事でいう「モダンWeb開発」は、表示、コンテンツの管理、配信、動的な処理の役割を分けて考える設計の考え方です。分けるほど良いわけではなく、分けた部分ごとに保守の担当と費用が増えます。DXの進め方と同じく、まず要件と体制を確かめます。

次の確認票で、自社の条件を整理します。分からない項目は「未確認」として、次に調べることを決めます。

▼ 構成を選ぶための確認票の例
確認したいこと構成判断への影響未確認なら調べること
更新する人開発者だけが更新するなら、CMSを使わない静的な構成も選べる。社内の担当者が日常的に更新するなら、編集画面を持つCMSが候補になる誰が、どのくらいの頻度で、どのページを更新するか
承認とプレビュー公開前に別の人の承認や、実際の見た目での確認が必要なら、下書きのプレビューと承認の仕組みが要る承認する人の有無、プレビューで確認したい範囲、CMSの製品・プランで使える機能
反映したい時期公開後すぐに反映したいのか、数時間後や翌営業日でもよいのかで、ビルドの方法や再検証を使うかが変わる反映までに許容できる時間と、反映に失敗したときの連絡先
認証・検索・取引会員ごとの非公開データや、決済・予約を確定する処理は、サーバー側の認証・認可や専用のサービスを確認する。公開記事の検索は、静的な検索索引を作り、ブラウザ内で検索する構成も選べる(例:Pagefind)必要な機能と、既存のSaaSで代わりにできるか。検索の対象が公開してよい情報か、索引をいつ更新するか
保守の担当構成を分けるほど、フレームワーク・CMS・配信環境・連携のそれぞれに、更新と障害対応の担当が必要になる社内と委託先の担当範囲、依存するサービスの契約と所有者

フレームワークの総合的な順位を比べる必要はありません。Next.jsもAstroも、ビルド時に静的なページを作る使い方と、実行環境に合わせた要求時の処理の両方に対応しています(Astro:On-demand rendering)。確認票の条件に合い、社内や委託先が保守を続けられるかで選びます。

SSG・ISR・SSRの違いと、更新が反映されるタイミング

Next.jsでは、ページごとにHTMLを作るタイミングを選べます。違いは、CMSなどで内容を変えたときに、いつ公開ページへ反映されるかと、どんな実行環境が必要かに表れます。

▼ 配信方式ごとの更新の反映と必要な環境
方式更新が反映される条件必要な環境注意点
SSG(静的生成)ビルドしてHTMLを作り直し、公開したとき。CMSで公開しただけでは、サイトが更新されない構成がある静的なファイルを配信できるサーバーやCDN更新のたびにビルドと公開が要る。ビルドの失敗や反映の遅れを知らせる仕組みを決める
ISR(再検証による再生成)設定した期間を過ぎた後のアクセスや、再検証の要求をきっかけにページが作り直されたとき。作り直しが終わるまでは古い版が返るISRに対応した実行環境(Node.jsのサーバーや対応するアダプター)。静的exportでは使えない公開期限が厳しいページでは、再検証の条件、キャッシュ、失敗時の扱いを確認する。再検証の要求も即時の反映を保証しない
SSR(要求時の処理)閲覧の要求ごとにサーバーでHTMLを作るため、その時点で取得したデータが反映される要求時に処理を実行できるサーバーや実行環境取得先のデータやキャッシュが古ければ、その内容が表示される。利用者ごとの情報は、認証・認可とキャッシュの設計が必要

ISRは、時計で一定の間隔ごとに作り直す仕組みではありません。Next.jsの公式ドキュメントでは、期間を過ぎた後のアクセスにはいったん古いページを返し、裏で新しいページを作り、成功したら次のアクセスから新しいページを返す動きが説明されています。作り直しに失敗したときは、最後に成功したページが返り続けます(Next.js:ISR)。「CMSで公開してから何分以内に反映する」と約束するなら、この条件を前提に確かめます。

Next.jsを静的に書き出す構成(静的export)では、ISR、下書きを確認するDraft Mode、Server Actionsなど、サーバーが必要な機能はそのままでは動きません(Next.js:Static Exports)。フォームの送信や会員向けの機能が必要なら、静的なページとは別に、APIやサーバーレスの関数などの処理を置きます。静的なページに認証付きのAPIを組み合わせることはできますが、権限の確認はAPI側で行います。ブラウザで表示を隠すだけでは、データを守れません(Next.js:Data Security)。

SSRやISRを使う場合は、使いたい機能が、配信先の実行環境やアダプター、Next.jsの版で動くかを、採用する前に確認します。

ヘッドレスCMSで変わる編集と保守の役割

ヘッドレスCMSにも、記事を書いて公開する編集画面があります。違いは、公開サイトの見た目を作る部分を持たず、APIなどで内容を渡して、別に作った表示部分(Next.jsなど)が画面を作る点です。WordPressのような一体型のCMSも、APIで内容を渡す使い方ができるため、製品名だけで構成は決まりません。

▼ 一体型CMSとヘッドレス構成の比較
確認項目一体型CMSを使う場合ヘッドレス構成を使う場合
編集と公開の反映同じシステムが画面を作るため、管理画面で公開した内容が表示に反映されやすいCMSで公開した後、ビルド・再検証・要求時の取得のどれで表示側に反映するかを決める
承認とプレビュー標準の下書きとプレビューがある。承認の段階を増やすには、設定や追加の機能が要る場合がある下書きを実際の見た目で確認するには、表示側にプレビューの仕組みを作る。承認の機能は製品・プランで異なる
保守と権限本体・テーマ・プラグイン・サーバーの更新が要る。標準で管理者・編集者・投稿者・寄稿者などの権限があるCMS(SaaSなら提供者の運用)に加え、表示側のアプリ、依存ライブラリ、APIキー、配信環境の保守が要る。権限の細かさは製品・プランで異なる
連携とデータの変更プラグインで機能を追加しやすい一方、追加した分の更新と相性の確認が要るAPIで他のサービスやアプリと内容を共有しやすい。項目の定義を変えると、表示側の修正が要る

WordPressには、管理者・編集者・投稿者・寄稿者などの標準の権限があり、寄稿者は記事を書けても公開はできません(WordPress:Roles and Capabilities)。ヘッドレスCMSの権限は製品やプランで異なり、例えばmicroCMSのロール機能は特定のプランで提供されています(microCMS:ロール)。必要な承認の段階を、製品の機能と照らし合わせて確認します。

ヘッドレスの構成では、公開サイトから管理画面やデータベースを切り離せるため、攻撃を受ける入口を減らせる場合があります。一方で、APIキー、編集の権限、表示側のアプリ、連携の保守は残ります。下書きの取得や書き込みの権限を持つAPIキーをブラウザに渡すと、下書きの公開や外部からの書き込みにつながります(microCMS:APIキー)。デザインを刷新するときも、項目の定義やURLの変更が伴えば、表示側の改修だけでは終わりません。

CMSの製品ごとの編集・承認・多言語などの比べ方は、ヘッドレスCMSの選び方で扱っています。今のWordPressを続けるか移行するかは、WordPressからの移行手順を参照してください。

要件別の構成例:静的サイトと動的なWebアプリ

会社の規模や無料プランから構成を決めるのではなく、更新の方法と必要な機能から考えます。次の3つは、要件ごとの構成例です。

  • 例A:更新が少ない会社案内
    CMSを使わない構成や、今のCMSを続ける構成も候補です。静的に生成したHTMLなどをCDNから配信し、問い合わせフォームは別の受付先やAPIで処理します。フォームの実装は問い合わせフォームをWorkersで実装する方法で扱っています。
  • 例B:社内の担当者が記事を更新するサイト
    CMSで記事を書き、公開をきっかけにビルドして配信するか、対応する実行環境で再検証します。下書きのプレビュー、反映に失敗したときの通知と担当まで決めます。
  • 例C:会員向けの機能や業務アプリ
    利用者ごとのデータを扱うため、要求時の処理に対応した実行環境、認証と認可、データベース、キャッシュ、監視を設計します。すべてのページを動的にする必要はなく、会社案内や記事は静的に配信し、会員向けの画面だけを動的にする組み合わせもあります。

ECや予約は、専用のSaaSの標準機能や、別のサイトとして連携する方法も候補です。ヘッドレスの構成で作り込むかは、必要な画面と運用の担当から判断します。

Cloudflareを使う場合、静的exportしたNext.jsはCloudflare Pagesで配信でき、サーバーの機能を使うNext.jsはCloudflare Workersで動かす構成が案内されています(Cloudflare:Next.js on Pages)。2026年10月時点の公式ドキュメントでは、Workersでの実行にvinextを推奨しつつ、ベータ版のため互換性の確認を求めており、既存のOpenNextの構成向けの案内もあります(Cloudflare:Next.js on Workers)。新しく静的なサイトを作る場合は、WorkersのStatic Assetsも候補です(Cloudflare:Workers Static Assets)。使う機能が実行環境で動くかを公式ドキュメントで確かめてから選びます。PagesとWorkersの選び方はCloudflare PagesとWorkersの違い、維持費の考え方はホームページ維持費の記事で扱っています。

つまずきやすい点

CMS、配信、フォーム、分析などを別々のサービスに分けると、それぞれの契約・権限・障害対応の担当が増えます。分けた数だけ、誰が更新し、止まったときに誰が対応するかを決めておきます。

1. 編集・承認

CMSで下書きを作成
プレビューで見た目を確認
承認して公開

2. 取得・生成

公開をきっかけにビルドを開始
CMSから内容を取得
HTMLなどを生成

3. 配信・確認

CDNへ配置して公開
公開されたページを確認
失敗時は通知して前の版に戻す
← 横にスクロールできます →

例Bの更新の流れです。閲覧の要求ごとにCMSへ問い合わせる構成ではありません。フォームの送信は別の経路で処理します。

Core Web Vitals(表示速度とUXの指標)

Core Web Vitalsは、読み込み(LCP)、応答性(INP)、表示の安定性(CLS)を測る指標で、Googleの検索順位の仕組みでも使われています。ただし、指標が良いだけで上位に表示されるとは限らず、内容の関連性がより重視されます(Google:ページエクスペリエンス)。

LCP(読み込み)

Largest Contentful Paint

目標:2.5秒以内

  • 画像の形式と圧縮の見直し
  • LCPの画像は遅延読み込みにしない
  • サーバー応答(TTFB)の短縮

INP(応答性)

Interaction to Next Paint

目標:200ms以内

  • 重いJavaScript処理の削減
  • イベント処理の最適化
  • 不要なライブラリの削除

CLS(安定性)

Cumulative Layout Shift

目標:0.1以下

  • 画像サイズ(width / height)の指定
  • Webフォントの読み込み最適化
  • 後から挿入する要素の表示枠の確保

評価は、実際の利用者のデータの75パーセンタイルで、モバイルとデスクトップを分けて確認します(web.dev:Web Vitals)。開発中のPCでの測定やLighthouseの点数は改善の手がかりになりますが、それだけでは、実際の利用者のデータで目標を満たしているかや、順位が上がるかを判断できません。

画像は、画面の外にある画像だけを遅延読み込みにします。LCPになる画像を遅延読み込みにすると、表示が遅れます。優先して読み込む指定も、多くの画像に付けると効果がなくなるため、LCPの画像などに絞ります(web.dev:Optimize LCP)。

運用とセキュリティの設計

Webサイトは公開した後も、更新の反映、フォーム、権限、依存するライブラリの更新が続きます。次の確認票で、決めることと担当、失敗したときの対応を整理します。担当の欄は役割の例で、自社の体制に合わせて決めます。

▼ 運用とセキュリティの確認票の例
確認対象決めること担当(例)失敗時の対応
記事の更新下書き、承認、公開の手順と、プレビューで確認する範囲社内の公開担当誤った内容を公開したときの取り下げと、修正版の公開手順
ビルド・再検証公開のきっかけ(手動、Webhookなど)、反映までの目安、失敗の通知先開発・保守担当再実行の手順、前の版に戻す方法、公開担当への連絡
フォーム送信先、迷惑送信の対策、受付の確認方法、保存するデータ開発・保守担当と受付の担当送信が届かないときの検知と、代わりの連絡手段の案内
権限・秘密情報CMSの権限、APIキーの範囲、秘密情報を置く場所、担当の交代・退職時の削除社内の管理者漏えいが疑われるときのキーの無効化と再発行
依存の更新フレームワーク、ライブラリ、CMSの版を更新する時期と確認の方法開発・保守担当不具合が出たときに前の版へ戻す手順
データの保全・復元ソースコード、CMSのデータ、公開した版のそれぞれの保存先と戻し方開発・保守担当とCMSの管理者公開した版を戻すことと、データを復元することを分けた手順

下書きを実際の見た目で確認するプレビューは、構成によって必要な仕組みが変わります。静的exportではNext.jsのDraft Modeは使えないため、別のプレビュー環境などを用意します。プレビュー環境にnoindexを付けても、URLを知っている人は閲覧できるため、非公開の情報は認証などで守ります。

Webhookでビルドを自動化しても、反映までの時間は保証されません。依存ライブラリの更新を知らせるツールは、更新の通知や提案を助けるものです。テスト、公開の判断、不具合のときの戻し方は、別に決めておきます。

APIキーなどの秘密情報や、下書き・書き込みの権限は、ブラウザに渡しません。Next.jsでは、NEXT_PUBLIC_で始まる環境変数はブラウザ向けのコードに含まれます(Next.js:Data Security)。ビルドで使った秘密情報や非公開のデータが、生成したHTMLやJavaScriptに残っていないかも確認します。環境変数に置けば常に安全、というわけではありません。

監視の通知や迷惑送信の対策を入れても、誰が確認して対応するかを決めなければ運用は続きません。データの保全では、ソースコード、CMSのデータ、公開した版の戻し方を分けて確認します。

自社の状況を確認する

  • □ 更新する人、承認、反映したい時期を、構成を決める前に確認した
  • □ 更新の反映方法(ビルド・再検証・要求時の処理)と、失敗したときの通知・戻し方を決めた
  • □ CMSの権限とAPIキーの範囲を確認し、秘密情報や書き込みの権限をブラウザに渡していない
  • □ フォームの送信先、迷惑送信の対策、届かないときの検知を決めた
  • □ フレームワーク・CMS・配信環境・連携の保守の担当と、更新の確認方法を決めた
  • □ 制作、CMS、配信・処理、保守、社内の作業の費用を、同じ条件と期間で比べた(未確認の費用は分けた)
  • □ 公開前の受け入れで確認する項目(表示、更新、フォーム、権限)と、確認する人を決めた

SEOとAI検索で本文を伝えるための確認事項

検索やAIの回答で内容を伝えるために大切なのは、構成の名前ではなく、読者の疑問に答える本文が検索エンジンに届くことです。Next.jsやSSGを使うだけで検索に有利になるわけではありません。次の点を確認します。

  • 本文がHTMLで読めること:重要な本文を、ブラウザでの処理だけに頼らずHTMLとして返す。静的な生成やSSRは、これを満たしやすい方法の一つ
  • 役に立つ回答と条件:結論だけでなく、どんな条件でその判断になるかを書く
  • ページ固有の情報:ページごとに固有のタイトル、説明、canonicalを設定する
  • 内部リンク:関連する記事を、疑問が生まれる箇所から案内する
  • 公開と下書きの扱い:公開ページはリンクとサイトマップからたどれるようにし、下書きや検証環境は公開しない。同じ内容のページが重複していないかも確かめる

GoogleのAI Overviewsなどの機能にも通常のSEOの基本が当てはまり、表示されるための特別な対応や、専用の構造化データ、AI向けのファイルは不要だと案内されています(Google:AI features and your website)。これはGoogleの案内で、他のAI検索サービスの仕組みまで示すものではありません。ArticleやFAQの構造化データを使う場合は、画面に表示している内容と一致させます。構造化データを入れても、リッチリザルトやAIの回答への採用は保証されません。

確認票で未確認のまま残った項目や、今の構成の更新・保守で困っている点は、要件の整理、試作、実装、運用の相談の材料になります。

押さえておきたい点

構成は、技術の名前ではなく、更新する人、必要な機能、反映したい時期、保守の担当から選びます。分けた部分ごとに担当と失敗したときの対応を決めておくと、公開後の運用を続けやすくなります。

よくある質問

Q. 従来のWordPressより費用は高くなりますか?

要件によって変わるため、一律には言えません。比べるときは、制作、CMSの利用料、配信や処理の費用、更新と保守、移行、社内の作業時間を、同じ機能と同じ期間でそろえます。見積もりに入っていない費用は、0円とせず未確認として分けて確認します。

Q. 制作期間はどのくらいですか?

対象のページ数、デザインとCMSの設計、コンテンツの準備、外部サービスとの連携、確認する人と受け入れの進め方で変わります。期間を見積もる前に、これらの範囲と、社内で確認できる時期をそろえます。

Q. 非エンジニアでも更新できますか?

CMSを使えば、編集画面から文章や画像を更新して公開できます。ただし、公開した内容がサイトにいつ反映されるかは構成によって異なり、下書きを実際の見た目で確認するにはプレビューの仕組みが必要です。承認の段階や権限の細かさは、CMSの製品やプランで確認します。

Q. SEOには本当に強いですか?

本文をHTMLで返しやすく、表示を速くしやすい構成はありますが、Next.jsやヘッドレスCMSを使うだけで検索順位が上がるわけではありません。順位は、内容の有用性、内部リンク、ページ固有の情報、表示の速さなど複数の要因で決まります。

Q. セキュリティ監査は必要ですか?

要否と深さは、扱うデータ、契約上の要求、会員向けの機能や決済の有無、リスクの大きさで判断します。静的な配信ではサーバーの管理範囲を減らせる場合がありますが、フォーム、CMSの権限、APIキー、外部との連携の確認は必要です。すべてのサイトで外部の監査が必須というわけではありません。

Q. Next.jsとヘッドレスCMSは両方必要ですか?

どちらも必須ではありません。開発者だけが更新するならCMSを使わない構成、今のWordPressで運用が回っているなら継続も選べます。Next.jsを使ってCMSは使わない、CMSを使って別のフレームワークで表示する、といった組み合わせもあります。更新する人と必要な機能から選びます。

Webサイトの構成と運用を、要件から整理します。

更新する人、必要な機能、反映したい時期、公開後の運用など、未整理の条件から、企業サイトの構成を決めて制作・刷新する支援をご確認ください。初回相談で状況と支援の範囲を確認します。

Webサイトの構成・開発の支援内容を見る