日々の記録

WordPressのブログを静的HTMLに作り直しました

長くWordPressで運用してきたこのサイトを、静的HTMLで表示する構成に作り直しました。過去の記事や写真、公開日、URLを引き継ぎながら、記事をMarkdownで管理し、EleventyでHTMLを生成する形にしています。

今回移したのは、2026年10月9日のバックアップに含まれる公開記事1,049件と固定ページ3件。記事の日付は2004年4月から2021年10月まであります。長年の記録を、これからも読める形で残すための作業です。

記事と画像、これまでのURLを引き継ぐ

まず、WordPressのデータベースから公開記事を取り出し、タイトル、本文、公開日、更新日、カテゴリ、タグを整理しました。本文はMarkdownへ変換し、画像のキャプションや複雑な表などは、必要に応じてHTMLを残しています。

画像などのメディアは1,476ファイルを移植しました。記事URLは従来の「年/月/日/記事名」の形式を維持し、画像も元のアップロード先のパスを引き継いでいます。

過去の記事には、古い形式の内部リンクや不完全な商品リンクもありました。移行先を特定できる内部リンクを修正し、Amazonの商品リンク31件も商品IDを使ったURLに直しました。行き先が分からないものは推測で置き換えず、確認が必要なリンクとして記録しています。

動画や音源の埋め込みも見直す

WordPressで使っていた専用の記法や古い埋め込みコードも調べ、YouTube、Vimeo、SoundCloudなどを静的なページで表示できる形に変換しました。

対象166件のうち、159件を埋め込みとして復元しています。旧Flash形式など、そのまま復元できない7件はリンクを残しました。

埋め込みにはタイトルと元サイトへのリンクを付け、スマートフォンでも本文の幅に収まるようにしています。ただし、外部サービス側で動画や音源が現在も再生できるかは、別途確認が必要です。

本文と見た目を分け、読みやすさを整える

新しい構成では、記事本文、サイトの設定、表示用テンプレート、CSSを分けました。記事を追加するときはMarkdownを書き、一覧やカテゴリ、タグ、年月別のアーカイブは記事データから生成します。

新しいブログのデータ構造

記事や設定を編集するファイルと、公開用に生成するHTMLを分けています。

データ 保存場所・形式 内容・役割
記事 src/posts/・Markdown タイトル、公開日、更新日、URL、カテゴリ、タグ、概要、下書き状態、本文
固定ページ src/pages/・Markdown Aboutなどの本文とページ情報
サイト設定 src/_data/・JSON サイト名、ドメイン、ナビゲーション、カテゴリ、タグ、GA4設定
表示テンプレート src/_includes/ 記事・固定ページ・一覧の共通レイアウト
スタイル src/styles/・CSS 文字、余白、配色、画面幅に応じた表示
画像など public/ 既存画像は元のパスを維持。新しい画像はmedia/へ保存
移行記録 migration/・JSON WordPressのIDとURLの対応、変換結果、確認が必要な項目
公開用ファイル dist/・HTMLなど Eleventyで生成したページ、画像、CSS、RSS、サイトマップ

更新するときは記事のMarkdownや設定を編集し、そこから公開用ファイルを生成します。記事本文に共通のデザインを持たせないため、レイアウトや配色はまとめて変更できます。

見た目も作り直しています。本文の幅や行間を調整し、リンクには下線を付けました。キーボードで操作したときのフォーカス表示や、本文へ直接移動するリンクも用意しています。

配色はOSの設定に合わせて自動で切り替わり、手動でライトとダークを選ぶこともできます。

移した内容を検証し、公開の仕組みを用意する

移行後は、記事のIDと公開パスを照合し、内部リンクやローカル画像の参照先を検査しました。下書きがページや記事一覧に出ないことも確認しています。

ブラウザーでは、トップや記事、カテゴリなどの代表的なページを、PCとスマートフォンの幅で確認しました。確認したページでは横スクロールやローカル画像の読み込み失敗はありませんでした。全記事の目視確認や、アクセシビリティの全項目の試験は、まだ行っていません。

検索エンジン向けのsitemap.xmlを自動生成し、従来のGA4設定も引き継ぎました。ローカルの確認画面ではアクセスを送信しないようにしています。本番で計測データが届くかは、公開後に確認する項目です。

GitHub Actionsには、HTMLの生成と検証が成功したらXserverへ転送する仕組みも用意しました。

古いリンクや画像の説明文、旧URLからの転送など、残っている確認事項はあります。過去の記事を引き継ぎ、今後はMarkdownを編集して更新していくための構成ができました。