全国オンライン対応受付 平日 9:00-18:00
お問い合わせ

開発記録 / 記事配信制作記 / Vol.52 記事配信制作記 Vol.1 新着を、待たずに届ける

記事 01

新着を、待たずに届ける——既存サイトはそのまま、裏側だけ足す

ある地域情報紙から、相談を受けた。サイトに載せた新着記事を、メッセージアプリの公式アカウントにも流したい。読者が毎日サイトを見に来てくれるとは限らない。向こうから届けば、読まれる機会は増える。ただし、いま動いているサイトには手を入れたくない、という条件付きだった。長年動いてきたサイトである。触らずに済むなら、それに越したことはない。この制作記は、その配信の仕組みを設計し、作り、動かすまでの記録だ。

2026-08-10 公開

ある地域情報紙から、相談を受けた。サイトに載せた新着記事を、メッセージアプリの公式アカウントにも流したい。読者が毎日サイトを見に来てくれるとは限らない。向こうから届けば、読まれる機会は増える。ただし、いま動いているサイトには手を入れたくない、という条件付きだった。長年動いてきたサイトである。触らずに済むなら、それに越したことはない。この制作記は、その配信の仕組みを設計し、作り、動かすまでの記録だ。

サイトに触らず、新着を知る方法

その情報紙のサイトは、既製のCMSで記事を管理している。幸い、このCMSには記事の一覧を機械が読める形で返す公開APIが備わっていた。そこでサイト側には一切触れず、外から数分おきにこのAPIを見に行き、前回より新しい記事があれば拾う、という方式にした。ポーリングと呼ばれる素朴なやり方だ。記事が公開された瞬間にCMS側から知らせてもらう方式も考えたが、それにはCMSの管理権限と設定変更が要る。外から見に行くだけなら、権限もいらず、既存の仕組みを壊す心配もない。素朴さは、この場面では美点だった。

届け先は、増える前提で作る

いま届けたい先はメッセージアプリの公式アカウント一つだが、いずれ他のSNSにも同時に流したくなるのは目に見えている。そこで、記事を取ってきて整える共通部分と、届け先ごとの差込口を分けて作った。今回作り込んだのはメッセージアプリ用の差込口だけで、記事は写真と見出しと「続きを読む」ボタンの付いた、横に繰って読めるカード型のメッセージに整えて送る。一度に載せる記事は十二件まで。他のSNSの分は、差し込む口だけ用意してある。将来の増設は、この口に部品を一つ書き足すだけで済む。

道具は、標準のものだけで

実装では一つ、事情があった。社内ネットワークのSSLの都合で、外部ライブラリの取り込みがうまく通らないのだ。ならばと、通信もデータベースも時刻の扱いも、Pythonに最初から付いてくる標準ライブラリだけで書いた。部品が少ないぶん、サーバーに置くのも簡単で、数年後も動かし続けやすい。導入手順に「まずあれを入れて」という行が一つもないのは、気持ちがいい。制約が、かえって長持ちする作りを連れてきた。

二重送信と、初日の一斉誤配信を防ぐ

配信もので一番怖いのは、同じ記事を二度送ることと、動かした初日に過去の記事を全部送ってしまうことだ。前者は、どの記事をどの届け先に送ったかを、記事と届け先の組で記録して防ぐ。組にしたのは、将来SNSを足したとき、新しい届け先には新規として流し、既存の届け先には二重送信しないためだ。送信に失敗した分は記録せず、次の巡回で自動的にやり直す。後者は、稼働の初回に、その時点までの記事をすべて送信済み扱いにしてから始める。届くのは、そこから先の新着だけになる。

これで骨組みはできた。ところが試しに動かすと、肝心の「記事」が一件も取れてこない。次の回は、その原因だった分類の罠について書く。