今週の始め頃に、
hugo のテンプレートを調整したら、この Web サイトの生成とか早くなるんじゃね?
と思って作業していて、 気がついたらテンプレートを全面的に書き直すという事になっていたんじゃが……と言う話です。
なんでテンプレート全面書き直しになったか
今回、最初に色々と作業をしていた時に、
あかん、このテンプレート構造だとやりたいこと出来ないやん……
と言う事に気が付き、ここからまさかまさかのテンプレートリライトに繋がって行きました。 苦渋の決断です。分かりますね。
今回のテンプレート書き直して得られたコト
- とてもスッキリとしたテンプレートファイル
- 上記に伴うメンテナンスのし易さの向上
- あと今まで気がついていなかったバグの修正
今回のメンテでテンプレートをとてもスッキリと書けた関係で、 結果としてメンテナンスビリティが向上し、 またテンプレートファイル数もガッツリ減りました。
で、どうやってテンプレートをガッツりシンプルにしたかと言うと、基本的には:
<ruby>{ dict "foo" "bar" <rt> jsonify </rt></ruby>}
と言う感じの partial template で生の Hugo 変数などから JSON の値を生成し、それを:
<ruby>{ partial "path/to/template.html.html" . <rt> unmarshal </rt></ruby>}
と言う感じで大本のテンプレートで呼び出してデータ構造を得る、と言うテクニックを多用しました。
まぁこのテクニック自体は前々から使ってたんですが、今回はそれが一歩先に進み、
Hugo の生変数を使う代りに、抽象化したデータ構造を用いる
と言うスタイルになった事で、テンプレートの共通性がさらに良くなりファイル数の削減に繋った、 と言う感じです。
あと今回の作業では Atom Feed がおかしなコトになってるとか、 あるいは閲覧性が低かたトップページとかも直せたんで、 その辺りもテンプレート書き直しで得られた事ですね。はい。
今回のテンプレート書き直して得らなかったコト
- ビルドタイムの短縮
- デプロイタイムの短縮
- 精神衛生の向上
結論から言えば、まったく早くなりませんでした 。……おいおい。
今回の作業、結果から言えばテンプレートのメンテナンスビリティの向上、 と言う怪我の功名は得られたものの、ビルドタイムやデプロイタイムはあんまり変わり無く、 おおよそ 1 deploy 三十秒 と言うラインは超えられませんでした。
そのため テンプレートがボトルネックでは無さそうな感じ なので、 これ以上早くしようと思うと お金モリモリスペックマシマシ、私の回線は 1Gbps です、 と言うのをしないとダメっぽく、まぁ当面はこのままかなぁと言う感じです。はい。
あと、
テンプレートを全面書き直しせざるを得ないじゃん……
と気がついた時に、精神状態がダダ下りになったのはここだけの話。
以上
まぁテンプレートがスッキリしたと言う点では良かったんだけど、 あんまりデプロイまでの実行時間の短縮には繋らなかったのは無念でした。はい。