BLOG /

静的サイト×CMSで更新が反映されない原因とWebhook設定

静的サイトとCMSを組み合わせた際に「公開したのに本番が変わらない」が起きる原因と、Webhookを正しく設定して自動反映させる手順、見落としがちな通知設定の落とし穴がわかります。

「公開」ボタンを押したのに、サイトが変わらない。CMSを使った静的サイトで、まれに起きる不具合だ。原因はCMS側にも、ホスティング側にもない。データがビルド時にしか取得されない、という静的サイトの仕組みそのものにある。Webhookという小さな設定が1本つながっていないだけで、これは起こる。厄介なのは、制作中はまったく気づけない点だ。原因と回避策、そして検収時に見落としやすい確認方法をまとめる。

「公開」を押しても本番が変わらない、という症状

静的サイトと、microCMSなどのヘッドレスCMSを組み合わせる構成がある。Next.jsの output: 'export' はその代表例だ。CMSは正常に動き、本番サイトにも実際のデータが表示されている。一見、完成した状態だ。ところがクライアントが管理画面で記事を編集し、「公開」を押しても、本番のページは一向に変わらない。エラーは出ない。CMS側は「公開済み」と表示される。それでも本番だけが、古いままだ。

原因は静的サイトの仕組み — データはビルド時にしか取得されない

静的サイトは、ビルドという工程でHTMLをあらかじめ作っておく方式だ。CMSのデータも、このビルドのタイミングで1回だけ取得される。ビルドが実行されない限り、CMSで内容を書き換えても本番のHTMLには反映されない。動的なサイトなら、ページを開くたびにCMSへ問い合わせる。だが静的サイトはそうではない。この違いを知らないまま運用を始めると、「公開したのに変わらない」という問い合わせにつながる。

回避策:CMSのWebhookをホスティングのDeploy Hookに繋ぐ

回避策は、CMSでの公開操作をきっかけに、自動で再ビルドを走らせることだ。多くのホスティングサービスには、外部から呼び出すとデプロイが始まるURLが用意されている。「Deploy Hook」と呼ばれる仕組みだ。CMS側にも、コンテンツが公開・更新されたタイミングで指定URLへ通知を送る「Webhook」という機能がある。この2つをつなげば、CMSで公開ボタンを押すたびに自動で再ビルドが走り、数分後には本番へ反映される。設定自体は難しくない。ホスティング側でDeploy Hookを発行し、そのURLをCMSのWebhook設定欄に貼るだけだ。問題は、この1本がつながっていなくても、CMSも本番サイトも正常に動いて見えてしまう点にある。

見落としがちな落とし穴:通知タイミングの初期設定

Webhookをつなげば安心、というわけでもない。CMSによっては、Webhookの通知タイミングに初期設定がある。「公開時・更新時」だけがオンで、「公開終了時」や「削除時」はオフのままになっていることも珍しくない。この状態だと、新しい記事の公開は反映されるのに、クライアントが記事を「公開終了」にしても本番からは消えない。逆に「下書き保存時」まで通知をオンにすると、本番に出ない下書きのためにビルドが走り、無駄が増える。どの操作で再ビルドを走らせるか、通知タイミングを一つずつ確認しておく必要がある。加えて、CMS側で複数のコンテンツタイプ(API)を使っている場合、それぞれにWebhookを個別に登録しなければならない。ここも見落としやすい。

検収時に確認すべきこと — 「本番にデータが出ている」は証拠にならない

検収の場面で最も危ういのは、「本番にCMSのデータが表示されているから大丈夫」という判断だ。それは初回ビルドの結果を見ているにすぎない。Webhookが正しく動いているかは、別の方法で確かめる必要がある。確認方法はシンプルだ。CMSの管理画面で実際に1箇所を書き換え、公開ボタンを押す。そのあと数分待ち、本番ページが変わっているかを見る。この一往復を検収の手順に組み込んでおけば、Webhookの繋ぎ忘れは公開前に見つかる。クライアントに管理画面を渡してから気づくのでは、遅い。

静的サイトとCMSの組み合わせは、表示速度や運用のしやすさで選ばれることが多い。その分、公開の裏側にある仕組みまで確認しておきたい。Webhookは、本当につながっているか。それは検収の一往復で確かめられる。CMSを使ったサイト制作の相談は、サービス内容はこちらから。ご質問はお問い合わせページからどうぞ。