2 min read

Twitter UserStreamの終焉とこれから

今まで手動でホームタイムライン(TL)を更新せず、リアルタイムにツイートを受信、その他リツイートやふぁぼの通知を受け取れるUserStreamがあった。
非公式Twitterクライアントにはよく搭載されていた機能だ。
というのも、TLの取得は15分に15回といったAPIの制限があったためだ。

この制限を回避すべくUserStreamが使われることが多かった。
私も自作のAndroid用Twitterクライアントにはこの機能を搭載させていた。

しかしこのUserStream、Twitterのサーバーに対しては負荷がかかりすぎる。
使っている人数分の負荷がかかるのはもちろんだが、同じアカウントで複数のUserStreamに接続することができるので、常時接続しておいて自分のTLをリアルタイムにデータベースに保存するといったプログラムを並行して動かすことができる。

そのためなのかは不明だが、TwitterはUserStreamの廃止を宣言した。

UserStreamとSiteStreamは2018年6月19日に新しいものに置き換えられます
そんな発表があった。

それからしばらくして、Twitterに対する意見をツイートするようなハッシュタグ(#Twitter2018)を公式が作った。
そのタグで検索をかけると、UserStreamの廃止に対する意見や不満のツイートがとても多かった。

その影響かはわからないが、TwitterはUserStreamの廃止を延期すると共に、少なくとも廃止する90日前にはアナウンスするとツイートをした。

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回のリクエストができるのでリアルタイムみたいなものだ。

  1. フォローしているユーザーを取得(5000人まで)
  2. リストを作成
  3. リストにユーザーを突っ込む

という簡単なPHPスクリプトを書いた。

sugtao4423/follow2list.php

これを使ってリストを作り、クライアントからはそのリストをTLとして読み込むようにすればまた快適なTwitterライフを送れるのではないだろうか。

欲を言えばUserStreamの廃止を撤回してほしいものだ。

我らのTwitterを守れ

参考