YDiary

メモ的な

UserStream廃止に寄せて

何かみんなポエム書いてるの見てたら自分も書きたくなったので書く.

あまり広く公開してこなかったが,自分もいくつかUserStreamを使ったTwitterクライアントを作っていた.

そもそも自分がTwitterに登録したのは2009年の8月ごろで,そこから数えて丸9年間Twitterを続けてきたことになる.
Twitterに登録したきっかけは,JokerRacerというラジコンをブラウザから遠隔操作して遊べるサービスがあり,そのサービスに連携として登録するためだった気がする.*1

9年間もTwitterを続けてきたのは,ひとえにUserStreamのおかげだったと言っても過言ではないと思う.Twitterで1000人ぐらい以上をフォローしててUserStreamを使ったことのある人なら分かると思うが,あの何もしなくてもどんどん情報が流れ込んでくる感じ.それこそ見ようと思えば一日中でもTLを見ていられそうな,あの感覚があるからこそTwitterをここまで続けてきたんだと思う.そしてそれは,間違いなくUserStreamによってもたらされていたものだ.

最初のTwitterクライアント

自分が最初に作ったTwitterクライアントはWindows Formsを使ったもので,コミットログとかを見ると2012年とかそれ以前から作っていたみたいだ.

f:id:YDKK:20180814175718p:plain

当時は既にUserStream対応のクライアントがいくつも公開されており,自分はその中でもJanetterを使っていた.ただ,JanetterはUIに内臓ブラウザを使うタイプのクライアントだったので,当時使ってたEeePCのようなUMPCで使うには少々重くてストレスがあった.そこで,Windows Formsを使って軽量でサクサク動くクライアントを作ろうと思って作ったのが上のクライアントである.
思えばこの頃から,自分はUserStreamの持つ魅力に魅せらていたのだと思う.はなから自分用として使うことしか考えてなかったので,自分の使う必要最低限の機能しか実装していなかったが,UserStreamによって絶え間なく流れる情報をくみ取るためにはそれで十分だった.

UserStream機能を持ったTwitterクライアントというものは,プログラミング初学者にとっての入門用の題材として,これ以上に適しているものは無いように思う.最低限TLのテキストが流れるところから始められ,そこから好きな機能をいくらでも実装して拡張していくことが出来るからだ.自分はこのクライアントを作るために初めてまともにC#に触れたし,そこでオブジェクト指向とかUIの作り方とか,データ処理とかイベント処理とかを文字通り一つずつ学びながら作っていった.このTwitterクライアントを作ることが無かったら,自分はC#をここまで好きになることは無かっただろうし,それこそ全く触れていなかったかもしれない.そんな感慨深いクライアントである.

二つ目のTwitterクライアント

二つ目のTwitterクライアントはModern UI(当初はMetro UIと呼ばれていた)を使ったもので,要はWindows 8以降で導入されたストアアプリタイプのものである.こちらは2014年頃に作り始めてからメンテし続け,後にUWP(Universal Windows Platform)を使って作り直し,なんと今日8月14日現在まで使い続けている.

f:id:YDKK:20180814183420p:plain

PCを買い替えたのでスペック問題は無くなり,もうちょっとリッチなTwitterクライアントが欲しくなったのである.ちょうどWindows 8になって新しいストアアプリという仕組みができ,これでTwitterクライアントを作って画面の端にスナップ表示させたら,えらく捗るんじゃないだろうか,というようなことを考えていた.そんな中でWindowsストアで見つけたのが,雪猫さんのMevyである.
当時はまだWindowsストアのアプリが充実しておらず,それこそTwitterクライアントなんて全くと言っていいほど無かった.そんな中で公開されたMevyは,スナップ表示してながら見するという目的ではとても洗練されていて,ひときわ輝いて見えた.もちろん自分もすぐにインストールし,しばらくメインのTwitterクライアントとして使っていた.
しかし一方で,Twitterクライアントを自作した経験も影響して,UIの細かい部分の改善だったり,自分で使いたい機能を実装したりしたクライアントを作りたいと強く思うようになった.そうして生まれたのが,この二つ目のTwitterクライアントである.

そのような経緯もあって,当初はMevyを目標として一通りの機能を実装しており,いわばMevyクローンのようなクライアントになっていった.基本機能が一通り実装できたあたりから,動画再生とか画像のコピペや4枚投稿*2とかActivity表示機能*3といった自分が使いたい機能をどんどん実装していった.今思えばUI面とかでもうちょっと独自色を出して行けたような気もするけど,標準のScrollViewerとかで素直に実装していったら見た目までそっくりになってしまって少し申し訳なく思っている.

これも,それまで触れたことのなかったXAMLとかデータバインディングとかMVVMとかを一つずつ学びながらコツコツ作っていったクライアントである.今となっては,同じUWPアプリでももっと高機能なTwitterクライアントがいくつもあるように思うけど,自分で作った愛着とか自分向けに細かくカスタマイズした点とかが気に入っており,今でも使い続けている.

実はこのTwitterクライアントは一時期Windowsストアでも公開していた.

f:id:YDKK:20180814201507p:plain

あるときメタデータの不備*4を指摘されてストアから取り下げられ,ちょうどその時期忙しかったのもあって対応できずにずっと放置してしまった.
いい機会なのでダッシュボードで確認してみたところ,どうやら184人ものユーザにダウンロードしていただいたようで,嬉しい限りである.

おわりに

一応上に挙げたようなこれまでの資産があるし,ログイン認証で使っていたりもするので英作文して開発者アカウントの維持はしてみた.でも新APIじゃクライアントを作って公開するには制限が厳しすぎるし,UserStreamも無くなったしで今のところTwitterで新しく何かを作ろうって気にはならないかなぁ….そりゃFilterStreamを上手く使えば疑似UserStreamみたいなことは出来るかもしれないけど,それじゃ自分しか使えないし,今まで自分と同じようにTwitterとUserStream使ってきた人たちが少なからず居なくなることを考えると,プラットフォームとしての魅力も半減してしまうのではないかと思う.
UserStreamみたいな大規模なインフラを維持していくことは並大抵のことじゃないだろうし,それを今まで無料で提供し続けてきたことを考えればとてもTwitter社を責めることは出来ないが,せめてもう少し別の方法もあったんじゃないかと思うと残念でならない.

最後に,これまでの自分に大きな影響を与えくれたTwitterとUserStream,並びにそれらを簡単に扱えるようにしてくれたライブラリ各種に大きな感謝を伝えて結びにしたい.

いままでありがとう.

*1:流石に記憶があやふやなので,ひょっとしたら逆だったりするかもしれない

*2:この辺の機能はMevyでもアップデートで対応しており,ひょっとしたら自分の方が後発かもしれない

*3:TweetDeckとかにある他人がファボったツイートが流れてくるやつ.非公開API

*4:恐らくスクリーンショットを更新していなかったこと