動機

アド"定期ゲ"ベントカレンダー2024 Advent Calendar 2024に参加するにあたり、ひとり城ドメインのルートページを作りたくなりました。

技術選定

Cody AIとの協議の結果、Hugoを採用しました。

  • 早い
  • 安い
  • 美味い

が揃っていて、ちょうどよかったと思います。

AIについては、アドカレの記事で詳しく書きます。

セットアップ

Hugoは超有名なので、公式ドキュメントどころかCodyに言われるがままでほぼ終わりました。テーマの細かいカスタマイズをしなければ、30分もかかりません。

hugo new site blogの爆速っぷりには本当に笑いました。噂に違わぬその速さ……お主……さては有名ですね?

公式ドキュメントも親切でした。

引っかかったポイント

それでもいくつか引っかかったので、それを書いておきます。

設定ファイルを環境変数で上書きするときはHUGO_XXX

Hugoの設定ファイルを環境変数で書き換えたいときがよくあります。

たとえば、サイトのベースURLは開発環境と本番環境でたいてい異なります。

# config.toml
# サイトのベースURL
baseURL = "https://example.com"

これを環境変数で上書きしたいときは、HUGO_BASEURLという環境変数で設定します。

# .env
HUGO_BASEURL=https://example.com

公式ドキュメントに書いてあったんですが、気づくのに時間がかかりました。

klakegg/hugoのHugoバージョンが古い

hugo dockerで検索するとklakegg/hugoのDocker Imageがヒットします。しかし、このDocker ImageのHugoバージョンは0.101.xです。

2024年12月時点の最新バージョンは0.139.4ですから、このバージョンだと多くのテーマでビルドに失敗します。

debianのImageなどでビルドするのが良いでしょう。

# Dockerfile
FROM debian:bookworm-slim as builder

# Install Hugo
RUN apt-get update && apt-get install -y \
    curl \
    && curl -L https://github.com/gohugoio/hugo/releases/download/v0.139.4/hugo_0.139.4_linux-amd64.deb -o hugo.deb \
    && dpkg -i hugo.deb \
    && rm hugo.deb \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /src
COPY ./apps/blog .
ARG SITE_BASE_URL
ENV HUGO_BASEURL=${SITE_BASE_URL}
RUN hugo --minify

FROM nginx:alpine
COPY --from=builder /src/public /usr/share/nginx/html

記事の読了目安時間が少なすぎる

1分と表示

Hugoにはこのように、読了目安時間を文字数に応じて表示する機能があります。しかしデフォルトだと、この記事でも1分程度です。少し短すぎます。

これは単語の計算方法によるもので、ページ設定のisCJKLanguageで日本語向きにできます。

# page.md

---

title: 'HugoでサークルWebサイト作り'
date: 2024-12-16T0:00:00
isCJKLanguage: true # これを追加

---

<!-- 本文 -->

これで妥当な時間が出ます。 3分と表示

サークルWebサイトできました

散り散りになっていたSNSアカウントなどがまとまりました。

テーマのカスタマイズ含めて半日かかりませんでした。ホントの初心者には難しいので一概にオススメはできませんが、Hugoはとても良いです。