User Streamにまつわるエトセトラ

User Streamの先にあるtwitter

User Strem(以降US)については@fshin2000の書いている通り、Twitterクライアント作者としては非常にアタマの痛い所ではあります。
と言うのも、安直に実装しては

→ フォロワーが増えてくると、ひたすらログが流れて追えない 
→ 1つぶやきあたりの価値が減る(見られない)
→ コミュニケーションが余計疎遠になる。
→ どうせ見られないのなら、と、沢山の人にRTされてるつぶやきだけ見る人や、フィルターで自分の好きな情報だけ見る人が増える。もしくはフォローを厳選する。
→ twitterのWeb化が起こる(そして断絶へ)
→ もしくは友達だけに閉じてSNS化へ。
→ もしくは有益な情報だけを提供してくれる人をフォローするRSSリーダー化へ

となってしまうのは目に見えている上、UI面では、ある発言をFavしようとしたらあっと言う間に流れてしまい、操作ミスを連発する…などと言う事態が発生することは想像に難くなく…と言うよりは既に実証済みであったりするからです。

もっとも、後半などは既にP3などでフィルターを実装していることからもお分かり頂けるように、フォローが多い場合必然的に発生してしまう事態でもありますが、US化することで、これが更に顕著になることが想定されるわけです。

また、実際にUSクライアントを使われてみるとすぐに気づかれることと思いますが、最初こそそのリアルタイム性を楽しいとは感じるモノの、バックで流してみると止めどなく流れるログに気を取られてしまい、作業をしながらのTwitterと言うことが困難になってしまいます*1

そこで、ストリームを貯め込み、RESTのように一定時間ごとにツイートを表示するようにしてやれば今までと変わらない使い方ができるわけですが、それではUSのリアルタイム性を削いでしまい、API制限から解放される、と言うこと以外のUS化の意義がなくなってしまいます。

ちなみに、これはどうしようもないことではありますが、(フォローが多い場合)頻繁に通信をすることから電力の消耗も激しく、モバイル端末での利用は少々厳しいです。*2


ではクライアント作者としてはどうするか。
現在以下の様な実装を構想中です。

  1. 基本全てをUSで取得
  2. RESTでの取得機能も温存。設定で変更可能とする
  3. フィルター機能、ローカルログ検索機能を拡充
  4. タイムラインについてはストリームを貯め込み、1分(あるいは任意の時間)毎に表示反映する(無論ここは好みでそのままストリームも可能とする)
  5. 但し、Mention/DMについてはリアルタイムに反映する

当初は、速度を活かす為にそれこそUIをガラッと変更することも考えましたが、結局見てるのはヒトの目で、捉えてるのはヒトの脳である以上、速さを活かした方が良い部分はその速さを活かし、「どう考えても追いつけない」部分は人間に合わせた方が良い、と言う結論に至り、上記のようになりました。

使用方法としては、現行のP3と変わりません。基本はタイムライン。時々フィルターにかかったツイートや、気になった単語を含むツイートを検索して参照する。
新しいのはAPI制限が無くなることと、Mention/DMがリアルタイムで反映される為、それこそ本当にチャットの様な使い方が可能になること。

モバイル環境での使用はUSは諦めざるを得ないでしょう。あるいは、タイムラインだけRESTにし、Mention/DMのみUS、という実装もいいかも知れません。


以上、オチなくこのエントリを終わります。

【追記】
コメントから仕様回収

USと擬似RESTモードは設定ダイアログでなく、メニューなどから変更を可能にする
フィルターもリアルタイム更新対象とする

*1:それこそ「Twitterしてる」しか書けなくなる

*2:なので一時期はフォローが多いヒトにはUSは向かないのではないか、と考えたこともありました