iOSアプリで自分好みのRSSリーダーが欲しくなり、作ろうと思ったのですがそもそもRSSとは何だっけ?ということになり1から調べ直しました。
RSSとは
ニュースやブログなど各種のウェブサイトの更新情報を配信するための文書フォーマットの総称である。
※Wikipediaより抜粋
また、RSSという名前自体にも複数の意味解釈がありました。
RDF Site Summary
ファイル拡張子が.rdfとなっているもの。全体がrdf要素(<rdf>~</rdf>)で囲まれていることからも分かります。系統としてはRSS0.9→1.0系に分類されます。
Really Simple Syndication
ファイル拡張子が.rssまたは.xmlとなっているもの。RDFとは異なる体型で発展していったものです。系統としてはRSS2.0系に分類されます。
ATOM
ファイル拡張子が.xmlとなっているもの。RSSと同じ目的で異なるデータ形式で記述されたものという解釈でいいと思います。ATOMもRSSとして総称されることが多いようです。
フィードリーダー
フィードリーダー(feed reader)、またはフィード・アグリゲーター(feed aggregator)は、
ブログやポッドキャスト、ニュースサイトなどが配信するフィードを取得・購読するための
アプリケーションソフトウェアの総称。フィードのファイルフォーマットとしてRSSが先行していたことから、
現在でも「RSSリーダー」と呼ばれることが多い。
※Wikipediaより抜粋
以上のことからRSSには様々なフォーマットがあるので、リーダーを作るためには様々なフォーマットに対応したParserを実装する必要がありそうでした。
iOSでのRSSリーダー
今まで調べたことから、これからiOSアプリにおいてRSSリーダーを作る場合にはRSS1.0, RSS2.0, ATOMそれぞれのデータフォーマットに対応したParserを作ってあげる必要がありそうです。
自分で一から作るのもいいですが、車輪の再発明をしてもしょうがないなと思い、ライブラリがないか探してみました。するとやはりすでによさげなものがありました。
FeedKit
https://github.com/nmdias/FeedKit
RSS, ATOM, JSONに対応したFeed Parserです。
このライブラリの中身を読んでいて驚いたのが、データ取得をするのにURL Sessionなどの一般的なデータ転送処理が一切書かれていませんでした。
データの取得には
data = try Data(contentsOf: sanitizedSchemeUrl)
これだけです!賢い!
参考
https://ja.wikipedia.org/wiki/RSS
https://oshiete.goo.ne.jp/qa/3951173.html
https://www.nishishi.com/blog/2006/02/rss_rdf_xml.html
http://e-words.jp/w/RSS.html
http://e-words.jp/w/RSS%E3%83%95%E3%82%A3%E3%83%BC%E3%83%89.html