UserStream廃止後の代替Twitterクライアント(Windows,Android)

2018/08/16にTwitter User Streams APIが廃止されました。
利用しているユーザー数ぶんTCPコネクション張り続けられるとかめちゃくちゃ大変そうなんで、維持したくないというのもわかるんですけど、月1000円とかでもいいから有料でも維持してほしい感はありました。
(仮に月1000円で10000人がつかったとしても月1000万円とかなんで、きついんだろうなあという気もしますね。)

廃止になってしまったものは嘆いていてもしょうがないので、廃止後にこういうふうにやったらいい感じになったというのを共有したいと思います。


スポンサーリンク

概要

結論から書くと以下のようなことをします。

  1. リストをつくる
  2. フォローしているユーザーをすべてリストに入れる
  3. TLの代わりにリストを見る

TwitterのAPIには制限がありTLの更新は15分に15回、つまり1分に1回なのですが、Listの更新はなんと15分に900回あります。
15分は900秒なので、1つのListであれば1秒に1回更新が可能であるということになります。

リストの作成

まずはリストの作成をする必要があります。
リストの作成は、以下のWebサービスを使うと良いでしょう。
リストを作ってポチポチリストに追加していかなくても、フォローしているユーザーを一括でリストに追加してくれるサービスです。ただし、べらぼうにフォローが多い人は無理かも。
TimeLine Copier - Twitterでフォローしてる人をリストにコピーするツール

フォローが300人までなら1回で作成できますし、それ以上のフォロー人数がいる人も何回か繰り返せばつくることができます。
(僕は繰り返せることを知らなくて300人入れた後はポチポチリストに追加しました。つらかった・・・)

いまフォローしているユーザーを全員リストに入れられたら準備は終了です。

Android

Listを定期更新できるアプリならなんでもよいのですが、僕は有料のtwitcle plusを使っています。
もともとUserStreams APIが使えるということで利用していたのですが、マルチアカウント対応、Evernoteなど各種連携機能など、高機能なクライアントです。
かゆいところに手がとどく感じで愛用しています。

https://play.google.com/store/apps/details?id=jp.yoshika.twitcle.plus&hl=ja


今回はtwitcle plusの定期更新機能を利用します。
1分に1回更新されますので、見ていないときはいい感じに更新してくれますし、見ているときも割とAPI制限を気にせず更新できますよ。


f:id:viaggiolog:20180927215827j:plain


Windows

Windowsのヘビーユーザー向けアプリといえば、OpenTween(Tween系列)ではないでしょうか。
UserStreams廃止後の有力候補といえばTweetDeckという記事が多いですが、TweetDeckは1ツイートに対する専有面積が多すぎて見にくい気がします。
TweetDeckは4秒に1回更新らしいのですが、OpenTweenなら15秒に1回とそれに迫る感じで更新が可能です。

f:id:viaggiolog:20180927215722p:plain

アプリの作り上15秒以下にはできないのですが、オープンソースなので自力でOpenTweenをビルドできるひとはいい感じにできるのでは?という気がしています(自己責任でお願いします)。

ちなみに15秒下限のチェックをしているのは2箇所っぽいです。

設定画面を開くときに強制的に15秒にしている部分
https://github.com/opentween/OpenTween/blob/master/OpenTween/Tween.cs#L747

if (SettingManager.Common.ListsPeriod < 15 && SettingManager.Common.ListsPeriod > 0)
                    SettingManager.Common.ListsPeriod = 15;

設定画面の保存時のバリデーション部分
https://github.com/opentween/OpenTween/blob/master/OpenTween/Setting/Panel/GetPeriodPanel.cs#L249

    if (prd != 0 && (prd < 15 || prd > 6000))
    {
    MessageBox.Show(Properties.Resources.DMPeriod_ValidatingText2);
    e.Cancel = true;
    return;
    }

この手法のデメリット

この手法のデメリットは、フォローをしただけだと、見ているTLには表示されないことです。当たり前ですが。
どうしてもフォローしただけでフォローしたつもりになってしまうのでフォローと同時にリストに追加する必要があります。