普通のWebサイトでもRSSを実装してみようということでインターフェースを中心にまとめています。

トップblog普通のWebサイトにRSSフィードを実装してみる

普通のWebサイトにRSSフィードを実装してみる

普通のWebサイトでもRSSを実装してみようということでインターフェースを中心にまとめています。



(目次)
  1.RSSとは?
  2.なにをどうするのか?その流れ
  3.メリットは?
  4.RSS1.0のテンプレートと実例
  5.RSSフィードが更新されたことをRSSフィード収集サーバへ通知する


1.RSSとは?
  RSSは、参考サイトにあるようにいろいろな規格が乱立しているようです。
  今回は、その中でも一般的だと思われるRSS1.0を実装します。
  最近では、ATOM0.3も併せて実装しているところもあります。

  また、RSSの詳細な情報については、以下の参考サイトを参照してください。

  (参考サイト)
   ウィキペディア
     歴史的な経緯、変遷やバージョンの説明等があります。
       http://ja.wikipedia.org/wiki/RSS

   神崎正英さんのページ
     RSS/RDFの詳細な説明があります。
     TOP
       http://www.kanzaki.com/
     RSS -- サイト情報の要約と公開
       http://www.kanzaki.com/docs/sw/rss.html

    宮川さんのぺ−ジ
        http://blog.bulknews.net/cookbook/blosxom
      webUpdates.ping
        http://blog.bulknews.net/cookbook/blosxom/pings/ping_to_hatena.html
      BLOG HACKの作者さんです。私もお世話になりました。
        http://hacks.bloghackers.net/

    nagashimaさんのページ
        http://hail2u.net/

    Userland
      Weblogs.Comを運営し、Blog等の更新通知を受け付けます。
      そのI/Fが公開されており、他のPing受付サーバでも
      利用されています。
        http://www.xmlrpc.com/weblogsCom

2.なにをどうするのか?その流れ
  (1)サイト情報やRSSに掲載する記事のタイトルと概要を決める
     項番4を参照。

  (2)拡張子 .rdfが表示されるように.htaccessを作成する
     .htaccessファイルの中身は、以下のような感じです。
     SSIを動作させたくなければ、最後の行は不要です。
     最低限、 AddType text/xml .rdfは必要です。
         DirectoryIndex index.rdf
         AddType text/xml .rdf
         AddHandler server-parsed .rdf


  (3)RSSフィードのファイル:index.rdfの置き場所を決める
     他のサイトを見る限り
       /rss/index.rdf
     とか
       /index.rdf
     が多いようです。

  (4)RSSフィードを作成する
     項番4を参照。

  (5)TOPページまたは各ページにRSSフィードの置き場所を記述する
     <head>〜</head>の中に
       <link rel="alternate"  href="/rss/index.rdf" 
                  type="application/rss+xml" title="RSS" />
     を追加します。
     例では、RSSの場所は /rss/index.rdfとしています。

     これは、RSS-FEEDリーダがRSSの場所を見つけさせるため、
     または、項番5のweblogUpdates.pingをサーバへ投げたときに
     RSSの場所が分かるようにするため。
       (だと思います。)
     例えば、最近、公開されたブラウザのFirefoxやsafariは
     htmlにこの記述があると、RSSのマークを表示するようになっています。

  (6)pingサーバへ通知する
    項番5を参照。

3.メリットは?
  (1)RSSフィード
   a.自サイトの更新情報が分かります。
   b.RSSフィードリーダーで更新情報が読めるようになります。
   c.RSSフィードを収集しているサーバに更新通知(uweblogUpdates.ping)を
     送れば、更新情報の露出がおおいに増えます。
   d.更新する意欲が多分、湧いてくるでしょう。


4.RSS1.0のテンプレートと実例
  今回は、仮に以下のようなサイト情報、及び記事があるとします。
  この例が、実際にどのようにRSSファイルに反映されるかを
  対比出来るようようにします。

  (1)サイト情報
   a.サイトURL
     http://www.hoge.abcd/
   b.サイト名
     RSSを研究するサイト

  (2)記事
     以下のように更新された記事が2ページあるとします。
   a.記事1
     i.記事名
       RSSの形式
     ii.記事の概要
       RSSの形式を実例入りで説明します。
     iii.記事のURL
       http://www.hoge.abcd/1.html
   b.記事2
     i.記事名
       RSS更新通知
     ii.記事の概要
       RSSが更新されたことを収集サーバへ通知します。
     iii.記事のURL
       http://www.hoge.abcd/2.html

  (3)実例
     <?xml version="1.0" encoding="utf-8" ?>
     <rdf:RDF
       xmlns="http://purl.org/rss/1.0/"
       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns:dc="http://purl.org/dc/elements/1.1/"
       xml:lang="ja">
      <channel rdf:about="http://www.hoge.abcd/">
       <title>RSSを研究するサイト</title>
       <link>http://www.hoge.abcd/</link>
       <description>サイト概要説明です</description>
       <dc:date>2005-09-29T15:33:45+0900</dc:date>
       <dc:publisher>ほげほげです</dc:publisher>
       <dc:language>ja-jp</dc:language>
       <items>
        <rdf:Seq>

          <rdf:li rdf:resource="http://www.hoge.abcd/1.html" />
          <rdf:li rdf:resource="http://www.hoge.abcd/2.html" />

        </rdf:Seq>
       </items>
      </channel>

        <item rdf:about="http://www.hoge.abcd/1.html">
         <title>RSSの形式</title>
         <link>http://www.hoge.abcd/1.html</link>
         <description>RSSの形式を実例入りで説明します。</description>
         <dc:date>2005-08-17T11:54:45+0900</dc:date>
         <dc:creator>ほげほげの部下</dc:creator>
        </item>

        <item rdf:about="http://www.hoge.abcd/2.html">
         <title>RSS更新通知</title>
         <link>http://www.hoge.abcd/2.html</link>
         <description>RSSが更新されたことを収集サーバへ通知します。
                 </description>
         <dc:date>2005-08-27T04:04:25+0900</dc:date>
         <dc:creator>ほげほげの部下</dc:creator>
        </item>

     </rdf:RDF>


5.RSSフィードが更新されたことをRSSフィード収集サーバへ通知する
  HTTPヘッダーも加えて表記しています。
  結局、XML-RPCを利用していようとも、HTTPプロトコル上で動作するので
  XML-RPCモジュールを組み込むよりも、SOCKET通信したほうが早いでしょう。
  別に、perlプログラムを公開します。

  ※レギュレーションは、上記のWeblogs.Comのページを参照ください。

  (1)送信

     POST /RPC2 HTTP/1.0
     User-Agent: Radio UserLand/7.1b7 (WinNT)
     Host: rpc.weblogs.com
     Content-Type: text/xml
     Content-length: 250

     <?xml version="1.0"?>
     <methodCall>
       <methodName>weblogUpdates.ping</methodName>
       <params>
         <param>
           <value>サイト名など</value>
         </param>
         <param>
           <value>サイトのURL</value>
         </param>
       </params>
     </methodCall>

  (2)受信
     受信は、flerrorの値がなにかで正常終了なのか?異常終了なのか判断します。
     異常終了の場合は、messageの内容を参照すれば分かります。

     HTTP/1.1 200 OK
     Connection: close
     Content-Length: 333
     Content-Type: text/xml
     Date: Sun, 30 Sep 2001 20:02:30 GMT
     Server: UserLand Frontier/7.0.1-WinNT

     <?xml version="1.0"?>
     <methodResponse>
       <params>
         <param>
           <value>
             <struct>
               <member>
                 <name>flerror</name>
                 <value>
                   <boolean>0</boolean>
                 </value>
               </member>
               <member>
                 <name>message</name>
                   <value>Thanks for the ping.</value>
               </member>
             </struct>
           </value>
         </param>
       </params>
     </methodResponse>

カテゴリ内の記事