ラクス Advent Calendar, 7 日目の記事です。
何のためかは別記事に譲りますが、Qiita Advent Calendar の RSS を取得して処理したくなりました。なので中に何が書かれているのかを読んでまとめてみました。
RSS とは
RSS(バージョンによってRich Site Summary, RDF Site Summary, Really Simple Syndicatio)は、ニュースやブログなど各種のウェブサイトの更新情報を配信するための文書フォーマットの総称である。
(Wikipedia RSSより引用)
RSS は要するに XML 文書です。いくつかの異なるバージョンがあり、それぞれ使われている要素に違いがあります。
Qiia Advent Calendar ではカレンダーのトップページ URL の末尾に /feed を付けた URL で RSS が配信されています。画面では下の画像のアイコンがリンクになっています。
Qiita Advent Calendar の RSS 仕様(推測)
Qiita Advent Calendar の RSS を実際見てみたところ、どうやら Atom フォーマットで作成されているようでした。
Atom フォーマットは feed 要素をトップレベルとして、その内部にいくつかの子要素を含むことが出来ますが、Qiita の場合含まれる可能性があるのは以下の 5 種類のようです。
-
id: そのフィードの URL を含む識別子文字列が設定されています。 -
link: 必ず以下の二つが設定されるようです。-
rel="alternate"で Qiita トップページの URL -
rel="self"でそのフィードの URL
-
-
title: カレンダーのタイトルです。 -
updated: 最終更新日時。最後にカレンダーに記事が登録された時刻が入っているかと思いきやそうでもないっぽいです。よくわかりません。また 11 月に見たときはタイムゾーン指定子がZだったのですが、今見ると+09:00になっています。なぜ。 -
entry: カレンダーに紐づけられた各記事の情報です。登録された記事数分含まれており、それらは紐づいた投稿枠の日付の降順で並んでいるようです。
entry 要素
entry 要素には記事の情報が入っています。フィードのメインコンテンツと言っていいでしょう。Atom フォーマットの定義では entry 要素も内部に色々な子要素を含むことが出来ますが、Qiita では含まれる要素とその内容は以下のように限定されるようです。
-
id: 記事の一意な識別子っぽいですが生成規則はよくわかりませんでした。 -
published: 紐づいた投稿枠の日の 0 時が必ず設定されるようです。 -
updated: 記事が実際に投稿されたか、公開された日時のようです。外部の記事の場合、カレンダーに紐づけられた日時かもしれません。 -
link:rel="alternate"で記事の URL をhref属性に持つものが一つだけが設定されるようです。 -
title: 記事のタイトルです。 -
content: 記事の内容です。Atom の定義上type属性の値はtext,html,xhtmlのいずれかとなっていますが、Qiita では以下二つのうちのいずれかが使われるようです。-
type="html": Qiita に投稿された記事の場合。記事全文がcontent要素の値として設定されます。typeはhtmlですが、HTML のタグは取り除かれています。 -
type="text": 外部の URL が紐づけられた場合。content要素の値は固定で「外部記事です」となるようです。
-
-
author: 記事の著者情報です。内部に複数の種類の子要素を取りえますが、Qiita では以下の一つしか設定されないようです。-
name: 著者の名前。Qiita ユーザー名が設定されるようです。公開用プロフィールで名前を設定したらそちらが使われるのでしょうか。
-
まとめ
ちょっと Advent Calendar の更新状況を機械的に確認したくなったので配信されている RSS フィードの中身を確認し、まとめました。RSS フォーマットはバージョンのこともあって結構複雑ですが、Qiita のものは Atom フォーマットで統一されており、さらに使われている要素も限定的なようです。
そしてよく見ると Qiita のマイページにも RSS のリンクがあるので、こっちも同様の仕様かもしれません。
