記事が 20 本を超えたあたりで、まとめページの更新を忘れました。記事のタイトルを直したのに、まとめの方が古いままです。
これは気をつけて防ぐ種類の問題ではありません。2 か所に同じ情報があるかぎり、いつか必ずずれます。記事が増えるほど確実になります。
そこでまとめページを手で書くのをやめました。この記事は、その置き換えの記録です。実際に動くコードは GitHub に置いてあります。
動いているところは、動画にしました。読むより早い方はこちらからどうぞ。
なぜまとめページが必要だったか
作っていたのは、韓国映画・ドラマを紹介するサイトです。記事は 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 本を超えたら、一度は考える場面が来ると思います。手で管理できるうちに切り替えておくのが楽です。


コメント