フィード、PINGとPubHubSubbub

何気なく使っているWordPressには、RSSフィード作成機能とPING送信機能がついています。また、PubHubSubbubという機能をプラグインで追加すれば、リアルタイム更新とGoogleへ素早くインデックスしてもらえるというメリットがあります。

Sponsored link

PINGとPubHubSubbub

PINGもPubHubSubbubもサイトに更新があったことを知らせる機能です。

どちらも、更新情報を格納したフィードといわれる情報を使って更新をフィード購読者(フィードにアクセスする人・サービス)に伝えます。

フィードは、RSS、ATOMなどの書式に従って書かれたXML文書です。

PING

PING(ピング、ピン)と呼ばれている更新通知システムは、フィード、更新情報を受け取るPINGサーバー、更新されたサイト上にあるフィード情報からできています。

詳しく解説されたページはたくさんありますが、参考にさせて頂いたのは、下記記事です。

フィード

このサイトのフィード情報は、内容を省略するとこんな感じです。

<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">
<script/>
<channel>
<title>てく2テック</title>
<atom:link href="https://tek2tech.com/feed/" rel="self" type="application/rss+xml"/>
<link>https://tek2tech.com</link>
<description>アナログは好きです。ITはもっと好きです。</description>
<lastBuildDate>Thu, 13 Aug 2015 23:35:55 +0000</lastBuildDate>
<language>ja</language>
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<generator>http://wordpress.org/?v=4.2.4</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="http://push.superfeedr.com"/>
<item>...</item>
<item>...</item>
<item>...</item>
<item>...</item>
<item>...</item>
<item>...</item>
<item>...</item>
<item>...</item>
<item>...</item>
<item>...</item>
</channel>
</rss>

ATOMフィードの場合は、

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">...</feed>

で、中身も大体似ています。

この情報で、このフィードがいつ最後に作られたのか、内容の新しい部分はどこか、などの情報を伝えることができます。

RSSフィードとATOMフィードの主な違いは、ATOMでは「作成日時」「更新日時」を分けたり内容に重複が起こらないように一意にする必要がある点だと(私は勝手に)思います。

フィードを読む側(購読者)にとっても少し違いがあって、RSSフィードの場合はフィード内に更新日しかないので、フィードを「最近更新したページ」を配信するように設定を変えると、ブログランキングやアンテナサイトなどの更新表示ページに古いけれど新しく更新されたページが「新着情報」として載ってしまいます。

それで良いサイトもあるかもしれませんが、そうではないこともあるでしょう。

サイト上の設定

PING更新通知を行うには、サイトURLとサイト名をPINGサーバーに送るだけです。これを送るだけでサイトの更新情報が分かるのは、サイト上にフィードがどこに置いてあるかを知らせる情報を載せているからです。ヘッダセクション内に、

<link rel=alternate type=application/rss+xml title="てく2テック RSS Feed" href=https://tek2tech.com/feed/ />

というようなエントリーがあるはずです。

PINGサーバー

更新通知を受けたサーバー側が何をするのかというと、

  1. 通知にあったURLへアクセス
  2. フィード情報を探す
  3. フィードを読む

の3ステップです。そのため、フィードから漏れた更新情報は伝わりません。

PubSubHububub

もう一つの更新通知プロトコールのPubSubHubbubは、いくつかの点でPING送信よりも優れています。

  1. Googleがインデックスに使っている
  2. リアルタイムに近い更新通知
  3. サイトトラフィックの軽減

Googleインデックス

一番大きいのは、Googleがインデックスに使っていることでしょう。

Googleが運営するサーバーpubsubhubbub.appspot.comを使わなくてもインデックスしてくれるのかどうかは不明です。

別のサイトでサイト上のトラブルでGoogleサーバーに通知ができなくなっていた時期があったのですが、そのときはインデックスが遅くなっていたので、使ったほうが良さそうな気はします。

リアルタイム性

サイトの更新情報を読むフィード購読者に対して、PubHubSubbub中継サーバーが更新通知を代行してくれるためにリアルタイムな更新通知が可能になります。

PINGでもPubHubSubbubでも、サイトへサーバーがアクセスする点は同じですが、PING送信先は限られていて、送信先として設定されていない購読者にはサイトの更新が伝わりませんでした。

サイトトラフィック軽減

フィード購読者は一定時間ごとにサイト更新があるかどうかを見るためにフィードにアクセスする必要がありました。

更新確認を中継サーバーがやってくれるので、通信量の軽減が見込めるはずです。(実際は知りません)これを実現するために、サイト上に新しい情報を載せる必要があります。

PubHubSubbubでは、PING更新通知と違ってサイトURLではなくフィードURLを送信します。そのため、フィード内に

<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="http://push.superfeedr.com"/>

というように中継サーバーを指定しています。

フィードリーダー

PubHubSubbub対応のフィードリーダーを使うと、フィードを登録したときに中継サーバーに購読登録を行ってくれます。

フィードリーダーのリストは、

私が使っているフィードリーダーはFeedlyなのでウェブベースです。また、Feedlyでは私が購読を始める前のフィードも保存されているようなので、Feedlyで「更新」ボタンを押しても過度なトラフィックはもともと生じにくいと思います。

Feedlyでも、リアルタイムに近い更新確認はPubHubSubbub(もしくは有料ユーザー)しかできませんので大きいです。running-fast

Sponsored link
Spinsored link

シェアする

  • このエントリーをはてなブックマークに追加

フォローする