読者です 読者をやめる 読者になる 読者になる

ポータル自作日誌

自作ポータルとか自作ニュースサイトをコツコツ作るプログラマの作業記録

ITニュースサイト、まめニュースの改良をして、保存データと少なくした。

Googleリーダーが開発終了し、次にいいものがないので、 自作している。リンク集からそのサイトに行くことができる。 my RSSリーダーは、公開版である。公開するからログインレスだ。 そもそも、RSSリーダーが非公開である理由は、人によってない場合も多いだろう。 将来的に多人数が使えるように、カスタマイズ機能を公開してもいいかもしれない。これは今後の課題だ。

開発は、一定時間がたつと過去ログファイルが大きくなり、タイムアウトする問題に着手した。 なぜRSSリーダーが過去ログを持つ必要があるか? 過去記事を保存し、RSS内容と比較することが ブログによっては必要だ。 なぜなら、ブログによっては、ずっと古い記事のRSSを発行し続けているからだ。 更新された記事のみを表示するのがまめニュースの仕様だ。

RSSの日時で表示を決めればいいが、それが一定形式になっていないのが問題だ。RSSデータ内の日時は使用していない。

だから、過去ログを持ち、古い記事を最初に表示しないようにしている。

それをずっと持っていると過去ログファイルのsizeが大きくなっていく。 照合に時間がかかるようになり、更新周期の10分に、間に合わなくなる。 結果、ニュースの更新がされなくなる不具合が数ヶ月おきに発生する問題があった。

対処として、その都度、過去ログを削除していたが、削除時には、古い記事も表示してしまう現象が起きるし、手動削除は嫌なのがプログラマの性分だ。

今回は、若干仕様も変更した。10日たってもRSSが表示される記事のデータは表示しない。

今回の変更では、過去ログデータAに加えて、 削除されない過去ログ(古すぎる記事データBと呼ぼう)というデータに保存するようにした。これは追加された過去ログデータファイルである。表示する過去ログAは今までどおり保持し、さらにずっとRSSに含まれるデータBを保存するのだ。つまり、古いままRSSに表示されている記事データ(データ内容はタイトルとURL)を別に保存する。

そのデータBで、まずRSS取り込み時に入力をフィルタする。それで古すぎる記事の表示を防止する。処理としては、古すぎる記事のデータを管理するため、更新時に毎回、過去ログデータをチェックし、10日過ぎているデータであって、かつ、RSSに含まれるデータは、古すぎる記事データBに追加し、過去ログデータAから削除する。10日たってRSSからも削除された記事データは過去ログデータAから削除する。古すぎる記事のデータに追加されない、かつ、過去ログデータから削除される記事の分をデータ削減できる。今まではこのデータも全て保持していたのだ。

このような修正をした結果、データ量の増加は削減できる。 しかし、データは増加するので、完全に解決はしない。

対策としては、一定期間ごとに古い記事が表示されるように仕様を変更して、なんらかの方法を考えることが考えられる。 この記事を書いていて思ったが、更新のないブログは最新のRSSに掲載された記事(複数)だけ保持しておけばいいかもしれない。 それと比較して、新しい記事だけが、更新された記事だ。 このあたりは、もう少し考えよう。この記事を書いて、さらなる対策案が思いついたことは収穫だ。