WordPress・CMS設計

WordPressとヘッドレスCMSの分岐点:個人開発で選ぶべき設計と移行の実態

WordPressで記事を書き、テーマを調整し、キャッシュを入れて、画像を圧縮する。それでも表示速度の計測結果が伸びない。そこで「ヘッドレスCMSにすれば速くなるらしい」と考え始める。個人開発では、かなりよくある流れだ。…

WordPressとヘッドレスCMSの分岐点:個人開発で選ぶべき設計と移行の実態

ただし、ヘッドレス化は魔法の高速化ボタンではない。管理画面と表示画面を分離するため、見た目の速度が改善する一方で、プレビュー、検索、フォーム、予約投稿、権限管理、デプロイといった周辺機能を自分で組み直す必要がある。結局のところ、表示速度の問題を解決するために、運用全体を別の問題へ置き換えているだけのケースも少なくない。

WordPressとヘッドレスCMSの構成を選ぶ基準は、技術トレンドではなく、サイトが何を要求されるかだ。更新頻度、編集者の人数、表示速度、セキュリティ、予算、そして開発後に誰が面倒を見るのか。このあたりを曖昧にしたまま移行すると、あとで必ず請求書のように現実が届く。

一体型WordPressとヘッドレス構成は、そもそも別の設計思想である

通常のWordPressは、管理画面、データベース、テーマ、プラグイン、表示処理が一つのシステムにまとまっている。記事を投稿すると、WordPressがデータベースから内容を取得し、テーマのPHPテンプレートでHTMLを組み立て、そのままブラウザーへ返す。

この構成は古く見えるかもしれない。しかし、記事を書いて公開し、すぐに画面を確認するという作業においては、驚くほど完成度が高い。編集画面と表示画面が同じシステム内にあるため、プレビューも自然だ。予約投稿、アイキャッチ画像、カテゴリー、タグ、コメント、検索といった機能も、必要に応じて追加できる。

一方、ヘッドレスCMSでは、管理画面と表示画面を切り離す。WordPressを管理画面として使う場合でも、WordPressのテーマでページを表示するとは限らない。記事データをAPIで取得し、別に用意した表示アプリケーションでHTMLを生成する。

構成を整理すると、次のようになる。

比較項目一体型WordPressヘッドレスCMS構成
管理画面WordPressに内蔵WordPressまたは外部CMSを利用
表示画面PHPテーマで生成別アプリケーションで生成
データ取得テーマがデータベースから取得REST APIやGraphQL経由で取得
プレビュー比較的簡単プレビュー用の仕組みを別途実装
テーマ・プラグイン豊富な既存資産を利用可能表示側との互換性を個別に確認
初期開発費抑えやすい1.5〜3倍程度に膨らみやすい
表示速度構成と運用次第静的生成なら高速化しやすい
更新運用編集者だけで完結しやすいビルド、配信、再生成の知識が必要
障害箇所比較的まとまっている管理画面、API、表示、配信に分散

WordPressは、2016年末に公開されたバージョン4.7からREST APIが標準で組み込まれた。さらに、2015年に登場したWPGraphQLを使えば、GraphQL形式で投稿やカスタムフィールドを取得することもできる。

つまり、WordPressは一体型のCMSとしてだけでなく、ヘッドレスCMSの管理側としても使える。ここが少しややこしいところだ。「WordPressかヘッドレスCMSか」という比較は、厳密には同じ階層の選択ではない。WordPressを表示まで担当させるのか、管理画面だけに限定するのか、という設計の分岐である。

ヘッドレス化で変わるのは、表示速度だけではない

ヘッドレス構成にすると、表示側を静的サイト生成に寄せやすくなる。あらかじめHTMLを生成して配信するため、アクセスのたびにPHPがテーマを処理し、データベースへ問い合わせる必要がなくなる。

アクセスが集中するキャンペーンページ、商品情報を大量に掲載するメディア、複数の配信先へ同じコンテンツを届けるサービスでは、この分離が効くことがある。表示サーバーと管理画面を分けることで、攻撃対象を狭めやすくなる面もある。

ただし、静的ページは「生成されているページ」であって、「いつでも最新データを自動表示するページ」ではない。記事を更新したら、再生成やキャッシュの削除が必要になる。この差を見落とすと、編集者が更新ボタンを押したのに、利用者の画面には古い情報が残るという罠がある。

ヘッドレス化で減るのは、表示側の仕事であって、サイト全体の仕事ではない。

開発コストが1.5〜3倍に膨らむ理由

ヘッドレスCMSの導入費用が高くなりやすい理由は単純だ。画面が二つになるからである。

一体型のWordPressなら、管理画面と表示画面の接続はすでに用意されている。記事本文を保存すれば、テーマがそれを表示する。ヘッドレスでは、管理画面からデータを取得する処理、データを画面用に変換する処理、表示側でのエラー処理、ビルド、キャッシュ、プレビューを個別に組み立てることになる。

小規模サイトでも、最低限次のような実装が必要になる。

  • 投稿一覧と詳細ページのデータ取得
  • カテゴリー、タグ、著者、ページネーションの処理
  • アイキャッチ画像や本文内画像の表示
  • カスタムフィールドのデータ変換
  • 下書きと公開済みコンテンツの切り分け
  • プレビュー用の認証処理
  • 更新時に表示側を再生成する仕組み
  • 存在しないページへのエラー表示
  • サイトマップやRSSの生成
  • 検索機能と検索結果ページ
  • 問い合わせフォームやスパム対策
  • リダイレクトと正規URLの管理

「記事を表示するだけ」なら、たしかに短期間で作れる。しかし、運用できるサイトを作るとなると話が変わる。記事を投稿する人は、毎回APIの仕様を気にしてくれない。予約投稿が動かなければ、原因を調べるのは編集者ではなく開発者だ。画像が表示されなければ、CDNのキャッシュなのか、APIのレスポンスなのか、ビルド処理なのかを追う必要がある。

この追加作業が積み重なり、ヘッドレスCMSの初期開発コストは一体型WordPressの1.5〜3倍程度になる傾向がある。小規模な移行開発であっても、費用相場はおよそ50万〜300万円程度とされる。もちろん、ページ数、既存プラグイン、デザインの作り直し、移行後の保守契約によって大きく変わる数字だ。

WordPressのテーマ開発より、表示アプリの設計が重い

カスタムテーマの制作経験がある人ほど、ヘッドレス化を軽く見積もりやすい。「PHPテンプレートを別の表示側へ置き換えれば終わり」と考えてしまうからだ。

実際には、テンプレートの置き換えだけでは済まない。WordPressのテーマは、暗黙のうちに多くの機能へ依存している。

たとえば、本文中のショートコード。プラグインが登録したカスタム投稿タイプ。ウィジェット。メニュー。関連記事。広告の差し込み位置。著者情報。公開状態。予約投稿。これらはテーマファイルの外側にあるようで、実際には表示処理と密接に結びついている。

ヘッドレス構成で記事本文を取得しても、本文の中に残ったショートコードを表示側が解釈できなければ、そのまま文字列として出てくる。ブロックエディターのブロックも、すべてが安全にHTMLへ変換されるとは限らない。独自ブロックを使っている場合は、表示側に同じブロックの描画ロジックを用意する必要がある。

ここでありがちな事故がある。移行前のWordPressでは正常に表示されていた記事が、移行後に一部だけ壊れる。見出しや段落は表示されるが、比較表、埋め込み動画、関連記事、CTAだけが消える。データ移行は成功している。しかし、表示のための解釈処理が移植されていない。

データが存在することと、サイトとして機能することは別問題だ。このあたりを見積もりから外すと、後半で力技の実装が増えていく。

プラグインは「機能」ではなく「依存関係」として見る

一体型WordPressでは、プラグインを追加すれば機能が増える。SEO設定、フォーム、会員管理、予約投稿、関連記事、構造化データなど、既存の資産を利用できる。

しかし、ヘッドレス構成では、プラグインが管理画面側だけで動くのか、表示側にも影響するのかを確認しなければならない。

たとえばSEOプラグインを導入していても、表示側がそのメタ情報を取得してHTMLのheadへ出力しなければ意味がない。フォームプラグインも、管理画面に届いた問い合わせを表示側から送信できるとは限らない。会員制プラグインなら、ログイン状態を表示側へどう伝えるのかという認証設計が必要になる。

ヘッドレスCMSのメリットとして「プラグインの脆弱性を避けやすい」と説明されることがある。表示側を静的配信にすれば、WordPress本体を直接公開しない構成にできるため、攻撃面を減らしやすいのは確かだ。

ただし、これはWordPressのアップデートが不要になるという意味ではない。管理画面とAPIは残る。プラグインも残る。管理画面を放置すれば、普通に保守リスクは積み上がる。一体型WordPressでも、適切なアップデート、権限管理、バックアップ、不要プラグインの整理を行えば、十分に安全な運用は可能だ。

「ヘッドレスにすれば安全」という説明は、少し雑である。正確には、表示系と管理系を分離することで、リスクの置き場所と対策方法が変わる。

静的サイト生成がもたらす、速さと待ち時間

ヘッドレスCMSと静的サイト生成を組み合わせる構成は、表示速度を改善しやすい。サーバー側でHTMLを生成しておき、利用者には完成済みのファイルを配信する。アクセスのたびにアプリケーション処理を走らせないため、配信経路も単純にしやすい。

しかし、静的サイト生成には更新の待ち時間がある。記事を公開したあと、表示側のビルドが走り、生成されたファイルが配信環境へ反映される。この処理に数分かかることがある。

ニュースサイトの速報、在庫表示、イベントの残席数、期間限定キャンペーンなどでは、このタイムラグが致命傷になる可能性がある。記事を書いた本人は公開済みだと思っているのに、読者側では古い内容が表示される。しかも、管理画面のプレビューでは新しい内容が見えているため、原因がさらに分かりにくい。

プレビューは最初に設計しないと、最後まで不便なままになる

WordPressのプレビューは、管理画面と表示画面が同じ仕組みの上にあるから成立している。下書きの内容を、ログイン中のユーザーだけが確認できる。ヘッドレス構成では、下書きデータをAPIから取得し、表示側で一時的にレンダリングしなければならない。

ここには複数の論点がある。

1. 下書きデータを取得するための認証情報をどう扱うか

2. 外部からプレビューURLへアクセスされた場合に、未公開記事が漏れないか

3. プレビュー画面と本番画面で、同じ表示コンポーネントを使えるか

4. カスタムブロックや埋め込みコンテンツが正しく表示されるか

5. プレビュー用のデータ取得と本番用のデータ取得をどう切り替えるか

この仕組みを後から追加すると、表示側のルーティングやキャッシュ設計を変更することになる。最初は「公開後に確認すればいい」と言っていたプロジェクトが、運用開始後に「やはり公開前に確認したい」となり、結局プレビュー機能を追加する。現場では珍しくない。

静的生成を使う場合も、更新通知を受けて対象ページだけを再生成する仕組みを設ければ、待ち時間を短縮できる。とはいえ、再生成処理が失敗したときの通知、再実行、ログ確認まで考える必要がある。自動化は便利だが、失敗しない自動化ではなく、失敗したことが分かる自動化のほうが大切だ。

静的化は「速いページ」を作る技術であって、「更新の面倒がないページ」を作る技術ではない。

WordPressとヘッドレスCMSの選択基準を、機能ではなく運用から決める

WordPress ヘッドレスCMS 構成の選択基準を考えるとき、まず技術スタックから入ると判断を誤りやすい。先に決めるべきなのは、サイトの運用条件だ。

一体型WordPressが向いているケース

次のような条件なら、無理にヘッドレス化する必要はない。

  • 更新担当者が少なく、管理画面だけで作業を完結させたい
  • 記事公開後のプレビューをすぐ確認したい
  • SEO、フォーム、予約投稿、関連記事などをプラグインで組み合わせたい
  • ページの更新頻度が高く、公開結果を即時に反映したい
  • 開発者が常時保守できるわけではない
  • 初期費用を抑え、コンテンツ制作へ予算を回したい
  • 表示速度の課題が、画像やプラグイン、キャッシュ設定にある

最後の項目は特に重要だ。WordPressサイトが遅いからといって、原因がWordPressそのものとは限らない。

画像が未圧縮。表示していないJavaScriptが大量に読み込まれている。データベースのクエリが無駄に発生している。外部広告や解析タグの応答を待っている。ページキャッシュが効いていない。そもそもサーバーの性能が不足している。

この状態でヘッドレス化しても、画像は重いままだし、外部スクリプトも遅い。表示側を作り直した分だけ費用が増え、肝心の体感速度が思ったほど変わらないという罠がある。

ヘッドレス構成が有力になるケース

一方、次のような条件では、表示と管理を分ける意味が出てくる。

  • 大量アクセスが想定され、表示側を静的配信したい
  • 同じコンテンツをWeb、アプリ、デジタルサイネージなど複数の配信先で利用する
  • 表示側を独立した技術で細かく制御したい
  • 管理画面をインターネット上に直接公開したくない
  • フロントエンドとCMSを別チーム、または別サイクルで運用したい
  • 表示側のデプロイやロールバックを独立させたい
  • コンテンツ構造を明確なデータとして管理したい

ただし、これらの条件を満たしていても、すぐに全面移行する必要はない。既存のWordPress資産を活かしながら、特定のページだけを別の表示構成にする方法もある。

段階的なヘッドレス化は、派手ではないが失敗しにくい

WordPressからヘッドレスCMSへ移行する場合、いきなり全ページを切り替えると、問題の切り分けが難しくなる。

記事データ、画像、カテゴリー、URL、リダイレクト、SEOメタ情報、フォーム、検索、プレビュー。すべてを同時に移行すると、何かが壊れたときに原因が分からない。移行プロジェクトが大きくなるほど、「動いているように見えるが、細部が壊れている」状態に入りやすい。

現実的には、次のような段階を踏むほうが安全だ。

まず表示速度の原因を分解する

最初にやるべきことは、ヘッドレス化の発注ではない。現行サイトの遅さを分解することだ。

  • サーバー応答が遅いのか
  • データベースのクエリが多いのか
  • テーマが不要なファイルを読み込んでいるのか
  • 画像の容量が大きいのか
  • 外部スクリプトが処理を止めているのか
  • キャッシュが正しく機能していないのか
  • モバイル向けの表示処理に無駄があるのか

ここを調べずに「静的化すれば速くなる」と決めるのは、車のエンジンが不調なのに車体を買い替えるようなものだ。買い替えが悪いわけではない。ただ、故障箇所を見ないままでは、次の車でも同じ音がする。

次に、限定されたページで表示側を分離する

最初の対象は、サイト全体ではなく、更新頻度が低く、構造が単純なページがよい。

会社概要、サービス紹介、採用情報、キャンペーン用のランディングページなどは、記事一覧や複雑な検索を含まないため、移行範囲を限定しやすい。逆に、会員機能、絞り込み検索、予約、決済を含むページは、最初の検証対象に向いていない。

ここで確認するのは、単に画面が表示されるかどうかではない。

  • URL構造を維持できるか
  • canonicalや構造化データを正しく出せるか
  • 画像のURLとサイズを適切に扱えるか
  • 更新後の反映時間は許容範囲か
  • エラー時に古いページを配信できるか
  • 編集者がプレビューを使えるか
  • デプロイ失敗を検知できるか

見栄えのよいデモは、たいていこのあたりを省略している。本番サイトは、省略した部分から壊れる。

最後に、既存データとプラグイン依存を整理する

移行で厄介なのは、記事本文よりも周辺データだ。

WordPressの標準投稿だけなら、APIで取得して表示側へ渡す流れを作りやすい。問題になるのは、長年の運用で蓄積したカスタムフィールド、独自ショートコード、プラグインが生成したデータ、画像の派生サイズ、古い記事に残るHTMLの揺れである。

データ移行の前に、次のような分類を作っておくとよい。

  • そのまま移行できる標準項目
  • 表示側で変換が必要な項目
  • 代替機能を作る必要がある項目
  • 移行せず、運用で残す項目
  • 破棄しても問題ない過去データ

すべてを完全再現しようとすると、移行費用は簡単に膨らむ。WordPressからヘッドレスCMSへの移行では、データ構造の変換、リダイレクト設定、カスタムフィールド、プラグイン依存機能の再現によって、見積もりが当初の倍近くになるケースもある。

ここで必要なのは、技術的な完璧さではなく、何を捨てるかを決める判断だ。

JAMstack構成とWordPress静的化は、似ているようで役割が違う

「静的サイトにしたい」という要件だけなら、ヘッドレス化以外の方法もある。

WordPressを通常どおり運用し、公開時にHTMLを生成して配信する静的化も選択肢になる。管理画面やテーマをそのまま使いながら、公開側だけを静的ファイルに寄せる考え方だ。

この方法は、既存の編集フローを大きく変えずに済む可能性がある。一方で、動的な機能との相性は悪い。検索、ログイン、コメント、フォーム、個別表示などは、別の仕組みを組み合わせる必要がある。

ヘッドレスCMSは、最初からデータと表示を分離して設計する。WordPress静的化は、既存の一体型構成を残しながら、公開部分を静的に変換する。似ているようで、設計の出発点が異なる。

構成強み苦手なこと向いているサイト
一体型WordPress導入と更新が速い大規模な表示分離ブログ、企業サイト、小規模メディア
WordPress静的化既存管理画面を活かしやすい動的機能と即時反映更新頻度が中程度の情報サイト
WordPressヘッドレスWordPressの編集資産を利用できる表示側の開発と保守既存WordPressを活かした段階移行
外部ヘッドレスCMSデータ構造を整理しやすい既存プラグインを使いにくい複数チャネル配信、チーム開発
完全な静的サイト配信が単純で高速化しやすい編集・検索・会員機能更新頻度が低い紹介サイト

JAMstackという名前が出ると、急に構成が立派に見える。しかし、名前が立派でも、更新ボタンを押したあとに何が起きるかは別途設計しなければならない。静的サイトジェネレーターを採用しても、コンテンツの取得、ビルド、配信、キャッシュ、プレビューの問題は消えない。

結局のところ、サイトの性格に対して、どこまで分離が必要かを見極める話である。

個人開発者にとっての最大の問題は、開発後の保守である

個人開発では、初期実装よりも保守のほうが重い。作っている最中は、多少複雑な構成でも楽しい。新しいフレームワークを試せるし、デプロイパイプラインも整えられる。

しかし、半年後に別の案件が入り、数か月サイトを触らなくなる。その状態で、CMSのAPI仕様変更、依存パッケージの更新、証明書の期限、ビルドエラー、外部サービスの無料枠超過が発生する。

ヘッドレスCMSは、管理画面と表示画面を分離したぶん、保守対象も分かれる。

  • CMS本体とプラグイン
  • API認証と権限設定
  • 表示アプリケーション
  • ビルド環境
  • ホスティング環境
  • CDNやキャッシュ
  • 画像配信
  • フォームや検索などの外部サービス
  • 監視とエラー通知
  • ドメイン、DNS、証明書

無料プランのあるヘッドレスCMSを使えば、初期費用を下げられることもある。ただし、APIリクエスト数やデータ転送量の制限に、どのアクセス規模で到達するかはサービスと構成によって異なる。個人開発だから無料枠で安全、と決めつけるのは危険だ。

アクセスが増えたときに急に課金されることより、無料枠を超えた結果、APIの応答制限やビルド回数制限にかかることのほうが怖い。サイトが成長したのに、更新できない。これは技術的には小さな制限でも、運用上は大きな障害になる。

運用でカバーする部分と、コードで解決する部分

個人開発では、すべてをコードで解決しようとしないほうがいい。

たとえば、記事公開後に数分の反映遅延が発生するサイトなら、「速報記事は即時公開しない」「重要なお知らせは一体型WordPressで出す」「静的側は定期更新の情報に限定する」といった運用ルールで吸収できる。

逆に、毎日発生する手作業や、ミスが直接売上に影響する処理はコードで解決したほうがいい。

  • 公開時の再生成
  • 失敗時の通知
  • リダイレクトの登録
  • 画像の最適化
  • サイトマップ更新
  • 下書きと公開状態の取得制御
  • デプロイ前のリンク切れ検査

この線引きをしないまま「自動化」を進めると、複雑な仕組みだけが残る。人が一度やれば済む作業まで自動化し、毎回発生する障害対応は手作業のまま。個人開発でありがちな、少し皮肉な状態だ。

移行前に決めておきたい設計上の境界線

ヘッドレス化を検討するなら、技術選定より先に境界線を決める必要がある。どこまでをCMSに任せ、どこからを表示側で持つのか。ここが曖昧だと、APIの設計も、編集画面の設計も落ち着かない。

コンテンツの責任範囲

CMSには、記事本文やタイトル、画像、公開状態、著者、分類など、編集者が管理する情報を置く。一方、表示側には、レイアウト、ナビゲーション、広告枠、関連コンテンツの表示規則などを置く。

表示側に記事の重要な情報を直接埋め込むと、編集者が管理画面を使っても更新できない。逆に、レイアウトの細部までCMSのカスタムフィールドで管理すると、編集画面が複雑になる。

「何を変更する人が、どの画面で変更するのか」を基準に分けると、比較的整理しやすい。

URLとSEOの責任範囲

WordPressから移行する場合、URL変更はできるだけ避けたい。URLが変わるなら、旧URLから新URLへのリダイレクトを用意する必要がある。記事のスラッグ、カテゴリー構造、ページネーション、添付ファイルの扱いまで確認しなければならない。

静的サイトにしたからといって、SEOが自動的に改善するわけではない。HTMLの生成が速くても、titleやdescriptionが空なら検索結果で困る。canonicalが不適切なら、重複URLの問題が起きる。構造化データが移行されなければ、検索エンジンへの情報量が減ることもある。

移行時には、少なくとも次の情報を比較できる状態にしておくとよい。

  • 旧URLと新URLの対応
  • titleとdescription
  • canonical
  • 見出し構造
  • noindex設定
  • XMLサイトマップ
  • 画像の代替テキスト
  • パンくずリスト
  • 構造化データ
  • 404ページとリダイレクト

SEOプラグインが自動で出していた情報は、ヘッドレス側では自動で出ない。ここも、プラグインを外した瞬間に解決する問題ではなく、表示側へ実装し直す問題である。

検索とフォームの責任範囲

サイト内検索は、ヘッドレス化で後回しにされやすい機能だ。記事一覧が表示できれば、サイトは完成したように見える。しかし、記事数が増えると、検索できないサイトはすぐに使いづらくなる。

WordPressの標準検索をそのまま使う場合でも、表示側との接続が必要になる。外部検索サービスを使う場合は、インデックス更新、費用、検索結果の表示、検索対象の制御を考える必要がある。

フォームも同じだ。フロントエンドから直接メールを送るのか、フォームサービスを使うのか、WordPress側のREST APIへ送るのか。認証やスパム対策を省略すると、公開直後から不要な通知が大量に届く。

表示速度を追いかけていたはずが、フォームの保守で時間を溶かす。これもヘッドレスCMSのメリット・デメリットを語るときに、あまり表へ出てこない現実である。

個人開発なら、全面移行より「表示側の限定分離」から始める

既存のWordPressサイトを運用しているなら、最初から全ページを移行するより、限定的な分離を検討したい。

たとえば、次のような構成だ。

  • ブログと管理画面は従来のWordPressで運用する
  • 表示速度が重要なトップページだけ別構成にする
  • キャンペーンページだけ静的生成する
  • WordPressのAPIを使い、読み取り専用の表示側を作る
  • 管理画面は非公開ネットワークやアクセス制限の内側に置く
  • 既存テーマを残し、特定の投稿タイプだけ分離する

この方式なら、全データを一度に変換する必要がない。移行のリスクを限定しながら、ヘッドレス構成の実際の保守負担を確認できる。

もちろん、二つの構成を並行して運用するため、一時的に複雑になる。だが、全面移行して戻れなくなるよりは、問題の範囲を狭く保てる。個人開発では、撤退できる設計が強い。

WordPressの世界では、最初から完璧な構成を作ろうとすると、公開日が遠のく。公開後に利用状況を見ながら、負荷の高い部分だけを分離するほうが、結果として合理的なことも多い。

結論:ヘッドレス化は、速度ではなく運用体制に合わせて選ぶ

WordPressとヘッドレスCMSの選択基準は、サイトが速いかどうかだけでは決まらない。

一体型WordPressは、管理画面と表示画面がつながっているからこそ、更新、プレビュー、プラグイン連携、日々の保守が扱いやすい。個人開発や小規模サイトでは、この単純さが大きな価値になる。

ヘッドレス構成は、表示側を静的配信しやすく、セキュリティ上の境界を分けやすい。複数チャネルへの配信や、大量アクセスへの対応、表示アプリケーションの独立運用では有力な選択肢になる。ただし、初期開発費は1.5〜3倍程度に膨らみやすく、プレビューやビルド、検索、フォーム、SEOの再実装まで含めると、管理画面の裏側にかなりの仕事が隠れている。

世界のWebサイトの約43%がWordPressで動いているという事実は、単に古いCMSが残っているという話ではない。多くの現場で、更新しやすさと拡張性のバランスが取れているから使われ続けている。

ヘッドレス化が必要なサイトもある。だが、必要のないサイトまで分離する必要はない。まずは現行WordPressの遅さを測り、プラグインとテーマを整理し、それでも解決できない要求があるかを確認する。そのうえで、分離する範囲を小さく決める。

結局のところ、コードで解決すべき問題と、運用で受け入れる問題を切り分けられるかどうかが、CMS設計の分岐点になる。流行の構成を採用することより、数年後の自分が無理なく直せること。その現実的な基準を捨てないほうが、個人開発のサイトは長く生き残る。

Related reading: Gutenbergブロックがデータベースに保存され描画される内部構造 and LaravelのAPI連携におけるRESTとGraphQLの長所と個人開発での最適解.

よくある質問

ヘッドレスCMSにするとWordPressより速くなりますか?
表示側を静的生成にすれば高速化しやすいですが、遅さの原因が画像や外部スクリプト、サーバー性能にある場合はヘッドレス化しても改善されません。
ヘッドレスCMSの導入費用はどのくらいかかりますか?
一体型WordPressの1.5〜3倍程度に膨らみやすく、小規模な移行でも50万〜300万円程度が相場です。ページ数やプラグイン依存、デザイン作り直しによって大きく変わります。
WordPressをヘッドレス化するとセキュリティは向上しますか?
表示系と管理系を分離することで攻撃対象を狭められますが、管理画面やAPIは残るためWordPressのアップデートが不要になるわけではありません。
ヘッドレスCMSで記事を更新するとすぐに反映されますか?
静的サイト生成の場合、更新後にビルドと配信の処理が必要で数分かかることがあります。速報性が必要なコンテンツには不向きです。
WordPressからヘッドレスCMSへ移行する際の注意点はありますか?
ショートコード、カスタムフィールド、プラグインが生成したデータ、画像の派生サイズなど周辺データの扱いを事前に整理しないと、移行後に記事の一部が表示されない問題が起きます。
個人開発でヘッドレスCMSを使うのは避けたほうがいいですか?
避ける必要はありませんが、保守対象が管理画面・表示アプリ・ビルド環境・CDNなど複数に分散するため、数年後の自分が維持できる構成かどうかを基準に判断すべきです。

参考情報