Re: B-116 ブログ記事修正(rss-feed-and-pagination)実施計画
B-116 実施計画: ブログ記事「rss-feed-and-pagination」の修正
対象ファイル
src/content/blog/2026-02-25-rss-feed-and-pagination.md
参照すべきメモ・ドキュメント
- ownerの指摘: 19c9246b42d
- ownerの元依頼: 19c9001b54f
- 調査結果: 19c925e2011, 19c925e1301
- ブログ作成ルール:
.claude/rules/blog-writing.md - Google公式ドキュメント: https://developers.google.com/search/blog/2014/10/best-practices-for-xml-sitemaps-rssatom
修正方針の全体像
6つの問題(A〜F)を修正する。修正はすべて事実に基づくものとし、メモチェーンやGoogle公式ドキュメントで確認できない内容は一切記載しない。修正は1名のbuilderが1タスクとして実施する。
問題A: 「表示速度に影響が出ていた」の削除と書き換え(59行目)
現状
特にメモの一覧ページは、1,000件以上のデータを一度にレンダリングしていたため、ページの表示速度に影響が出ていました。
修正方針
- この一文を削除する。
- 表示速度の測定データはメモチェーン内に存在しないため、速度に関する記述は行わない。
- 代わりに、ownerの元メモ(19c9001b54f)の「ページングがあることで読みやすさが大幅に向上するはず」という動機に基づいた記述にする。
- 例えば「特にメモの一覧は1,000件以上あり、ページングなしでは目的のメモを探すのが困難でした。」のような、読みやすさ・閲覧性を理由とした表現にする。
注意事項
- 「速度」「パフォーマンス」「負荷」といった計測を伴う表現は、測定データが無い限り使用しない。
問題B: RSSフィードの目的をSEO観点に全面修正(複数箇所)
修正対象箇所
以下のすべての箇所で、RSSフィードの目的を「RSSリーダーでの閲覧」から「SEO(クローラへの新コンテンツ通知)」に修正する。
61-65行目「メモのフィード配信がなかった」セクション -- 「更新を追跡するには直接サイトを訪問するしかない状況でした」と「RSSリーダーで更新を追えるようにすることは、プロジェクトの透明性を高めるうえで大きな意味があります」を削除し、以下の要素で書き直す:
- メモはコンテンツの追加頻度が非常に高い
- Googleの公式ドキュメント(Best practices for XML sitemaps and RSS/Atom feeds、2014年)では、最適なクローリングのためにXMLサイトマップとRSS/Atomフィードの両方の使用を推奨している
- XMLサイトマップはサイト内の全ページの情報を提供し、RSS/Atomフィードは最近の変更を記述してGoogleがインデックスのコンテンツをより新鮮に保つのを助ける
- メモのように頻繁に追加されるコンテンツでは、RSSフィードによるクローラ通知が特に有効
- 出典としてGoogle公式ドキュメントへのリンクを記載する
35行目「メモRSSフィード」の説明文 -- 「メモの更新をフィードとして配信」を、SEO目的であることが分かる表現に修正する。例: 「検索エンジンのクローラに新しいメモをいち早く通知するためのフィード」
73-76行目のフィードエンドポイント用途列 -- 「フィードリーダー向け」「リーダー向け」をSEO・クローラ通知の観点に修正する。RSSリーダーによる購読も副次的な用途として触れて良いが、主目的はクローラ通知であることを明確にする。
80行目「日数制限と件数上限の二重フィルタ」セクション -- 「フィードリーダーの処理にも負荷がかかります」を削除し、Google公式ドキュメントの「RSS/Atom feeds are usually small」「describe recent changes」という推奨に基づいて、フィードを小さく保つ理由を説明する。
- sitemap.xmlが全ページ情報を持ち大きくなる一方、RSSフィードは最近の変更のみを含み小さく保つものだという役割分担を説明する
- 過去7日分+最大100件の二重フィルタは、この「フィードを小さく保つ」原則に従ったものであることを示す
92-100行目「タイトルに送受信者情報を含める」セクション -- 「RSSリーダー上でどのエージェント間のやりとりかが一目で分かるようにしました」「RSSリーダーのタイトル一覧を流し読みするだけで」をフィードリーダーに限定しない表現に修正する。フィードのタイトル情報はクローラにとっても有用であり、またフィードを直接閲覧する場合にもメモの流れが把握しやすいという説明にする。
240-246行目「まとめ」セクション -- 「AIエージェント間の意思決定プロセスをフィードとして配信する仕組みです」を、SEO目的を反映した表現に修正する。
注意事項
- Google公式ドキュメントを引用する場合は、出典URLを明記する。
- 「RSSリーダー」「フィードリーダー」への言及は、副次的な用途として1-2回触れる程度に留める。記事全体のフレーミングとしてはSEO(クローラ通知)が主目的であることを一貫させる。
- 「透明性」という表現はRSSの目的として使用しない。
問題C: canonicalURL設定時のフィード消失問題の説明改善(203-219行目)
現状の問題
Next.jsの内部知識(metadata、alternates、shallow merge)を前提とした記述になっており、外部の読者が理解できない。
修正方針
以下の4つの情報を、Webサイトの内部構造を知らない一般的なWeb開発者でも理解できるように記述する。
(1) 何をしたかったのか:
- ページングされた各ページ(/blog/page/2 など)に、そのページ固有のcanonical URL(検索エンジンに「このページの正式なURLはこれです」と伝えるためのタグ)を設定したかった。
(2) 元々どうしていたのか:
- サイト全体の共通レイアウト(ルートレイアウト)で、RSSフィードへのリンク(
<link rel="alternate" type="application/rss+xml">タグ)を設定していた。これにより、すべてのページのHTMLヘッダーにフィードへのリンクが自動的に含まれていた。
(3) どうなってしまったのか:
- ページ固有のcanonical URLを設定したところ、そのページのHTMLヘッダーからフィードへのリンクが消えてしまった。
- 原因: Next.jsのメタデータの仕組みでは、canonical URLとフィードリンクが同じグループ(alternates)に属している。ページレベルでcanonicalを設定すると、そのグループ全体が上書きされ、ルートレイアウトで設定していたフィードリンクが失われる(浅いマージと呼ばれる挙動)。
(4) どうやって対処したのか:
- canonical URLを設定するページでは、フィードリンクも一緒に明示的に再指定するようにした。つまり、ルートレイアウトの設定に頼らず、canonical URLとフィードリンクの両方をページ側で指定する。
注意事項
- 「alternates」「shallow merge」などのNext.js固有の用語は、初出時に平易な説明を添えるか、一般的なWeb開発用語で言い換える。
- コード例は現状のものを維持して良いが、その前後に上記(1)-(4)の文脈説明を加える。
- 結論として「フレームワーク固有のメタデータ結合挙動を理解しておくことが重要」のような一般的な教訓を添えると良い。
問題D: 採用しなかった選択肢の修正(221-227行目)
現状の問題
「無限スクロール」と「全メモをフィードに含める」はメモチェーンで検討されていない虚偽の選択肢。
修正方針
テーブル形式を維持し、以下の4つの実際に検討された選択肢のみを記載する。各選択肢にはメモチェーンの中でどのように検討されたかを正確に反映する。
| 選択肢 | 不採用の理由 | 根拠メモ |
|---|---|---|
| メモのSSGページング | フィルタリングUIとの整合性が悪い。フィルタ条件が変わるとページングの対象も変わるため、全組み合わせの事前生成が必要になる。クライアントサイドページングを採用した | B-108計画メモ 19c901a357a |
| フィードURL /feed/memos 形式 | /memos/feed 形式を採用。コンテンツのURLパス配下にフィードを配置する方が直感的と判断した | B-107調査メモ 19c90153344 |
| メモのページサイズ20件 | リスト形式のメモでは20件は少なすぎてページ送りが頻繁になるため、50件に変更した | B-108計画メモ 19c901a357a(調査段階20件→計画段階で50件に変更) |
| Paginationコンポーネントのスタイル重複方式 | MemoFilter.module.css内にPaginationと同じスタイルを記述する案があったが、共通PaginationコンポーネントにbuttonモードをGdiscriminated unionで追加する方式を採用した | 計画レビューメモ 19c901d11ad |
注意事項
- メモチェーンに検討の記録がない選択肢は絶対に記載しない。
- 各選択肢の不採用理由は、該当メモの記述に忠実に記載する。
- 「メモのSSGページング」は既存記事にも記載されている実際の選択肢なので残す。記述内容はほぼ現行のままで良い。
問題E: related_memo_idsの完全化(10行目)
修正方針
調査メモ(19c925e2011)で特定された37件の全メモIDを related_memo_ids に含める。
完全なリスト
related_memo_ids:
- "19c9001b54f"
- "19c9017370f"
- "19c9018ca7a"
- "19c901dde3c"
- "19c9028dcbb"
- "19c9051dfcc"
- "19c90572124"
- "19c90132e6e"
- "19c90153344"
- "19c9017615e"
- "19c9018acee"
- "19c901dfc49"
- "19c9027e44a"
- "19c90134764"
- "19c9016963a"
- "19c90178cc6"
- "19c901a357a"
- "19c901e3500"
- "19c902b2554"
- "19c902bab70"
- "19c903751d4"
- "19c902bc6f5"
- "19c90357557"
- "19c902beaa0"
- "19c903e532f"
- "19c901adf9f"
- "19c901d11ad"
- "19c90406b5d"
- "19c905154e8"
- "19c90520af6"
- "19c9055498f"
- "19c90578b0c"
- "19c905e4879"
- "19c906507fc"
- "19c9068f4f3"
- "19c9069603f"
- "19c906ec746"
注意事項
- 上記リストは調査メモ19c925e2011の「2-4. ブログ記事のrelated_memo_idsに含めるべきメモIDの完全なリスト」セクションに記載された37件と一致させること。
問題F: 今後の展望でのツール検索時期の修正(234行目)
現状
ツール数が100件を超える規模になった段階で、カテゴリ絞り込みやキーワード検索の追加を検討しています
修正方針
- 「ツール数が100件を超える規模になった段階で」を削除する。
- backlog.mdではB-112はP3 Queuedステータス(即時着手可能なキュー)であり、Deferred(条件付き延期)ではない。
- ownerの元メモ(19c9001b54f)でも「やる価値があるかを調査・判断する」という形で、件数条件なしに検討を依頼している。
- 修正例: 「対象ユーザーや機能ジャンルによるタグ付けとフリーワード検索で、ツールを絞り込める機能の追加を検討しています」のように、実施条件を付けず、検討中であることを示す表現にする。
- ownerの元メモにある「ツール数が100や200になったとしても欲しいツールに辿り着きやすくなる」という将来のスケーラビリティへの言及は、「将来的なツール数の増加を見据えた設計」として記載して良い(ただし「100件を超えたら着手」という条件としてではなく、設計目標として記述する)。
修正時の全体的な注意事項
事実に基づく記述の徹底: 修正後の記述はすべて、メモチェーン(19c9001b54f を起点とするサイクル31のメモ)、Google公式ドキュメント、またはコードベースで確認できる事実のみに基づくこと。確認できない推測は「推測」と明記するか、記載しない。
blog-writing.md の遵守:
.claude/rules/blog-writing.mdの全ルールに従うこと。特に以下:- 「実際のメモやコード例、外部サイトなどで確認した事実に基づいて記述してください」
- 「related_memo_ids は、関連するすべてのメモを確実に含めてください。1つも漏らさずにすべてのメモを関連付けてください」
- 「本リポジトリの内部で使われている固有のアーキテクチャやコンポーネントの知識が無いと理解できない記述は一切避けてください」
外部読者の視点での確認: 修正完了後、yolos.netの内部構造を一切知らない読者になりきって記事全体を通読し、理解できない箇所がないか確認すること。
Google公式ドキュメントの引用: RSSフィードに関する記述では、Google公式ドキュメント(https://developers.google.com/search/blog/2014/10/best-practices-for-xml-sitemaps-rssatom)を出典として明記すること。
記事全体の一貫性: 問題Bの修正はセクション「メモのフィード配信がなかった」だけでなく、記事全体に波及する。はじめに、メモRSSフィード、二重フィルタ、まとめなど、RSSフィードに言及するすべての箇所で目的がSEO(クローラ通知)として一貫していることを確認すること。
description(frontmatter)の確認: 記事冒頭のdescriptionにもRSSフィードの目的に関する記述がある場合は修正すること。現状の description には「メモRSSフィード(RSS 2.0 / Atom 1.0)」とあるが、目的の記述はないためそのままで良い。
作業手順
- builderが記事ファイルを開き、問題E(related_memo_ids)を最初に修正する(frontmatter部分の修正なので、他の修正に影響しない)
- 問題A(59行目)を修正する
- 問題B(複数箇所)を修正する -- 記事全体を上から順にRSSフィードの目的に関する記述をすべて確認・修正する
- 問題C(203-219行目付近)を修正する
- 問題D(221-227行目付近)を修正する
- 問題F(234行目付近)を修正する
- 記事全体を通読し、一貫性と事実の正確性を最終確認する
npm run buildでビルドが通ることを確認する
完了条件
- 問題A: 表示速度に関する未確認の記述が削除され、読みやすさ向上という正しい動機に基づく記述に置き換えられていること
- 問題B: RSSフィードの目的がすべての箇所でSEO(クローラへの新コンテンツ通知)として記述されていること。Google公式ドキュメントの出典リンクが含まれていること。RSSリーダーを主目的とする記述や「透明性」に関する記述が削除されていること
- 問題C: canonicalURL設定時のフィード消失問題について、(1)何をしたかったのか、(2)元々どうしていたのか、(3)どうなってしまったのか、(4)どう対処したのか、の4つの情報が明確に含まれ、Next.jsの内部知識がなくても理解できること
- 問題D: 「無限スクロール」「全メモをフィードに含める」が削除され、実際にメモチェーンで検討された選択肢のみが記載されていること
- 問題E: related_memo_idsに37件すべてのメモIDが含まれていること
- 問題F: ツール検索・絞り込み機能について、件数条件なしの記述になっており、backlog.mdのQueuedステータスと整合していること
- 記事全体を通して、事実に基づかない推測が確定的事実として書かれている箇所がないこと
npm run buildが成功すること