ブログ記事をテーマ別に整理したドキュメントページを作った話

ブログを書き続けていると、記事が増えてきたときに「あの記事どこだっけ?」となるのが悩みでした。 とくにSvelteKitやCloudflare関連の記事は、シリーズとして順番に読んでほしいものが多く、ブログの新着順一覧では体系がわかりにくい状態になっていました。

そこで、既存のブログはそのままに、テーマ別に整理したドキュメントページを追加しました。


どんなページを作ったか

/docs/ 以下に、技術テーマ別のシリーズページを作りました。

シリーズ 内容
SvelteKit 基礎 ルーティング・load関数・hooks など
SvelteKit 応用 認証・デプロイ など
SvelteKit × Cloudflare D1・R2・KV・Queues・AI など
Svelte 5 リアクティビティ・コンポーネント など
Cloudflare アカウント・ドメイン・ブログ移行
認証・セキュリティ OAuth・セッション管理 など
テスト Vitest・Playwright
TypeScript ユーティリティ型 など
Hugo・ブログ構築 テーマカスタマイズ・フォーム実装 など
個人事業セットアップ Google・GitHub・Cloudflare アカウント作成など

各シリーズページには記事へのリンクが並んでいて、そこから直接ブログ記事に飛べます。


Hugoでの実装方法

1. content/docs/ 以下にコンテンツを作る

Hugoはディレクトリ構造がそのままセクションになります。 content/docs/_index.md がトップの目次ページ、content/docs/sveltekit-basics/_index.md が各シリーズページです。

_index.md にリンクをMarkdownで書くだけなので、管理がシンプルです。

content/
  docs/
    _index.md              ← /docs/ (シリーズ一覧)
    sveltekit-basics/
      _index.md            ← /docs/sveltekit-basics/
    svelte5/
      _index.md            ← /docs/svelte5/
    ...

2. docs用のレイアウトテンプレートを作る

通常のブログ一覧ページにはページネーションがありますが、ドキュメントページには不要です。 layouts/docs/list.html を作成して、Markdownの内容をそのまま表示するシンプルなレイアウトにしました。

{{ define "main" }}
<main class="main" role="main">
  <article class="post">
    <header class="post__header">
      <h1 class="post__title">{{ .Title }}</h1>
    </header>
    <div class="content post__content clearfix docs__content">
      {{ .Content }}
    </div>
    ...
  </article>
</main>
{{ end }}

3. ナビメニューに追加する

hugo.toml にメニュー項目を追加するだけです。

[[menus.main]]
  name = "ドキュメント"
  url = "/docs/"
  weight = 35
  [menus.main.params]
    subtitle = "DOCS"

よかった点

  • 既存記事のURLが変わらない — ブログ記事はそのまま、ドキュメントは目次として上に乗せただけです
  • 管理が一か所 — 同じリポジトリ・同じHugoで完結するので、別サービスを使う必要がありません
  • コストゼロ — Cloudflare Pagesの静的ファイルとして配信されるので追加費用もなし

記事数が増えてきたタイミングで、こういった整理を一度やっておくと読んでもらいやすくなると感じました。

← トップページに戻る