この記事は、ラクス Advent Calendar 2022 シリーズ2の5日目の記事です。
昨日は、シリーズ2には記事の投稿はありませんでした。完走は目指さないのかって? 別に無理して全部埋めようとしなくてもいいと思います。シリーズ2ですし。
楽しみながら続けるほうが大事です。隙間が気になって、かつ余力のある人に埋めてもらえばよいと思います。
Qiita Advent Calendar の RSS を読む
この記事は、ラクス Advent Calendar 2021 の7日目に投稿した記事「Qiita Advent Calendar の RSS を読む」の続編です。
昨年から自作のアドベントカレンダー新着お知らせボットである「アドベントカレンダーくろーるくん」を社内で運用しており、これの作成のためにアドベントカレンダーのRSSの仕様を調べていました。今年になってまた動かそうとしたとき「シリーズ」について調査をし忘れていることに気づき、追加調査をしました。
シリーズの概念自体は昨年から存在していましたが、昨年のラクス Advent Calendarはシリーズ1で収まっていました。しかし今年はラクス Advent Calendarでも「シリーズ2」が作成され、そこでようやく調査の見落としに気づいた次第です。
調査の目的は、くろーるくんで新着記事の通知をするとき、どのシリーズの新着記事なのかわかるようにしたい、というものです。目標として以下を明らかにすることとしました。
- 投稿先シリーズの情報はRSSに含まれるのか、含まれるとしたらどのように含まれるのか
- その他昨年との違いはあるか、あればどのような違いがあるか
なお調査方法は実際のRSSを見ることによって行いました。対象としたのは主に「ラクス Advent Calendar 2022」自体のRSSですが、比較のために他にも2, 3のカレンダーのRSSを確認しました。
調査結果
シリーズ情報の有無
RSSにシリーズの情報は含まれないようだと分かりました。ただ記事のentry自体はすべてのシリーズのものが含まれるようです。つまり、
- publishedの日時が同一のentryが複数あるという状態になる
- どのシリーズかはわからないが、publishが同一であれば異なるシリーズであることは分かる
- これはQiitaのカレンダーフィード画面でも同じ
考えてみれば、新着通知の用途であれば別にシリーズの区別は不要かもしれません。
その他仕様が変わったっぽいところ
シリーズの仕様の他に、どうも今年から仕様が変わったっぽいところがありました。
昨年以前のRSSにはアクセスできなくなった
いつごろからかわかりませんが、昨年以前のRSSにはアクセスできなくなっていました。
カレンダーのアーカイブから以前のカレンダーを見てみると、RSSのボタンも削除されていました。またRSSのURLに直接アクセスすると404 Not Found
が返って来るようになってました。
これによってシリーズについての追加調査が12月に入るまで出来なかったのですが、それはまあ、仕方のないことです。
Qiita記事の場合、entry要素のcontentに記事全文が含まれなくなった
Qiitaに直接投稿された記事の場合、entry要素のcontent要素には記事本文が入ります。
以前はHtmlタグなどは取り除かれたテキストのみの形式で全文が入っていました。今年からは、形式には変更はないですが、記事が100文字以上ある場合100文字目が「…」になり、それ以降は省略されるようになったようです。
外部記事の場合、entry要素のcontentにHtmlタグが含まれるようになった
外部のブログサービスなどに投稿された記事の場合、entry要素のcontent要素には「External Link」という固定の文字列が入ります。
以前は本当にその文字列だけだったと思います。今年からはエスケープされているもののHtmlのspanタグで固定文字列が囲まれた形式になりました。
また以前は接続元の言語設定によって(?)、固定の文字列も「外部記事です」と「External Link」とが切り替わっていたと思うのですが、それもなくなったようです。
ちなみにcontent要素のtype属性はQiita記事はhtml
で外部記事はtext
です。これ自体は以前からそうだった気がしますが、設定値、逆ではないかと……。
初日のRSS
仕様変更かどうか分からないですが、初日(12/1)にRSSを取得したときは独特な挙動をしていたのでメモしておきます。
まず12/1のRSSはカレンダーによって記事投稿の結果が反映されるまでの時間に差がありました。どれくらいの時間差があったかはあいにくと記録し損ねましたが、朝10時くらいには反映済みのカレンダーがある一方、午後15時くらいまで反映されないカレンダーもありました。
初日の記事がQiita記事か外部記事かの違いによるものかとも思いましたが、どうもそういうわけでもないようでした。反映処理の順番待ちとかそういうのなのでしょうか。
また、反映前は、
- 記事は投稿されていてもRSSのentry要素には入っていなかった
- updatedのタイムゾーンが
Z
で、アクセスした時刻を示していた
反映後は、
- 投稿された記事に対応するentry要素がある
- updatedのタイムゾーンが
+09:00
で、アクセスした日の午前0時を示している
というようにRSSの内容自体にも反映前後で差異があるようです。
まとめ
Qiita Advent Calendar ごとに配信されている RSS フィードの中身を確認し、その仕様について調査しました。
こういうのってサポートに問い合わせるなどしたら仕様を教えてくれたりするのかもしれませんが、実物を見て調べればいいかと思い問い合わせまではしていません。
この調査結果を受けてアドベントカレンダーくろーるくんの機能にも修正が必要そうです。シリーズについてはともかくとして、RSSから記事全文が取れなくなったのは痛手です。ほんとこれどうしよう……。