今までJekyllを使ってこのブログを生成していたが、昨今の自分の中でのGolangの盛り上がりから、Hugoに移行することにした。

Jekyllに対する不満

Jekyllに対して大きな不満というのは無かったのだけども、大まかにいうと以下の3点かな。

  • Ruby環境が必要
  • bundle installが遅い
  • ビルドが遅い

まずRubyはJekyllぐらいしか使ってないので、それだけの為にインストールするのはなんか嫌だなと思っていた。
Rubyに対して特に嫌な印象は持っていないのだけども興味も特に無くなっているので、最近全くウォッチ出来ていない。
なので、何かしらハマると一気に苦痛になりあまり使いたくないというのが正直なところだった。

bundle installなんか一回だけじゃんと思われるかもしれないが、自分の場合は基本的にCIサービスでデプロイするようにしているので、CIのプロセスの中でこの時間がとても無駄に感じていた。
特にCIプロセスマシンを非力なものにした場合、ffiパッケージのインストールがなかなか終わらないという体験をして、我慢の限界に達した。
最初からシステムワイドにインストールされているDockerイメージとか用意すれば良いかなと思ったが、プロジェクト毎に配下にあるGemfileの内容も違うので、それもちょっとなと思った。

ビルドが遅いという件については特に感じていなかったんだけど、Hugoを使ったらあまりの速さにびっくりした。
速さは正義。

Hugoに良いところ

まず、インストールが簡単。
Golangで作られているので、バイナリを落としてくるだけで良い。
OSが古かろうがなんだろうが関係ない、最高。

ビルドが速い。
Jekyllと比較しても10倍ぐらい速い。

移行作業

いくつかHugo公式で用意されているが完全ではない。
hugo importhugo convertで一括変換した後は、grepsedを使ってゴニョゴニョする必要があった。
特に自分の場合、AmazonのASINを書いたら商品の画像やテキストのリンクを作成してくれるプラグインInstagramの画像を表示してくれるプラグインを作って利用していたので、その辺は結構面倒だった。

最終的にはHugoのShortcodesという機能で代替することが出来た。
特にInstagramの画像を表示するShortcodesは、Hugoにビルドインされたものを利用できたので、それをそのまま利用した。
Amazonの商品を表示するShortcodesは適当なものがなかったので、結局自分で作ることにしたんだけど、それについては別途記事を書ければと思っている。
書いた → HugoでAmazonの商品を表示する為のShortcodeを作った

記事のURLとかは色々仕組みが用意されていたので、Jekyllの時と全く同じURLで生成することが出来てとても助かった。

おわりに

HugoはJekyllより出来ることが少ない分シンプルにまとまっているように感じる。
Hugoも多少Golangっぽさがテンプレートとかに滲み出しているので、Golangに興味なくなったら辛くなるのかもしれないけど、こうやってブログをいじることが新しいことを学ぶ機会になったりするので、個人的に満足してる。
Hugo、なかなか良いです。