PR
ブログ初期設定 Pythonサイト設計ブログ運営内部リンク自動化

まとめページを手で書くのをやめた話 – 記事が増えるほど管理が破綻する

暗い机の上のノートパソコンとコード画面 ブログ初期設定

記事が 20 本を超えたあたりで、まとめページの更新を忘れました。記事のタイトルを直したのに、まとめの方が古いままです。

これは気をつけて防ぐ種類の問題ではありません。2 か所に同じ情報があるかぎり、いつか必ずずれます。記事が増えるほど確実になります。

そこでまとめページを手で書くのをやめました。この記事は、その置き換えの記録です。実際に動くコードは GitHub に置いてあります。

動いているところは、動画にしました。読むより早い方はこちらからどうぞ。

実際に動かしているところ(2 分 47 秒)
スポンサーリンク

なぜまとめページが必要だったか

作っていたのは、韓国映画・ドラマを紹介するサイトです。記事は 1 本ごとに 1 作品を扱います。ここに入口が 1 種類しかないという問題がありました。

入口検索する人の状態
作品名その作品を知っている
監督名その監督を知っている
俳優名その俳優を知っている

どれも「すでに知っている人」が前提です。何も知らない人はどこからも入ってこられません。

そこで「観る側の状態」を入口にしたページを作ることにしました。「怖い」「泣ける」「あの世が出てくる」といった軸です。作品名を知らなくても検索されます。

手で書くと、どこが壊れるか

最初は普通にまとめページを書きました。作品名を並べてリンクを張るだけです。すぐに壊れました。

  • 記事のタイトルを直しても、まとめ側は古いまま
  • 新しい記事を書いたのに、まとめに追加し忘れる
  • 1 本の記事が 3 つのまとめに載っていて、直す場所が 3 か所ある

3 つ目が一番きついです。記事が増えると、1 本直すたびに探す場所が増えていきます。

向きを逆にした

まとめページが記事を集めにいくのをやめて、記事の側に「自分がどこに属するか」を書かせることにしました。

<!--META
title: ffmpeg で動画を切り出す
slug: ffmpeg-trim
tags: [ffmpeg, automation]
note: 開始と長さを指定するだけ
-->

記事を書くときに tags を 1 行足すだけです。あとはスクリプトが全記事を走査して、タグごとに集めて一覧を作ります。

まとめページは生成物になりました。人が触りません。触らないので、直し忘れるということが起きなくなります。

実行するとこうなる

$ python3 build_index.py posts
  ○ automation        3 件
  - ffmpeg            2 件
  - python            2 件

生成するには --build を付けます。

が生成対象、 が見送りです。3 件未満のタグはページを作りません

なぜ 3 件で切るのか

タグを網羅してページを作ると、中身が 1 本しかないページが大量に生まれます。読む人にとって価値がなく、検索エンジンから見ても薄いページの量産です。

記事が増えれば自然に 3 件に届きます。届いた時点で勝手にページができるので、待っていればいいだけです。

まとめページに何を載せないか

ここが設計の分かれ目でした。載せる情報を増やすほど、更新の負担がまとめページに戻ってきます

項目判断
タイトル・リンク載せる
一行の説明載せる
評価・点数載せない
配信サービス名載せない
説明文の段落載せない

配信サービスは契約で入れ替わります。まとめページに書くと、変わるたびにまとめ側も直すことになります。それでは元に戻ってしまいます。

変わりやすい情報は個別記事に置き、まとめは入口に徹する。この線引きだけで、運用の重さがかなり変わりました。

説明の段落も置きません。見出しと表だけです。見出しが内容を言っているので、その上に文章を足しても読まれません。

やってみて分かった穴

タグ名をそのままファイル名にすると詰む

最初、日本語のタグ名をそのままファイル名にしました。URL が日本語になり、パーセントエンコードされた長い文字列になります。

タグは英数字のスラッグで持ち、表示名は別の対応表に置く形に変えました。表示名を変えても、記事側を直す必要がありません。

記事タイトルをそのまま並べると表が読めない

記事タイトルは検索を意識して長くなっています。それを表に入れると1 行が折り返して、一覧の意味がなくなりました

タイトルから作品名だけを抜き出して並べるようにしました。一覧は「探す」ための場所なので、情報を減らす方が正しいです。

コードは GitHub に置いています

最小構成に組み直したものを公開しています。サンプル記事 5 本を同梱しているので、クローンしてすぐ動きます。標準ライブラリだけで書いてあり、インストールは不要です。

shomichiru/jacepark-lab — 01-auto-index

まとめ

  • 同じ情報が 2 か所にあると、いつか必ずずれる。気をつけて防ぐ問題ではない
  • まとめが記事を集めにいくのではなく、記事に所属を宣言させる
  • 3 件未満のタグはページを作らない。薄いページの量産になる
  • まとめには変わりやすい情報を置かない。置くと更新負担が戻ってくる
  • 一覧は探す場所なので、情報を減らす方が読みやすい

記事が 20 本を超えたら、一度は考える場面が来ると思います。手で管理できるうちに切り替えておくのが楽です。

コメント

タイトルとURLをコピーしました