RSSは今でも必要か―ブログに残す意味とAstroでの使いどころを確認する

SNSやメール通知がある現在でもRSSを残す意味はあるのか。RSS 2.0の現状、Astroでの生成方法、Googleのサイトマップ利用、ゆまラボで残している理由を確認します。

執筆:ゆまラボ運営者

公開:
RSSは今でも必要か―ブログに残す意味とAstroでの使いどころを確認する

ゆまラボにはrss.xmlがある。

第11回のUI修正でフッターにもRSSへのリンクを追加した。作ったときは「ブログならあった方がいい」という感覚で残していたが、今のWebでどれくらい意味があるのかは少し気になっていた。

更新通知ならSNSもある。メール配信もできる。ブラウザでRSSアイコンを見る機会も昔ほど多くない。

それでもAstroの公式ドキュメントには現在もRSS生成の手順があり、Google自身もSearch Centralの更新情報をRSSで配信している。RSSは消えた技術というより、表に出る機会が減ったまま裏側では普通に使われている仕組みに近い。

RSS 2.0は古いが、仕様としては今も現役#

RSSはXMLでサイトの更新情報を配信する仕組み。

RSS Advisory Boardが公開している現行のRSS 2.0仕様は2.0.11で、2009年に公開されている。かなり古い。ただし仕様書には、RSS 2.0を安定したものとして維持し、大きな機能追加を続ける方向ではないことも書かれている。

更新が止まっているから使えない、という種類の古さではない。

HTMLのようにWebページを描画する規格ではなく、記事タイトル、URL、公開日、descriptionなどを一定の形で渡せれば目的を果たせる。RSSはこの範囲がかなり小さい。

現在もAstroは公式パッケージ@astrojs/rssを提供している。Google Search Centralのドキュメント更新ページにもRSSフィードへの案内があり、Apple PodcastsもRSS 2.0準拠のフィードを配信経路として扱っている。

ブログ購読だけを見ると利用者は限られるが、RSSという形式そのものはまだ使われている。

Astroの記事からrss.xmlを生成し、読者や外部ツールが取得する流れ

RSSで残るのは「サイト側が用意する更新情報」#

RSSの動きはかなり単純。

サイト側に、

https://example.com/rss.xml

のようなURLを置く。

RSSリーダーはそのURLを定期的に取得し、新しいitemがあれば新着として表示する。SNSのタイムラインのように、プラットフォーム側のおすすめ順に並べ替える必要はない。

配信側にも購読者のアカウント情報は不要。

ブログが公開しているフィードを、使いたい人が自分のRSSリーダーへ登録するだけで成立する。

この構造は今でも使いやすい。

特に複数の技術ブログや公式ドキュメントを追う場合、各サイトを巡回するより、フィードリーダーに集めた方が更新の有無を確認しやすい。Google Search Central自身がドキュメント更新をRSSで提供しているのも、この用途に合っている。

RSSは「大量の読者を連れてくる集客機能」というより、更新を継続して追いたい人やツール向けの入口として見る方が分かりやすい。

Astroならrss.xmlの維持コストは小さい#

Astroでは@astrojs/rssを使ってフィードを生成できる。

公式ドキュメントのContent Collectionsを使う例は、概ね次の形。

import rss from '@astrojs/rss';
import { getCollection } from 'astro:content';

export async function GET(context) {
  const blog = await getCollection('blog');

  return rss({
    title: 'ゆまラボ',
    description: 'Web制作とAI活用の実践記録',
    site: context.site,
    items: blog.map((post) => ({
      title: post.data.title,
      pubDate: post.data.pubDate,
      description: post.data.description,
      link: `/blog/${post.data.slug}/`,
    })),
  });
}

src/pages/rss.xml.jsとして用意すれば、/rss.xmlで配信できる。

ここで必要なのは、記事を書くたびにRSS用のXMLを手作業で修正することではない。Content Collectionから記事情報を取得しているなら、ビルド時に新しい記事を自動で含められる。

ゆまラボのような静的ブログでは、この差が大きい。

RSSを使う読者が多いか少ないかに関係なく、一度生成処理を作れば記事追加時の運用作業はほとんど増えない。

フィードの存在をRSSリーダーへ見つけてもらうには、headへautodiscovery用のlinkを入れる方法もある。

<link
  rel="alternate"
  type="application/rss+xml"
  title="ゆまラボ RSS"
  href={new URL("rss.xml", Astro.site)}
/>

Astro公式ドキュメントでもこの方法が案内されている。

フッターのRSSリンクは人が見つけるための入口。rel="alternate"は対応ソフトウェアがサイトURLからフィードを検出するための入口になる。

両方あっても問題はない。

RSSとsitemap.xmlは置き換えなくていい#

RSSを調べていて少し面白かったのが、GoogleはRSS 2.0とAtom 1.0をサイトマップとして受け付けていること。

つまりRSSは読者向けの購読だけでなく、Googleへ最近のURLを伝える用途にも使える。

ただしGoogleの説明では、RSSやAtomフィードで提供されるのは最近のURLが中心になる。

サイト全体のURLを検索エンジンへ知らせる用途なら、通常のsitemap.xmlを残す方が扱いやすい。

RSSとsitemap.xmlの用途を分けた図

ゆまラボでは、Google Search Consoleへsitemap.xmlを送信した記事のとおり、すでに通常のサイトマップを使っている。

この状態ならRSSをサイトマップの代わりにする必要はない。

sitemap.xml
→ サイト全体のURLを検索エンジンへ知らせる

rss.xml
→ 新着記事を購読者や外部ツールへ渡す

役割を分けて両方残せばよい。

RSSをSearch Consoleへ追加で送ることもできるが、ゆまラボ程度の規模で通常のsitemap.xmlが正常に処理されているなら、RSSをSEO対策として無理に使う理由は薄い。

全文をRSSへ入れるかは別に考える#

@astrojs/rssは、タイトルやdescriptionだけでなくcontentへ記事本文のHTMLを入れることもできる。

RSSリーダーの中だけで全文を読める形にしたいなら使える。

ただし、ここから少し面倒になる。

Astro公式ドキュメントでも、全文をフィードへ入れる場合は相対URLの画像や内部リンク、HTMLのサニタイズを考える必要があるとしている。

例えばMarkdown本文に、

![画像](/images/blog/example/image.png)

があっても、RSSリーダーが別ドメインの画面で表示する場合は絶対URLへ変換した方が安全。

MDXやサイト専用コンポーネントを使っている記事では、そのままRSSへ流せない要素も出てくる。

ゆまラボの目的なら、まずはタイトル、description、公開日、記事URLを出す形で十分。

全文配信が必要になった段階でcontentを追加する方が修正範囲を小さくできる。

ゆまラボではRSSを残す#

RSSがないとブログとして成立しない、という状態ではない。

RSSリンクを一度も使わない読者も多いはず。

それでも、Astroでは生成処理を自動化でき、公開後の維持コストも小さい。SNSや特定のサービスへ依存せず、サイト自身が更新情報を配信できるURLを一つ持てる。

この条件なら削除する理由もあまりない。

ゆまラボでは、フッターのRSSリンクはそのまま残す。画面の中心へ大きく出す必要はないが、使いたい人が見つけられる位置には置いておく。

追加するなら、次に確認したいのはautodiscoveryのlink

フッターの導線だけでなく、RSSリーダーへサイトのトップURLを入力したときにrss.xmlを検出できる状態まで入れておけば、RSS用のURLを利用者が覚える必要もなくなる。

RSSは新しい機能ではない。

ブログの更新情報を外へ渡すための、小さくて安定したインターフェースとして残しておく。その使い方なら、今のゆまラボにもまだ合っている。

参考#