Feed43でRSSフィードが提供されていないwebページをRSS購読する話
RSSとは
RSSとはwebサイトやブログなどのサマリ(見出し,要約)を購読することができる仕組みで,当該サイトの更新情報をwatchする際などに利用されている. RSSという名前はRDF Site Summary(0.9), Rich Site Summary(0.91-), Really Simple Syndication(2.0-)の略語であるようで,面白いことにRSSという同じ略称であるにもかかわらず,バージョンによってこの正式名称が異なるそうである.現在多く利用されているRSS2.0では,Really Simple Syndicationが正式名称とされている*1. RSSはxmlを用いて記述されている.RSSのxmlを見るとどのversionのRSSフォーマットが利用されているかを確認することができる.
<rss version="2.0">
slackのRSS購読機能
ビジネスチャットツールとして知られているslackにはRSSフィードの購読機能が存在する*2. これを用いて自分のwatchしておきたいページのRSSフィードを登録し,更新があったときにはslackのpostで更新を受け取ることができる.
RSS配信がされていないwebページを購読する - Feed43
こういった便利なしくみであるRSSだが,一般にはこのRSSフィードはコンテンツの提供元にて用意され,用意されたRSSを任意の購読希望者が購読する形となっている.つまり,コンテンツの提供元がRSSフィードを配信しなければ購読できないことを意味する.今回私はこの状況に陥り,購読したかったコンテンツにRSSフィードが存在しないという状況であった.これのよい解決策がないかと探ってみると,Feed43 というRSS購読に必要な情報をパースし,RSS配信を構成してくれるサービスを見つけた.これを利用してRSSフィードを構成し,slackでRSS購読を行うことができたので紹介する.
今回題材としてネットワンシステムズ株式会社様の匠コラムを利用させていただく*3.このミニブログ的コンテンツの更新情報をslackで受け取ることを目的とする.
まずFeed43にアクセスし,[Create your first RSS feed] ボタンからRSSフィード作成画面に遷移する.
すると下記のような画面に遷移し,購読したいRSSフィードを作るためのconfigurationを行っていくことになる.
Step 1. Specify source page address (URL)
ここではRSSフィードに必要な情報が含まれるページのURLを記述する.
今回題材としている匠コラムでは以下のURLでjson形式でコンテンツの情報を得ることができる(ありがたい).これを利用させてもらうことにする.
URLを記述したら右下の[Reload] をクリックしてコンテンツを取得して次のstepへ.
Step 2. Define extraction rules
ここでは取得したコンテンツから正規表現に似たようなものを使って,必要な情報を切り出していく.このsearch patternの書き方は Understanding Search Patterns and Output Templates - Feed43が参考になる. ここではエントリの日付,タイトル,ページのpathを切り出している.正規表現を書いてみたら右下の[Extract]ボタンを押して,自分の思い通りに切り出されいるかを確認しながら勧めていくとよい.うまく切り出せていたら次のステップへ.
Step 3. Define output format
ここでは,切り出した要素を使って実際のRSSフィードの中身を定義していく.書かれているとおりfeedのタイトル,リンク,説明や,RSSアイテムのタイトル,リンク,コンテンツを記述することができる.Step2で切り出した要素を自分の好きなように組み合わせてRSSフィードを構成しよう.
構成できたら[Preview[を押して実際のRSSフィードを見てみよう.うまくpreviewできると Your feed is ready!
という要素が現れる.RSSフィードの作成はこれだけで完成だ.表示されている購読用のリンクを用いて購読することができる.
SlackでのRSS購読
slackのRSSフィード購読機能はとてもかんたんに利用することができる.購読をポストしたいチャンネルで
/feed subscribe <rss-feed-url>
と投稿するだけである.これだけで購読は完了だ.先程作成したFeed43のRSSフィードURLを使って購読しよう.
うまく購読できていると,更新があった場合に下記のような形で更新がポストされる.非常に便利だ.
まとめ
References
*1:RSS 2.0 specification - W3C
*2:Slack に RSS フィードを追加する | Slack
*3:この方式のRSSフィード作成ではどうしても定期的にwebコンテンツにアクセスする必要性があることから,多少なりともwebサーバ側に負荷をかけることになることに十分注意をする必要があります.もしもネットワンシステムズ株式会社様がこの行為の停止を求める場合には速やかに従うことを約束します