コンテンツにスキップ

ブログのインフラを刷新!WordPress×GCPからMkDocs×Cloudflare Pagesへ移行した話

アイキャッチ

この記事で伝えたいこと

長年連れ添ったWordPressとGCPの環境から、心機一転!MkDocsとCloudflare Pagesを使った新しいブログ環境へ移行した記録です。なぜ移行を決意したのか、どうやって進めたのか、その全貌をお届けします。

こんにちは、金育SEのまさ(@kinikuse)です。

この度、当ブログ「金育SE」のシステム基盤を全面的にリニューアルしました!

見た目はあまり変わっていないかもしれませんが、裏側は全くの別物になっています。これまでお世話になった「WordPress × GCP」の構成から、「MkDocs × Cloudflare Pages」という、よりシンプルで高速な構成に生まれ変わりました。

今回は、約2ヶ月にわたるこの移行プロジェクトについて、記録として残しておこうと思います。

この記事で分かること

  • なぜブログのサーバー移行を決意したのか
  • 新しい構成としてMkDocsとCloudflare Pagesを選んだ理由
  • 実際の移行作業の流れとポイント

サーバー移行のきっかけと理由

長年、このブログはGCP(Google Cloud Platform)上で、Bitnamiが提供するWordPressイメージを使って運用してきました。

しかし、いくつかの課題が顕在化し、移行を決意するに至りました。

抱えていた課題

  • サポート切れの連続: WordPress本体はもちろん、土台となるMySQLのバージョンも古くなり、サポートが切れてしまいました。
  • セキュリティリスク: サポートが切れたソフトウェアを使い続けるのは、セキュリティ的に非常に危険でした。
  • 移行の困難さ: WordPressが古すぎるため、標準のエクスポート機能を使っても新しい環境にインポートできない、という絶望的な状況でした。

特にセキュリティリスクは看過できず、「もうこれはサーバーごと引っ越すしかない!」と腹を括りました。 記事の元データであるMarkdownファイルはローカルに全て保管してあったのが不幸中の幸いで、新しい環境向けに必要最小限の記事だけリプレースすることも可能に思えました。

コスト的な背景

技術的な課題に加えて、地味ながらも無視できないのが「お金」の問題でした。

ブログ運営には、ドメイン代とサーバー代が継続的にかかります。その推移がこちら。

項目 構築当初(2020年) 2025年現在
ドメイン代 1,400円/年 1,700円/年(円安影響)
サーバー代 50円/月
→600円/年
130円/月
→1,600円/年
年間トータル 2,000円/年 3,300円/年

金額だけ見れば「大したことない」と思われるかもしれません。しかし、円安の影響でドメイン代は上がり、サーバー代もじわじわと上昇。ほとんど更新できていないブログに対して、このコストを払い続けるべきか?という自問自答が常にありました。

それでも、このブログにはたくさんの思い出と愛着が詰まっています。簡単に「やめる」という選択はしたくない。

「なんとかして、この場所を残し続けたい。できることなら、サーバー代という重荷から解放されて、ドメイン代だけで運用したい!」

この切実な願いが、今回の移行を後押しする大きな金銭的なモチベーションになりました。

なぜMkDocsとCloudflare Pagesなのか?

WordPressからの脱却を決めたものの、次の構成をどうするかは悩みました。最終的に「MkDocs」と「Cloudflare Pages」の組み合わせを選んだのには、明確な理由があります。

MkDocs: Markdown執筆者との最高の相性

私のブログ執筆フローは、もともとローカルPCでMarkdown形式で書き、それをWordPressにコピーするというものでした。

そのため、Markdownファイルから直接Webサイトを生成できる「静的サイトジェネレーター(SSG)」が最も自然な選択肢でした。

数あるSSGの中からMkDocsを選んだのは、Python製で扱いやすく、特に「Material for MkDocs」というテーマが非常に高機能で、求めていた機能のほとんどを実現できたからです。

最終的には、本業のSE仕事の中で扱っていた新規構築システムのマニュアルを、mkdocsで構築していたことが決め手になりました。

Cloudflare Pages: 無料で高速、しかも自動デプロイ

ホスティング先にはCloudflare Pagesを採用しました。

以前のGCPは非常に柔軟性が高い反面、個人で運用するにはコストも手間もかかります。Cloudflare Pagesは、静的サイトのホスティングに特化しており、以下のようなメリットがあります。

  • 無料: 個人の小規模なサイトなら、無料で利用可能
  • 高速: 世界中にコンテンツを配信するCDNが標準で利用でき、表示速度が非常に高速
  • 簡単な自動デプロイ: GitHubと連携させることで、記事を更新(コミット)するだけで自動的にサイトが公開(デプロイ)される仕組み(CI/CD)を簡単に構築可能

この「執筆に集中できる環境」が、最終的な決め手となりました。

Fit&Gap: やりたいことは実現できたのか?

今回の移行では、WordPressで実現していた機能を新しい環境でも再現することが大きな目標でした。結果として、ほとんどの機能をMkDocsとMaterial for MkDocsテーマ、そして少しのカスタマイズで実現できました。

No. やりたいこと 解決策 あきらめたこと
1 URLを変更したくない 記事のslugをメタデータで指定し、301リダイレクトを設定 なし
2 カテゴリ構成を変更したくない ディレクトリ構造でカテゴリを表現し、自作プラグインでURLを変換 2階層のカテゴリ構造
3 タグ付けをしたい mkdocs-tags-plugin を利用して自動生成 なし
4 目次を自動生成したい Material for MkDocsテーマの標準機能で実現 なし
5 問い合わせページが欲しい Google Formsを活用 なし
6 タイトル画像と画像リンク メタデータと自作プラグインで実現 なし
7 SNSカード(OGP)の最適化 mkdocs-materialのブログ機能とメタデータを活用してmain.htmlに追記 一部の詳細な設定
8 アフィリエイトリンク / 定型文 / カード表示 Macros機能やmkdocs-macros-utilsで部品化 なし
9 関連記事 / 新着記事 / タグ一覧 mkdocs-materialのブログ機能やmkdocs-tags-pluginで自動実現 なし
10 吹き出しパーツ Admonition機能で代替 (!!! note "まさ") イラスト付きの吹き出し
11 AnalyticsとAdSense mkdocs-materialの標準機能とテーマのカスタマイズで実現 なし
12 ランダムクイズの実装 自作Javascriptで実現 なし
13 最新記事を表示 recently-updatedの最新記事表示機能を活用 なし
14 GoogleAdsense main.htmlへの追記と、ads.txtのdocsディレクトリへの格納 なし

実際の移行作業と期間

今回の移行作業は、約2ヶ月間のプロジェクトとなりました。週末に少しずつ時間を取って進めた内容を表にまとめます。

時期 作業内容
2025/8/30 技術選定
移行の要件を整理し、MkDocsとCloudflare Pagesの組み合わせに決定。
2025/9/6 環境構築
GitHubリポジトリの作成とCloudflare Pagesとの連携。ローカル開発環境のセットアップ。
2025/9/13~ 記事移行
100本以上の記事のMarkdownファイル整理、画像パス修正、メタデータ追加という地道な作業。
2025/10/17~ 最終調整
クイズのランダム表示機能など、JavaScriptを駆使した独自機能の実装。SNS表示設定、AdSense再設定、リダイレクト設定など。
2025/10/26~ ドメイン移行
DNS設定をGCPからCloudflare Pagesへ切り替え、新サイトを本番公開して最終調整

まとめ

今回のブログ基盤刷新は、技術的な挑戦であると同時に、コンテンツと向き合う良い機会にもなりました。

WordPressとGCPの環境は非常に高機能で素晴らしいものでしたが、今の私にとってはオーバースペックでした。それよりも、シンプル、高速、そして安全に運用できる現在の構成の方が、ストレスなく執筆活動を続ける上で最適だと感じています。

表示速度もかなり改善されたはずなので、読者の皆さんにとっても快適なブログになっていれば嬉しいです。

これからも「金育SE」をよろしくお願いいたします!


最後までお読みいただきありがとうございます。
良い機会なので、私と一緒にお金の勉強を始めませんか。
まったり更新していくので、X(@kinikuse)もフォローいただけると幸いです。