Zola使用感

Zolaを使って1からサイトを作ってみた感想。まあデザインは前からそんなに変わってないんだけども、高速化とかそのへんで利点があったし、欠点もあったので感想を述べていく

画像サイズをコードに埋め込める/画像サイズを調整できる

手書きでサイトを書いた後にPageSpeed Insights(どのくらい意味があるかわからん計測手段)でページの表示速度を見ようとした時必ず怒られる項目に「画像サイズがHTML内に書いてありません」みたいなのがある。とはいえHTMLなんて画像差し替えた時にいちいち確認してスタイルをハードコードしたくないわけで。これがZolaのプロセッサによって解決したのは嬉しかった。サイトを生成するならどれでも自動化はできると思うけど、一応嬉しい点

あとは適当に置いた画像を前処理できるのもよい。/static/processed_images/というディレクトリの中に入れられて結構ファイル名が間延びしてしまうのは仕方ないけど、非可逆Webp形式に変換して解像度ごとにsrcset属性で埋め込んであげれば大体の画像が20kb付近に収まってくれる。大きさをpx単位で指定するのも面倒だけど、CSSで1em=16pxという謎の取り決めがあるのでそれを信じて記述してある

ブログを簡単に書ける

Markdownが寄与してるのは「色々ハードコードできない」という一点に尽きるかもしれない。利点でもあり欠点でもあり。利点として、「修正が必要になるくらい個別のHTMLは出力できない」ことがあって、欠点として「好きなHTMLを出力できない」。普通のMarkdown(多分CommonMark)は説明リストすら書けない。仕方ないのでトップページに置く程度のHTMLはそのまま書いた

記事を簡単にかけるのはこういう制約があるおかげと、適当にファイルを置いたらブログになってくれる手軽さ。今までもMarkdownで日記を書いていたので、そのノリで文章を書くとブログになっている。嬉しい

痒いところに手が届かない

これはZolaの欠点。なぜかというと「速さ」が売りだから。たしかに速いが、CSSはSASS形式、HTMLはMarkdown形式で固定している。理由はRustで高速に生成できるのがそのくらいだから。とはいえ今なら高速なTypeScriptとかあるようにも思うんだけど、そういうのは対応してないようだ

Teraは単純すぎる

他にもTeraというテンプレートエンジンは高速にパースができるんだけど、字下げをうまく処理してくれない。ネタ元のJinjaは{{+ code }}とかでうまくやってくれるんだけど、そのためには{{より前にすべての改行と字下げを情報として持っておかないといけないので、少し処理が遅くなる、とそういうことなんだろう

出力コードをきれいにするためにindentというパイプが設定され、インデント数だけ{{ code | indent | indent | indent | safe }}のように連ねる必要があるようで、うざったい。もちろんそんなにDOMを深くしない方が良いのはそうだけど、HTMLは結構深くなりがちなので困る。あとはテンプレートエンジンに型がないのですごく困る

URL

他にもURLをアルファベットとハイフンだけにしてくれるんだけど、その内容が、すごくカッコ悪い。なぜなら漢字はおそらく中国読み、平仮名はローマ字読みにしてくるから。変えるのも記事ごとに英訳を一緒においておかねばならないらしく、難しい。「サイト」タグとかは全部/blog/saito/以下に置いてある。中学生かよ

でもこういうのも速さとわかりやすさの犠牲なんだと思えばまあ悪くないかなという気持ち。コンテンツが残っていればアドレスが変わってもなんとかなると思うのでそこまで気にせずリライトすると思う

ポストプロセッサもない

HTMLの空白を削除するか、くらいしかできることがない。Webfonts入れるぞーと思った時にMarkdownの内容でサブセット化ができると楽なんだけど、そういうのはまったくなかったので、Google Fontsでなんとかするしかなかった。悔しい。次やるときはなにかいい案を考えておかないとダメだ

ドキュメントが結構充実

これはまあ嬉しいかもしれない。できることがそもそも多くないのもあるけど、できることはだいたいドキュメントに書いてあって、それを組み合わせれば大体のやりたいことはできる

終わり

利点欠点はだいたいこんな感じ。しばらくZolaを使い続けると思うけど、なにかまた別の、Rustでもっと色々できそうなのがあったら考えるかもしれない