お久しぶりです、くらげ🪼です。

気づいたら最後の更新からずいぶん経ってしまいました。ブログを塩漬けにしていた間にいろいろあったのですが、それはまた別の機会に。

今日は、このブログのシステムをWordPressからHugoに移行した話を書きます。

なぜ移行したか

WordPressには特に大きな不満があったわけではないのですが、最近「身軽にしたい」という気持ちが強くなってきて。

  • プラグインの更新通知が地味にストレスだった
  • DBメンテナンスとか、もろもろの「管理コスト」が積み重なっていた
  • Markdownで書いてGitで管理したい、という気持ちが前からあった

静的サイトジェネレーターはいくつか試したことがあって、最終的にHugoを選んだのはビルドが速くて設定がシンプルだから。テーマは PaperMod を使いました。

Claude Codeが時間を溶かす

今回の移行作業、ほぼすべて Claude Code でやりました。

具体的にやったこと:

  • WordPressのXMLエクスポートをMarkdownに一括変換するPythonスクリプト作成(公開記事42件)
  • GitHub ActionsでFTPデプロイするワークフロー設定
  • 画像ファイルの整理(WordPress自動生成の -NxN バリアントやShortPixelバックアップ等、ゴミファイル約4,700個・79MBを削除)
  • Cloudflare CDNの切り替え(QUIC.cloudから)
  • プロフィールカードのレイアウト調整

これが楽しくて、気づいたら一日中やってました。「あれも直したい、これも改善できそう」が止まらない。

Claude Codeの何がいいかというと、「こういうことをしたい」と伝えると、コマンドを実行しながら問題が起きたら自分でデバッグして直してくれるところ。自分はターミナルを眺めながら「ほうほう」と言っているだけでいい場面が多い。

もちろん暴走することもあるし、「なんでそうした?」ってなることもあるんですが、それも含めて面白い。

やったこと(技術的な話を少しだけ)

WordPressからのコンテンツ移行

WordPress管理画面からXMLエクスポートして、Pythonスクリプト(html2text 使用)でMarkdownに変換。ハマったのは、content/_index.md がWordPressの下書きで上書きされてトップページが消えたことくらいです。

デプロイ

ホスティングは引き続きシンフリーサーバー(xfree.ne.jp)を使っています。FTP経由でGitHub ActionsからデプロイするシンプルなCI/CD。hugo --minify --cleanDestinationDir でビルドして lftp mirror --reverse --delete で転送。最初はFTPのPASSVモードの設定でつまずきましたが、lftpに切り替えたらすんなり動きました。

画像の管理

WordPressが長年生成してきたゴミファイルの多さには笑いました。-300x200.jpg とか .bk.png とか .png.webp とか。整理してGitで管理し直したら、108MBあったのが2.8MBになりました。

CDN

もともとQUIC.cloudというWordPress専用CDNを使っていたのですが、静的サイトには関係ないので外してCloudflareに切り替えました。

現状

  • 記事はすべて移行完了
  • GitHub ActionsのCIは動いている(pushしたら約1分半でデプロイ完了)
  • Markdownで書いてcommitするだけでよくなった

ブログの書き心地が変わったので、少しずつ更新できるといいなと思っています。

引き続きよろしくお願いします。くらげ ଳ