- はじめに -
2018/08/16、TwitterにおけるUserStreamが終了する。
Site Streams and User Streams are being replaced by the Account Activity API which is now available in our developer portal. Developers without access can apply for an account to begin their migration. Please refer to our migration guide.https://t.co/FpWWKetm5e
— Twitter Dev (@TwitterDev) May 16, 2018
本記事は、TwitterとUserStreamに対する思い出とポエムである。
- 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を楽しんでいた様子:
最低限プライバシーを考慮した17columnの様子です pic.twitter.com/ZkNTkkB5O3
— ばんくし (@vaaaaanquish) 2018年6月25日
- Twitterとかいうアホ -
前章ではアホみたいなポエムを書いたが、それ以上にアホなのがTwitterだ。
TwitterのAPIが公開されて以降、何度か「TwitterAPIはもう終わり」と言われた改変こそあったものの、その改変を我々は受け入れてきた。近年では、ポリシー違反としてアプリやアカウントの凍結を続けたり、新しい機能のAPIは公開せず、作文を書かせる複雑なAPI利用申請方法を公開、過去最大に厳しい規制のAPI公開に至っている。それでもなおTwitterという魅力的なサービスを使い続けてきた。
ひとえにUserStreamがあったからだ。多くの情報をリアルタイムに取得できるSNSは他に存在しておらず、強い魅力の1つだった。特にフォロワーが多くなればなる程、その傾向は顕著に見られるだろう。私自身、15~30のカラムを常に画面に表示し、リプライやエゴサーチ、リストをリアルタイムに更新する事で、1万を超えるフォローアカウントから得られる情報を捌いている。
これが無ければTwitterの情報を見切れないユーザも多いだろう。
前述したようにTweetDeckはTwitter公式アプリとなり、UserStreamを利用しないリアルタイム更新の方法を利用している(一般開発者が利用できないチート)。しかしながら、WebベースのTweetDeckをいくら拡張しても自身の今の環境は再現する事できないだろうし、手の届かない部分をサポートし盛り上げるためのサードパーティクライアント、という認識はUserStream廃止によって苦しくも崩れ去った。
我々を締め出してどうしたいのだ。2015年に同社のCEOに就任したジャック・ドーシー氏は同年の年次開発者会議で「当社とアプリ開発者との関係はいつの間にか少し複雑になってしまった。この関係をリセットし、常に学ぶ姿勢を忘れずに、人々の意見に耳を傾け、気持ちを新たに再スタートしたい」と語った。一体なんだったのか。
そして何故Mastodonが台頭してきた今なのか。Mastodonは常に同様に情報が流れる上、オープンで常に改善が進んでいる。
UserStream廃止と新しい有償のAccount Activity APIのダブルパンチによって、サードパーティクライアント開発者はTwitterから離れるだろうし、フォロワーが多いUserStream利用者は耐えられないだろう。そして、ギークは周囲が利用しているSNSツールに敏感だ。普段こそUserStreamingを利用しないユーザも開発者が減り発展のスピードが落ちたSNSから離れていくだろう。
これはTwitter Development TalkでUserStreamsが一般公開された時のGoogleグループのやり取りだ。
https://groups.google.com/forum/#!topic/twitter-development-talk/OfGI5vcdk7Y
While User Streams is most useful for Desktop Clients, experimentation in other use cases is encouraged.
UserStreamがデスクトップクライアント以外の様々な実験的用途でも推奨されていた時代はもう戻ってこない。
言っている事とやっている事がメチャクチャなサービスに希望を抱いて課金し、APIを使い続けられる程、開発者も暇ではない。
- 現実 -
ひどく誇張して罵ったが、私も一端のエンジニアだ。
UserStreamというAPIが、どれだけの負荷になっているか想像するのは容易だ。
負荷というのは、サーバの負荷ももちろんあるが、運用、マネタイズの負荷が大きいだろう。
実際にUserStreamが現在動いているアプリの内1%しかないとTwitter社は公言している。
There’s no streaming connection capability as is used by only 1% of monthly active apps. Also there's no home timeline data. We have no plans to add that data to Account Activity API or create a new streaming service. However, home timeline data remains accessible via REST API.
— Twitter Dev (@TwitterDev) May 16, 2018
もちろん、この数値に反感を持つUserStream利用者も多いだろう。「botが含まれているのでは?」「自分の周りはそんな事はない」という意見は多く見ていて同意できる部分もあるが、残念ながら事業会社というのはこういうものだ。因果についての検証がないにせよ「UserStreamが1%」という現実は変えられず、これは明らかに少ない数値だ。その1%を利用する上、多量かつ広告も流れないタイムラインを眺め続けるユーザに、事業会社が与えられる慈悲はない。「広告を流せば」という声もあったが「1秒以下で流れていくタイムラインですけど広告配信どうですか?」は流石の私でも営業しきれる気がしない。十分な統計的な有意差、因果関係を利用してAPIの運用を決定出来ている会社などこの世に存在しないという前提の元、1%という数値は機能廃止に対して背中を押すに十分なデータだろう。
実際にUserStreamに広告以外で課金体系が出来たとして、払える金額についてアンケートを取った事がある。
TwitterのUserStreamAPIが有料展開された場合に月額で払える料金
— ばんくし (@vaaaaanquish) July 25, 2018
自身のフォロワーが開発者が多い事も加味しても、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に望むこと -
TwitterのUserStream廃止に反対する署名などに参加する私に対して、「実際にあなたがTwitter社に入ればいいのでは〜…」等と言う人も居たが、私がTwitterを開発する身にあったとしても同様の判断をするか、事業判断を聞いて退職を言い渡すだけだろう。事業会社で働くエンジニアとしても、反論はしたいが飲み込むしかないという状態だ。何より、私が実際に会ったことのあるTwitter社員は皆優秀でギークで聡明であったし、Twitterが世界中で使われるサービスとして成長し続ける事は容易に想像できる。
私が今Twitterに唯一望むとするなら、UserStream関連の統計情報、知見の公開だ。どのように開発、運用され、どのような統計的遷移の元で廃止に至ったのか。BtoCサービスとしてAPIを提供する事業会社であれば少なからず訪れる可能性のあるこのような状態を、ユーザや開発者が防いでいくにはどうすれば良さそうか。
世界最大のSNSサービスで得られた知見をシェアして欲しい。
私の憶測ではあるが、UserStreamは元々Twitterアプリの負荷分散の課題に対する打開策としてセッションを維持するという形の機能をつけたものではないかと考えている。こういった形で実装されたモノは常々運用やマネタイズ面で嵩張るハメになる。
Twitterがどう考えどういう流れでどうなったのかUserStreamの終わりに知っておきたい。
- UserStreamの終わりに -
2ヶ月前、私も個人で利用していたTwitter APIが停止し、UserStreamをクライアントに頼る形となった。その後Mastodonアカウントを作成(ばんくし (@vaaaaanquish@mstdn.jp) - mstdn.jp)。今後は2つのSNSを使いながら、インターネットで意味不明な発言を続けていくつもりだ。Twitterを忘れられるかどうかは定かでない。
ところで、先日のコミケで販売されていた有名なTwitterクライアント作者各位が寄稿した同人誌がネットで購入できるらしい。
mikutter-book.booth.pm
私より遥かに強い思いが詰まった本であろう。私も迷わず購入した。届くのが楽しみだ。
私が楽しくインターネットの世界にどっぷりつかれたのはTwitter社のエンジニア、サードパーティクライアントの開発者、連携アプリ開発者などの偉大な人物達のお陰だったと今思う。
全員に敬意を評し、私も彼ら以上に人に価値を生み出せる開発者になれるよう精進したい。