ブログの静的サイトジェネレータをMiddlemanからHugoに変えた

Contents
  1. 概要
  2. なぜMiddlemanをやめたのか
  3. なぜHugoにしたのか
  4. デプロイ
  5. おわりに

概要

このブログを生成してる静的サイトジェネレータを Middleman から Hugo に変えました。

なぜMiddlemanをやめたのか

アップデートがつらかったのでやめました。 久々に Middleman アップデートしようとして bundle update したら、解決できる Gem のバージョンねーよ!と言われてやめるのを決意しました。

アップデートがつらいのは次のような理由でした。

  • Middleman も本体だけでなく middleman-blogmiddleman-deploy などもあってそもそも依存関係がめんどくさかった
  • esa.io で記事を書いていたので、Markdown の Renderer に親和性の高い qiita-markdown を使えるようにする Gem を独自で作ってた
  • Emoji を使うためにそこをさらに拡張していた
  • esa.io の frontmatter では正確な投稿日が取れないので Git から取るように Middleman にパッチを当ててた

いろいろパッチあててるのだるかったし、他にも Python の 2.7 に依存があったり、いつのまにかシンタックスハイライト効かなくなってたり、使ってた CI の Wercker が Oracle に買収されたり(関係ない)と以前からやめたいとは思ってたので良い機会でした。

なぜHugoにしたのか

Go 製のジェネレータで特に問題がなかったからです。

他と比較してないのでなんとも言えませんが、Go 製ということで最初に試して、十分に早いし特に拡張することなくやりたいことができたので Hugo にしました。

心配していたこの辺はなんなくクリアしました。

  • 今までの URL がそのまま使えるか
  • Python へ依存してないか
  • Emoji が使えるか
  • テーマ作るの難しくないか

この辺はどうでも良い部分でした。

  • Slim や SCSS で書いてたけど、頻繁には変えないし量も少ないのでの HTML や CSS で書いてもいい
  • esa の吐く Frontmatter と Markdown を解釈する必要があったけど、esa はすでにやめていたので Hugo が解釈できる Markdown で書けばいい

後者について既存の記事を変換する必要はあったので、Ruby でスクリプトを書いて変換しました。

テーマは Middleman のときのものをそのまま流用して作りました。

デプロイ

ついでに CI/CD を Wercker から GitHub Actions に変えました。 Wercker もいろいろ変わったけど Oracle に買収されてて追従する気はないし、GitHub で完結してれば一番うれしいので Actions を使うことにしました。

GitHub Actions は初めて使ったんですが、シンプルでいいですね。

おわりに

Middleman から Hugo に変わって依存関係がなくなったし変なパッチもなくなったしビルドは早くなったしシンタックスもハイライトされて万々歳です。 スッキリしました。

ビルドの遅さやパッチうんぬんは Middleman のせいではなくて自分の使い方が悪かったせいなんですけどね 😅

esa をやめるときにもスクリプトでいろいろ変換してて移行しやすくなってたのもあってスムーズに移行できてよかったです ✨