- UserStreamとTwitterクライアント -
UserStreamは、ツイートに関連した情報を取得し続けるTwitterAPIの機能の1つである。広く一般的に「Twitter公式でないアプリ」となる「Twitterクライアント」には必ずと言って良いほど実装されている機能の1つである。UserStreamによってTwitterクライアントは、情報を取得し続け、リアルタイムにツイート、リプライ、リスト、DM等が更新することが可能となる。
私がUserStreamと出会ったのは、「TweetDeck」というTweetDeck社が開発していたPC版Twitterクライアントである(TweetDeck社は2011年にTwitter社に買収され、晴れて公式アプリとなる)。2010年にUserStreamPreviewとしてTweetDeckに載ったこの機能は、私を一瞬でTwitterの虜にした。
何より情報が早かった。
テレビよりもネットニュースよりも2chよりも早いスピードで、様々な人による様々な角度の情報が入ってくる。1つのSNSの匿名性の高い情報ではなく、より多くの人格を形成しているアカウントによる情報が得られるのは何よりも画期的だった。
PCではTweetDeck以外にも夜フクロウ、Echofon、Seesmic、TweenといったTwitterクライアントがUserStreamに対応していった。UserStreamは「インフルエンサー」という概念すらなかったフォロワー増加期の当時のTwitterユーザにとって非常に魅力的な機能で、我々をリアルタイムと情報過多の泥沼に漬け込んだ。マルチアカウントや外部サービス連携、拡張機能での争いに加え「UserStreamに対応しているか」がTwitterクライアントとして重要な一点を担うようになった。その後、私も愛用したJanetter、Krile等も登場、UI/UXが洗礼されUserStreamを最大限活かしたクライアントがいくつも開発されていった。
スマフォアプリではtweetbot、The World、ShootingStar、jigtwi、Cerisier、びよーんったー、ツイッターするやつ、メガネケエス…上げればキリがない程にTwitterクライアントが急増した。モバイル回線でUserStreamを利用できるクライアントが出始め、API1.1への対応やリスト自動更新を通して進化していった。異常な人気を博していたのはShootingStarだろうか。ふぁぼ爆、(´へεへ`)<100レベルなう 、パクリ、エターナルフォースブリザードは我々にとって非常に刺激的だった。
後にパクツイ(他人のツイートの文面を全文コピーしてツイートすること)やふぁぼ爆(特定人物に対してLikeを付け続けること)、複数アカウントによるr4s(50~100のサブアカウントを利用し他人をスパム報告すること)自体が問題視されていくようになった。もちろん今考えれば異常な文化でこそあったものの、当時UserStreamによってリアルタイムに多くのネット文化が多方面で発生する様は、多くの人が興奮し熱中した。その後、2014年頃には「学生開発者にスマフォアプリ作った事あるか?と聞くと皆が皆口を揃えてTwitterクライアント作ったと言う」といった小ネタが流行る程に、APIや関連ライブラリ、情報が整備され、UserStreamを利用したスマフォのTwitterクライアントは増加していった。
このように時系列を追っていけば、UserStreamは、Twitterクライアントの発展と切っても切り離せない機能の1つだった事がわかる。UserStreamは「常に通信し続ける」機能であり、テキスト情報、画像情報を常にやり取りするため、私も月の通信量の限界までパケットをTwitterに費やしていたし、複数端末運用の方法や拡張プログラムの書き方、アプリケーション、セッションの仕組みをTwitterとUserStreamから学び得ていた。
多くの人とUserStreamを楽しんだ日々はいつになっても忘れないだろう。私にとってのUserStreamは、誰かにとってのフラッシュ倉庫であり、2chであり、ニコニコ動画であり、部活であり、趣味であったと思う。
Macbookで最大限UserStreamを楽しんでいた様子:
- 現実 -
ひどく誇張して罵ったが、私も一端のエンジニアだ。
UserStreamというAPIが、どれだけの負荷になっているか想像するのは容易だ。
負荷というのは、サーバの負荷ももちろんあるが、運用、マネタイズの負荷が大きいだろう。
実際にUserStreamが現在動いているアプリの内1%しかないとTwitter社は公言している。
もちろん、この数値に反感を持つUserStream利用者も多いだろう。「
botが含まれているのでは?」「自分の周りはそんな事はない」という意見は多く見ていて同意できる部分もあるが、残念ながら事業会社というのはこういうものだ。因果についての検証がないにせよ「UserStreamが1%」という現実は変えられず、これは明らかに少ない数値だ。その1%を利用する上、多量かつ広告も流れないタイムラインを眺め続けるユーザに、事業会社が与えられる慈悲はない。「広告を流せば」という声もあったが「1秒以下で流れていくタイムラインですけど広告配信どうですか?」は流石の私でも営業しきれる気がしない。十分な統計的な有意差、因果関係を利用して
APIの運用を決定出来ている会社などこの世に存在しないという前提の元、1%という数値は機能廃止に対して背中を押すに十分なデータだろう。
実際にUserStreamに広告以外で課金体系が出来たとして、払える金額についてアンケートを取った事がある。
自身のフォロワーが開発者が多い事も加味しても、1人辺り1500円/月は厳しいといったところか。大体新しいAccount Activity
APIを利用した場合の月額金額の1アカウントの負担額に近く、
APIを使い続けたければこちらでという事に落ち着くのもわかる。
https://developer.twitter.com/en/pricing/aaa-allまた、研究用途のデータ収集などに絞って考えれば、statuses/filter.jsonを利用する事で代替UserStreamの実装が可能だろう。通知や非公開アカウントのツイートは取得できないが、今まで通りのリアルタイムな取得が実現不可能という訳ではない。
POST statuses/filter — Twitter Developers
新しく公開されたAccount Activity APIはwebhookの仕組みを利用している事から、Twitter社の負担が減りサードパーティ開発者に大きな負担を強いる形とは言え、APIを利用したサービスのマネタイズをサードパーティ開発者がしっかり考えていれば、運用不可能ではないだろう。前述したように、UserStreamを利用していないTweetDeckをカスタマイズする層も出てくるだろうし、TweetDeckであればTwitterとしても広告配信等のマネタイズが容易に考えられる。TweetDeckがリアルタイム更新をサポートし続けるという保障こそないものの、そういった機能によりユーザが残る可能性もある。
近年の一通りの改修は「開発者フレンドリーを掲げながらギークな開発者を締め出している」ようにも見えるが、Twitter社の四半期決算でも黒字が続いており、むしろギークなユーザ層が居なくても売上が上がる段階に来ていると見るのが自然に思える。有名歌手、俳優、アイドル、大統領がTwitterに参加し、それらを広告ありの公式クライアントのタイムラインで見てくれる十分なユーザが揃った今、UserStreamでメチャクチャな行動をし続けてきたTwitter老害の我々に立場はなさそうだ。
TwitterのUserStream廃止に反対する署名などに参加する私に対して、「実際にあなたがTwitter社に入ればいいのでは〜…」等と言う人も居たが、私がTwitterを開発する身にあったとしても同様の判断をするか、事業判断を聞いて退職を言い渡すだけだろう。事業会社で働くエンジニアとしても、反論はしたいが飲み込むしかないという状態だ。何より、私が実際に会ったことのあるTwitter社員は皆優秀でギークで聡明であったし、Twitterが世界中で使われるサービスとして成長し続ける事は容易に想像できる。
私が今Twitterに唯一望むとするなら、UserStream関連の統計情報、知見の公開だ。どのように開発、運用され、どのような統計的遷移の元で廃止に至ったのか。BtoCサービスとしてAPIを提供する事業会社であれば少なからず訪れる可能性のあるこのような状態を、ユーザや開発者が防いでいくにはどうすれば良さそうか。
世界最大のSNSサービスで得られた知見をシェアして欲しい。
私の憶測ではあるが、UserStreamは元々Twitterアプリの負荷分散の課題に対する打開策としてセッションを維持するという形の機能をつけたものではないかと考えている。こういった形で実装されたモノは常々運用やマネタイズ面で嵩張るハメになる。
Twitterがどう考えどういう流れでどうなったのかUserStreamの終わりに知っておきたい。