WordPressからAstro+Cloudflare Pagesに移行してみた
WordPressからAstro+Cloudflare Pagesに移行してみた
長年お世話になったWordPressに別れを告げ、Astroという静的サイトジェネレーターに移行しました。サーバー代は実質ゼロ、表示速度は爆速。移行作業の全記録をまとめます。
なぜWordPressをやめたのか
WordPressは優秀なCMSです。プラグインで何でもできるし、管理画面も直感的。でも使い続けるうちに、いくつかの不満が積み重なってきました。
- サーバー代がかかる ── 月数百円とはいえ、個人ブログに払い続けるのは地味にしんどい
- セキュリティ対応が面倒 ── プラグインのアップデート、PHPのバージョン管理、不正アクセス対策
- 表示が遅い ── PHPで動的にページを生成するため、どうしてもレスポンスに時間がかかる
- バックアップが怖い ── データベースが壊れたら全滅
「個人ブログなのに、こんなに管理コストをかけなくていいのでは?」と思い始めたのが移行のきっかけです。
Astroを選んだ理由
調べていくつかの選択肢(Hugo、Next.js、Gatsby)を比較した結果、Astroに決めました。
| Astro | Hugo | Next.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