この度、本ブログをAstro+TinaCMSからWordPressに移行しました。
本記事では、WordPressの選定理由及び、移行手法について紹介します。
旧ブログの環境と問題点
旧ブログは下記の環境で構成されていました。GitHubにMarkdownの記事データを載せるか、TinaCMSを使って記事を書くことで、Cloudflare Pagesのデプロイが自動で走り、静的サイトとして提供されるようになります。また、画像ファイルは/publicディレクトリに保存します。
- Astro 7.1
- TinaCMS 3.11
- Cloudflare Pages
本環境での問題は2点ありました。
一つ目は画像のアップロードが少し手間であったことです。画像は/publicに保存されますから、事前に画像を圧縮しておく必要があります。また、TinaCMSは画像のアップロードを行う度にコミットを行う為、Cloudflare Pagesのビルド数制限を圧迫します。
二つ目は下書きの問題です。私は技術系の記事を書く際、検証を行いながら、同時に本文を記述します。この場合、数日にまたがる検証や、そもそも数ヶ月掛けて気が向いたら検証を進める系の記事では、Gitにコミットできず、そのまま機材の初期化等で失われる記事が出てきます。Astroの設計でDraft記事を受け付けるようにすれば良い話ではあるのですが、プッシュしてしまうとCloudflare Pagesのビルドが走る問題もあり、あまり下書きに向いていない運用でした。
これらの問題があったため、これらが解決できそうなWordPressを導入することにしました。
WordPressの選定理由
真っ先に考えた移行としては、TinaCMS以外のDraftを扱えるソリューションへの移行と、Cloudinary等の画像配信サービスの導入です。
しかし、TinaCMSはめんどくさい記事のアトリビュートを持っているこのブログにとても良くフィットしていましたし、実際に他のソリューションを入れてみたところ、あまりうまく動いてくれませんでした。
また、このブログはアクセス数が少ないですが、それでも従量課金要素のあるCloudinary等の導入はあまり気乗りしませんでした。
そこで、静的サイトを諦め、CMSを導入することにしました。CMSはあまり詳しくなく、とりあえず有名で、元々使ってみたいと思っていたWordPressに白羽の矢が立った訳です。実際に手元で簡単な検証を行ったところ、うまく移行出来たため、WordPressが移行先の第一候補となりました。
OSS WordPress以外のソリューションとして、SaaSに移行するというアイデアもありました。具体的には、はてなブログやWordPress.com等です。しかし、これらのサービスはカスタムドメインが有償であり、なおかつこれまでのURLを引き継げるかの確認も取れず、丁度レンタルサーバを別用途で借りていたのもあって、自動更新などを行ってくれるOSSのWordPress運用することに決めました。
また、AstroのバックエンドでWordPressをヘッドレスCMSのように使う選択肢もありましたが、こちらは純粋に設定の手間を考え、直接WordPressを公開することにしました。
移行手順
逆はよくあるのでしょうが、AstroからWordPressへの移行はあまり記事がなかったように思います。今回は思い立ったのが丁度お盆休み中で、幸い記事数も少なく検証作業も簡単だったため、ChatGPTにMarkdownベースの記事一覧をWordPressのXMLエクスポートに変換するプログラムを書かせました。
このスクリプトがかなりうまく動き、一部のMarkdownを除いてまともに読めるレベルの移行が行われていた上、問題のあるMarkdownも頑張れば読める状態であったため、このエクスポートファイルをそのまま本番の移行に使うことにしました。
WordPressのエクスポートファイルには画像データ等が存在せず、これらのデータはサーバから落としてくる仕様の為、同一ホスト名で移行する際には問題が発生します。今回はCloudflare Pagesの.pages.devドメインが生きていたため、ここから画像ファイルを落としてくるように設定しました。
特にコメントなども存在しなかったため、記事データの移行はこれだけで完了しました。
最後に
WordPressへの移行は主にLLMのおかげでかなりうまくいきました。今後はカテゴリ機能等をうまく使いこなして行きたいと考えています。
また、WordPressといえばセキュリティ問題です。一応簡単にセキュリティが上がりそうな設定は投入していますし、レンタルサーバ側も簡易的なWAFを導入してくれているようなので、これらに期待したいと考えています。現状利用しているテーマはWordPress公式の物ですし、プラグインも有名どころと思われるもの一個しか入れていないため、そこら辺の問題は少ないと思いたいところです。
現状気になる点は、編集画面の背景が真っ白でDarkReaderも効かないため、肝心の執筆を行っていると目が痛くなることくらいでしょうか。記事ページはDarkReaderに対応しているので、おそらく本記事をご覧の方は問題無いはずです。
今後より良いソリューションを見つけた場合、また移行を行うかもしれませんが、しばらくはWordPressの高級すぎるエディタを使って記事を書いていければと思っています。