Twitter UserStreamの終焉とこれから
今まで手動でホームタイムライン(TL)を更新せず、リアルタイムにツイートを受信、その他リツイートやふぁぼの通知を受け取れるUserStreamがあった。
非公式Twitterクライアントにはよく搭載されていた機能だ。
というのも、TLの取得は15分に15回といったAPIの制限があったためだ。
この制限を回避すべくUserStreamが使われることが多かった。
私も自作のAndroid用Twitterクライアントにはこの機能を搭載させていた。
しかしこのUserStream、Twitterのサーバーに対しては負荷がかかりすぎる。
使っている人数分の負荷がかかるのはもちろんだが、同じアカウントで複数のUserStreamに接続することができるので、常時接続しておいて自分のTLをリアルタイムにデータベースに保存するといったプログラムを並行して動かすことができる。
そのためなのかは不明だが、TwitterはUserStreamの廃止を宣言した。
On Tuesday June 19, 2018 the following products and services will be replaced by improved products:
— Twitter Dev (@TwitterDev) 2017年12月19日
- User Streams
- Site Streamshttps://t.co/wJEno1RXZw
UserStreamとSiteStreamは2018年6月19日に新しいものに置き換えられます
そんな発表があった。
それからしばらくして、Twitterに対する意見をツイートするようなハッシュタグ(#Twitter2018)を公式が作った。
そのタグで検索をかけると、UserStreamの廃止に対する意見や不満のツイートがとても多かった。
その影響かはわからないが、TwitterはUserStreamの廃止を延期すると共に、少なくとも廃止する90日前にはアナウンスするとツイートをした。
Last year we announced our plan to retire Site Streams & User Streams, and replace them with the Account Activity API (currently in beta). We are delaying the scheduled June 19th deprecation date.
— Twitter Dev (@TwitterDev) 2018年4月6日
As always, we’re committed to providing ample time to migrate. We will provide at least 90 days notice of deprecation date from when the Account Activity API becomes generally available to all developers. More specifics on timing to come.
— Twitter Dev (@TwitterDev) 2018年4月6日
We’re also making a change to our deprecation date for Site Streams, User Streams and legacy Direct Message endpoints. Those services, originally slated for retirement on June 19th, will be available until August 16th, 2018. https://t.co/OiZP243Utt
— Twitter Dev (@TwitterDev) 2018年5月16日
2018年8月16日まではUserStreamとか使えるよ。
それ以降は新しいAPI(Account Activity API)を使ってね
という感じだ。
Account Activity API(AAA)の詳細を見てみても、リアルタイムにツイートを取得することはできないようだ。
UserStreamの代替
- statuses/filter.json
- lists/statuses.json
statuses/filter.json
こちらはUserStreamと同様にリアルタイムにツイートを受信できる
しかし
- ふぁぼられたりRTされた通知、フォローされた通知などを受け取れない
- 5000ユーザーまで
- 鍵垢のツイートは受信できない
- 1認証あたり1つしか使えない(複数接続は無理)
鍵垢の人のツイートも見たいんじゃ
lists/statuses.json
15分900回のAPI制限。
神では?
リストに自分のフォローしているユーザーを突っ込み、取得するだけ。
リアルタイムに受信とまではいかないが、実質1秒1回のリクエストができるのでリアルタイムみたいなものだ。
- フォローしているユーザーを取得(5000人まで)
- リストを作成
- リストにユーザーを突っ込む
という簡単なPHPスクリプトを書いた。
これを使ってリストを作り、クライアントからはそのリストをTLとして読み込むようにすればまた快適なTwitterライフを送れるのではないだろうか。
欲を言えばUserStreamの廃止を撤回してほしいものだ。