WordPressをやめて、Astro + Cloudflare Pagesに移行しました
ある日、契約していたレンタルサーバーが改ざんされて、その中に入れていた4つのサイトが全部やられました。自分のサイトです。
1サイトずつ掃除しても直りませんでした。同じサーバーの中は権限的に地続きなので、隣に残った汚染から再感染する。マルウェアの削除と再発を繰り返した末、最終的にはサーバー内の全データを消して作り直しました。
この一件のあと、自社サイトをWordPressからAstro + Cloudflare Pagesの静的構成に移しました。その実体験を、選んだ理由からハマったところ、移さないほうがいいケースまで書きます。
WordPressをやめた理由は、速度と保守と、乗っ取りでした
上の事故が決定打でしたが、それ以前から不満は積み重なっていました。
まず表示速度です。WordPressはプラグインを足すほど重くなりがちで、速度を上げようとすると今度はキャッシュ系プラグインの設定に悩まされます。
次に保守のしんどさ。プラグインに依存していると、時間が経ってから「これはどう設定したんだっけ」を思い出すのに毎回手間がかかる。更新作業でミスも起きやすくなります。
そしてセキュリティです。私のところには、他社サイトの乗っ取り相談が年に5件ほど来ていました。人のサイトを直しながら、自分のサイトもやられた。さすがに、そもそも攻撃される面を減らせないかと考えるようになりました。
静的サイトには、管理画面もデータベースもPHPの実行環境もありません。入口がそもそも無い。これが移行の一番の理由です。
Astroを選んだのは、あとで読めるからです
候補としてはNext.jsとも迷いました。ただ、更新が多くない静的なサイトなら、Astroに分があると判断しました。
決め手は、HTMLとCSSをそのまま書けることです。余計な抽象化が少なく構造がシンプルなので、時間が経ってコードを見返したときに理解できる。長く保守していく前提だと、凝った仕組みより、あとで自分や引き継いだ人が読めることのほうが大事だと思っています。
もう一つ、ブログをMarkdownで書けるのも大きい。AIに文章を流して整えてもらう作業と相性がいいです。
ホスティングはCloudflare Pages
理由は単純で、無料で使えることと、Cloudflare Turnstile(reCAPTCHAのような、フォームのスパム対策に使える認証)が一緒に使えることです。
他にも人気なNetlifyは、Webアプリ案件で使ったことがあります。VercelもNext.jsの案件で使いましたが、商用利用で有料になる点や使い勝手の面で、今は選んでいません。正直に言えば、最後はなんとなくCloudflareを選びました。
GitHubと連携すれば、mainにpushしたら自動でビルドして公開、という運用になります。サーバーにFTPで上げる手間がありません。この形は、クライアントと仕事をするうちに便利だと実感して、今はずっと続けています。
余談ですが、この仕組みにしてから、外出先のスマホからでもサイトを更新できるようになりました。Claude Codeのクラウド版と組み合わせると、パソコンを開かずに直して公開まで済ませられます。
移行は「運ぶ」だけでは終わりません
作業は、中身を運ぶことと、機能を作り直すことの2つに分かれます。そして後者が重い。
記事・コンテンツの移行は、WordPressからエクスポートして、スクリプトやAIに通してMarkdownに変換しました。ここは比較的すんなり進みます。
問題は、そこから先です。実際にハマったのは次の3つでした。
記事内に埋め込まれた画像。 本文中に大量に貼られた画像を一つずつ運ぶのが、想像以上に大変でした。根気で押し切るしかありません。
Gutenberg(ブロックエディタ)専用ブロック。 WordPress独自のブロックで作られた装飾やレイアウトは、そのままでは持っていけません。一つずつHTML/CSSで作り直しました。
URL(パス)の変更。 パーマリンクの構造が変わると過去のURLが変わります。リダイレクトなど、SEO評価を引き継ぐ手当てが必要です。
お問い合わせフォームも作り直しになります。静的サイトではPHPが使えません。私はGoogleフォーム+GAS(Google Apps Script)を連携させて、送信後にサンクスページへ飛ばしたり、自動返信メールを送ったりする形をよく使います。具体的な作り方は静的サイトのお問い合わせフォームを、Cloudflare Pages Functionsで作るに、動いているコードごと書きました。
クライアント案件では、お客さん自身が更新できるように管理画面を作り、データベースに保存するWordPressライクな仕組みを別途用意することもあります。
移行は簡単そうに見えて、意外と手間、つまり費用がかかります。見積もりのときは、動的に処理していた部分がWordPressでどう作られているかを先に確認しておくことが大事です。
移行して何が変わったか
表示速度。 PageSpeed Insightsのスコアが40点→60点、80点→99点というように、ほとんどのサイトで20点近く上がりました。
コスト。 自社サイトの場合、かかるのはドメイン管理費だけになりました。サーバー代がまるごと不要になり、年間1万円ほどの節約です。
保守。 基本的に手がかからなくなり、ポイント修正だけで済みます。同じくらいの規模なら、定期的な保守費用はほぼ不要だと考えています。
セキュリティ。 これが一番大きい。WordPress時代は、ログイン通知や不正アクセス通知が来るたびに心臓に悪い思いをしていました。それがなくなりました。
一方でトレードオフもあります。動的にできていた更新が手作業寄りになるぶん、部分的な更新作業の費用は上がりがちです。また、静的サイトに対応できる業者がまだ少なく、頼める相手を探しにくい面もあります。
それでもWordPressのままがいいケース
静的化は万能ではありません。無理に移さないほうがいいサイトもあります。
コンテンツが多く、記事を量産するサイト。メディア、ポータル、ニュース系です。Astroでもうまく設計すれば作れますが、コストが見合わないことが多い。プラグインや実装が豊富なぶん、WordPressやヘッドレスCMSのカスタムのほうがスピーディです。
担当者が頻繁に更新するサイトも同じです。社内で毎日のように更新する運用なら、WordPressのままが快適でしょう。オウンドメディアを静的化するかどうかは、運用体制から考えたほうがいいです。
会員機能のような複雑な動的機能がある場合も、静的化するとかえって管理が面倒になります。セキュリティリスクと天秤にかけて、WordPressを選ぶのが妥当なこともあります。
逆に、ほぼ更新のいらないサイトは、まるごと静的化したほうがいい。更新頻度が低めの中規模サイトならヘッドレス化、それも不要なら素のHTML構造で静的のまま、という選び分けです。
移行を相談するとき、手元にあるとスムーズなもの
「WordPressで作ってもらったけど、重い・更新できない・放置されている・乗っ取られた」という状態なら、移行を検討する価値はあります。相談いただくときは、次のものが揃っていると話が早いです。
- 現状のサーバー・ドメインの契約先と、各種ログイン情報
- なぜ移行したいのか(動機)
- 移行して何をゴールにしたいのか(目的)
- 最低限ここは残して更新したい、という部分
とくに大事なのは動機とゴールです。速くしたいのか、乗っ取りの不安をなくしたいのか、保守費を抑えたいのか。それによって最適な作り方が変わります。
まとめ
WordPressをやめた理由は、速度、保守の手間、セキュリティの3つです。決定打は、サーバー改ざんで4サイトを失ったことでした。移行先には、HTMLとCSSをそのまま書けるAstroと、無料でTurnstileとGitHubの自動デプロイが使えるCloudflare Pagesを選んでいます。
移行は運ぶだけでは終わらず、画像・独自ブロック・フォームの作り直しが必要で、意外と手間がかかりました。その結果、表示は速くなり、コストは減り、保守もほぼ要らなくなった。何より、通知に怯えなくなりました。ただし、更新が多いサイトや複雑なサイトは、WordPressのままのほうが向いています。
静的化は、向いているサイトには本当に快適です。ただ、先にやるべきは向き不向きの見極めのほうです。
納品して終わりではありません。サイト公開後も相談できる制作者をお探しの方は、まずはお話をお聞かせください。