anz blog

Rust製のSSGであるZolaに移行した話

2021-05-23 #Zola #Rust #SSG

ほぼ1日がかりの作業になってしまったけれど、出来上がりには満足しています(笑)
前より無駄なものを結構削除しました(AddThisとかSmoochとかDisqusとか...使われていないしロードコストあげてるだけだったので 汗)
もし何か変なところがあれば教えて下さい mm

ブログの変遷

折角なので自分のブログの変遷を少し振り返ってみる。

  • Tumblr でブログを始める
  • SSG: Metalsmith で構築しはじめる
  • SSG: Publish に移行する
  • SSG: Zola に移行する(← NEW!!)

Tumblr で始めるあたり、そして選択してきた静的サイトジェネレーターから、謎のメジャー選ばない志向とかアマノジャックがチラ見えしていますね(笑)

Zola

Zola とは、Rust 製の Static Site Generator (SSG) です。

どういう経緯で知ったのかはもう覚えていないのですが、なんかのきっかけで知って気にはなっていた存在で、
Publish から移行しようかなぁと軽く考えていたのをついに本日実行に移しました。

どうして Zola ?

家も定期的に引っ越したくなるじゃないですか?それと同じようなノリというのが結構大きな理由です。
あとは先のツイートでも書いてあるけど、使ってた Publish の更新が滞っている様に見えるとか、Rust に少し興味が湧いてたとかがもあげられます。
Publish は特に強い不満があったわけではないのですが、PR がたまっていく様子なんかを見ているとやはりちょっとなーと。あと、publish run でローカル実行してるときの止め方が ctrl+c ではなく enter というのもぷちストレスだったり。
まちがって ctrl+c でとめちゃうとプロセスが死なずにずっと残るという...それの PR も出てるんですけどねー

あとはやっぱり、そんなにメジャーじゃないってのも強いですよね!(ドヤっ

触ってみた所感

実際に移行始める前の検証とか調査とかを作業ログとして Zenn のスクラップでまとめているので、そういう話はそっちを参照してもらえれば。

(はじめて Zenn のスクラップつかってみたけれど、いい感じだったのでまた何かこんな感じで使いたい所存)

ということで、ここではざっくりとした印象を。

シンプルでわかりやすい

Metalsmith とか Publish とかを始める時はそれなりにつまづいた記憶があるのですが、Zola はそういうこともなくすんなりはじめられたので、わかりやすいといっても大丈夫だと思います。
(自分のSSG力が上がってる説もありますが)
ドキュメントもちゃんと整備されているので、それの Getting Started をサクッとなめていくだけでも基本的なものをはできますし。
デザインでいじるときに触る templates もベースが作られるので、はじから何もわからん状態になることはないです。
ハードルは低いといって良いかと。

シンタックスハイライトがある

まえの Publish にはそのような機能はなかったので、それを実現するために外部jsを読み込んでから適用させるという方法をとっていたのですが、
当然だけれどロードしてから適用されるまでに少しラグがあってたまに気にはなっていました。
それが Zola にはもともとシンタックスハイライトの機能があるので、外部js読み込みとかなく実現できるのがいいです。
しかも、そのテーマもたくさん用意されているので、よほど強いこだわりがなければ、気にいるものがあると思います。
僕は馴染みがありそうな visual-studio-dark を採用しました。(今後気分転換でかえそうですが)

ちなみにシンタックスハイライトを適用してテーマを設定するのは config.toml で行います

[markdown]
highlight_code = true
highlight_theme = "visual-studio-dark"

抜粋するとこういう感じです。

ビルド時間短縮されました

Publish を使っているときも、Zola にしてからも Github Action でデプロイするようにしているのですが、そちらのステップをみると

  • Publish: 20s
  • Zola: 2s

1/10 というちょっぱやの結果になっていました。
ローカルで作業をするわけではないので、正直30分とかかかっても全然いいっちゃいいのですけど、速いは正義ですから。

もっとも大変なのはテンプレート

Zola は Template Engine として Tera を採用しているのですが、今回の移行にあたってこれの構文とかそこらが最もつまったところです。
こういうことをしたいのだけれどどう書くのだろう?という感じで。
まぁそれもドキュメントをみつつ、Playgrond で触ったりしたらわかる範囲でしたが。学習コストがかかるところであるのは間違いないです。
ただ、自分でデザインをつくらず、すでにあるテーマを採用するのであれば関係のない話です。
(まだまだテーマは少ないのですが一応用意されています)

ぶっちゃけ、Publish のときに書いてた記事データ移行がもっとも苦労したのですけど...
(マークダウンで書いていたけれど、Front matterのフォーマットが違うのでファイル移動だけでは済まなかった)


という感じです。
これから Zola を始めてみたいと思っている人の何か参考になれば!

参考