りむったーがサービスを停止したので…自分専用のりむったー的な何かを作ってみた(概要)

.bbpBox22080852432 {background:url(https://s.twimg.com/a/1286141004/images/themes/theme1/bg.png) #C0DEED;padding:20px;} p.bbpTweet{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} p.bbpTweet span.metadata{display:block;width:100%;clear:both;margin-top:8px;padding-top:12px;height:40px;border-top:1px solid #fff;border-top:1px solid #e6e6e6} p.bbpTweet span.metadata span.author{line-height:19px} p.bbpTweet span.metadata span.author img{float:left;margin:0 7px 0 0px;width:38px;height:38px} p.bbpTweet a:hover{text-decoration:underline}p.bbpTweet span.timestamp{font-size:12px;display:block}

りむったー動作停止中です、再開の見込みは微妙です。もともと停電で止まっていたのですが、そもそもTwitter側からも断続的に接続を弾かれていてまともにサービスとして動かすのが困難になってきています。ちょっと潮時かとも思うので、サービスの停止も含めて検討中です。less than a minute ago via HootSuite



というわけで、リムーブしたユーザーをメッセージで教えてくれるサービス、「りむったー」がサービスを停止してしまいました。まぁちょっと考えただけでも結構な負荷掛かりそうな気がするので、オフィシャルじゃなくAPIでやるのは難しいかなぁとは思いましたが。

僕個人はそれほどリムーブに神経質になっているわけではなく、これだけ適当なこと書いてて、しかも自分からコミュニケーション取ろうとしてなかったら減っても当然だろうとか思うわけですが、何というか単純に興味というか。サードパーティな人や相互フォロー(笑)な人が、「フォロー返しがないからリムーブ」とかは端からフォロー自体が迷惑なんですけど、仲の良い友達とかだったらねぇ。ちょっとは気になります。


そういうわけで、自分専用のりむったーを作ってみました。



基本的な仕組み

基本的な仕組みは大体以下の通り。

最初の取得時

  1. APIを使ってフォロワー一覧を取得する
  2. 以下の項目を取得してDBに格納する。
    • user_id(UNIQUE)
    • name
    • screen_name

更新時

  1. 格納済みの有効なフォロワーのフラグを一旦全て0に。更新時間更新。
  2. APIを使ってフォロワー一覧を取得する
  3. 取得したユーザーについて新しいユーザーは追加、登録済みのユーザーはフラグを1に戻す。更新時間更新。

リムーブ把握の仕組み

仮に1日1回0時に動かすとすると、更新時間が昨日でフラグが0のユーザーをピックアップする。ってまぁSQL投げて確認しただけで、ダイレクトメッセージを投げるとかメールするとかその辺は実装してませんが。

補足:Access Tokenについて

自分専用なので、oauth_token/oauth_token_secretの取得は省略しています。どちらも、Twitter developersの「My Access Token」に記載されているのでそれをコピーしてDBに突っ込んでます。



動かしてみての感想

プログラムはPHP(OAuth+Services_Twitter)で書いています。TwitterのAPIは現在は安定してるので特に問題はありませんが、一旦フラグを0にするのは何か無駄。1つずつ付け合わせるよりは良いと思いますが。

それからフォロワー一覧を取得するのに1回のリクエストで100人までしか取れないってのも結構しんどそうです。650人なら7回必要だし、10,000人なら100回必要。OAuth使ってたときのAPI制限は1時間当たり350回なので、どんなに節約しても1時間に合計35,000人分しか取得できません。

GET statuses/followers | dev.twitter.com
Rate Limiting | dev.twitter.com

これ、ちゃんとやろうとしたらぶっちゃけ無理じゃねっていう感じがひしひしと。オープンサービスにしたらあっという間に上限に達するし、あくまでAPIでやるなら分散方式にするか、ホワイトリスト申請する(1時間に20,000回まで許可されるらしい)か、しかない。せめて差分を吐いてくれれば良いんですけどねぇ…

まぁそういうわけでこれをサービスとしてリリースするつもりはさらさらありませんけど、自分で使うだけなら何とかなりそうな気がしました。はい。



ちなみに

あ、なんか「おい、俺は見てるんだぜ」みたいな感じになって感じ悪いですけど、万人に受けるツィートしてるとは到底思えないので、どちらも全く気にしません。

フォロー、リムーブはご自由にどうぞ。