記事を書いた日: 2023-08-24 (更新履歴)
要約: 2023年にこのサイトの構成を更新したときの備忘録として、それぞれの理由などの記録を残しておく。
zolaはRustで書かれた静的サイトジェネレーター(static site generator; SSG)である。 zolaは2016-12から開発されている。 私が前に使っていたJekyll (2008-10〜)やHugo (2013-06〜)と比較するとかなり新しい部類に入る。
今回Hugoからzolaに変えたわけだが、他にもあるSSGの中からzolaを選んだ強い理由はない。 Hugoに不満があったわけではないが、せっかく作り直すなら別の似たようなツールを試しておこうかな、と思ってzolaを選んでみた1。 今のところは使い勝手はそこまで変わらない。
ただ、zolaを選んでおいてこんなことを言うのも変だが、速さと機能の多さなどを考慮に入れると、2023年現在ではHugoのほうが優れているような気はする。
zolaのREADMEにはHugoのテンプレートエンジンに不満があったと書かれているので、そこは改善されていると期待はできるかもしれない。
あとzolaにはHugoの .GitInfo
に相当する機能がない。一応リクエストは上がっているが、対応される見込みは今のところなさそう。
せっかくGitHub Pagesを使うのであれば(?)、GitHub Actionsを使って、masterブランチにpushされるたびにデプロイされるようにしておきたい。 このブログでは、ビルド+デプロイの処理は build-deploy.yaml (以下のyaml)で行っている。
name: Zola on GitHub Pages
on:
push:
branches:
- master
jobs:
build:
name: Build and upload
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3.5.3
- name: Install zola
uses: taiki-e/install-action@v2.16.0
with:
tool: zola@0.17.2
- name: Build
run: |
zola build
- name: Upload artifact
uses: actions/upload-pages-artifact@v2.0.0
with:
path: ./public
deploy:
name: Deploy
needs: build
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2.0.4
後半はほとんど Publishing with a custom GitHub Actions workflow - GitHub Docs をそのまま実行している。 ただし、この機能は一応まだベータ版ということになっているのでそこは少し気にしておく必要がありそう。
ホスティング先については、これまではなにも噛ませずにS3に置いている状態になっていた。 まあアクセス数が多いわけではないのでそのままでもいいといえばいいのだが、さすがに改善したほうがいいかなと思って、GitHub Pagesに変えた。 そこまでヘビーに使うわけでもないし2、GitHub Pagesで十分だと思われる。
GitHub Pagesのドメイン (oshikiri.github.io
) のままでもいいのだが、せっかくドメインを持っているのでカスタムドメインを設定しておく。
カスタムドメインの設定についても調べてみたが、どうやらかなり簡単にできるようだった。
どういった状況になるとGitHub Pagesで足りなくなるか?→ GitHubのドキュメント(2023年8月現在)によればサイズ制限(サイトが1GB未満)、デプロイのタイムアウトの制限(10分以内)、帯域幅制限(100GB/月まで)など、いくつか制限はあるのだが、個人のブログの通常の使い方であればほぼ引っかかることはないと思われる。 帯域幅制限については、仮に1PVで100KBやりとりするとして、100GB / 100KB ≒ 1,000,000 なので100万PV/月になると問題になるかもしれないが、普通は気にしなくて良さそう。
静的サイトジェネレーターをHugoからzolaに変えた
が #jing-de-saitozieneretawohugokarazolanibian-eta
になってしまう)。初めて知ったがこれは slugify と呼ばれる処理らしい。slugify を避ける方法はいくつかあるが、id に ascii 文字以外が入るのが許容できるのであれば、config.toml の [slugify]
セクションに anchors = "off"
を指定すればいい。