WordPressからAstro+Cloudflare Pagesに移行してみた


WordPressからAstro+Cloudflare Pagesに移行してみた

長年お世話になったWordPressに別れを告げ、Astroという静的サイトジェネレーターに移行しました。サーバー代は実質ゼロ、表示速度は爆速。移行作業の全記録をまとめます。

なぜWordPressをやめたのか

WordPressは優秀なCMSです。プラグインで何でもできるし、管理画面も直感的。でも使い続けるうちに、いくつかの不満が積み重なってきました。

  • サーバー代がかかる ── 月数百円とはいえ、個人ブログに払い続けるのは地味にしんどい
  • セキュリティ対応が面倒 ── プラグインのアップデート、PHPのバージョン管理、不正アクセス対策
  • 表示が遅い ── PHPで動的にページを生成するため、どうしてもレスポンスに時間がかかる
  • バックアップが怖い ── データベースが壊れたら全滅

「個人ブログなのに、こんなに管理コストをかけなくていいのでは?」と思い始めたのが移行のきっかけです。

Astroを選んだ理由

調べていくつかの選択肢(Hugo、Next.js、Gatsby)を比較した結果、Astroに決めました。

AstroHugoNext.js
学習コスト低〜中
表示速度⚡ 爆速⚡ 爆速普通
JavaScript必要な分だけほぼ不要多め
ブログ向き✅ 得意✅ 得意

Astroの最大の特徴は**「必要なJavaScriptだけを送り出す」**設計。静的HTMLを吐き出すので、表示がとにかく速い。

移行の流れ

1. WordPressからXMLエクスポート

WordPress管理画面 → ツール → エクスポートで全データをXMLファイルに書き出します。

2. 画像を一括ダウンロード

WordPressのメディアライブラリにある画像を、wgetコマンドで一括取得しました。今回は1,523ファイルをダウンロード。

wget -r -np -nd -A jpg,jpeg,png,gif,webp \
  https://自分のサイト/wp-content/uploads/ \
  -P ./public/images/

3. Astroプロジェクトをセットアップ

npm create astro@latest my-site
cd my-site
npm install

ブログテンプレートを選択すると、すぐに動く雛形ができあがります。

4. XMLをMarkdownに変換

wpxml2mdというツールを使って、WordPressの記事をMarkdownファイルに一括変換しました。

npx wpxml2md WordPress_export.xml -o ./src/content/blog

25件の記事が一気にMarkdownになります。

5. 画像パスを修正

変換後のMarkdownには旧WordPressのURLが残っていたので、Pythonスクリプトで一括置換しました。

6. Cloudflare PagesにデプロイしてGitHubと連携

Cloudflare PagesはGitHubリポジトリと連携するだけで自動デプロイが動きます。 eof