Twitterの関連する発言をまとめる事ができるシステム"Twitter Segments"の提案

こういうのあったら自分が使いたいから書きます。

背景

皆さんはご存知の通り、Twitterというサービスが注目されている。
Twitterユーザは、その便利さ、容易さ、その他様々な理由によりFollowers数が日々増えている傾向にある。
Followers数を増やすと、少ないFollowers数では見えなかった流行や人の営み、チャット風な雰囲気から生まれる議論の展開を楽しむことができる。
しかし、Followersが増加しすぎると認知速度の限界や、発言取得間隔の長さにより、取りこぼしがあるため、Twitter上で話されている文脈を追う事ができず、みすみす重要な議論を逃してしまったり、後から参照できなくなってしまう事が起こっている。それが原因で、Followers数を減らす人も出てきている。
Twitter側では、そのような問題を軽減するために、Favoritesという機能を設けている。これは自分の気に入った発言を後から見れるように保存できるシステムである。しかし、Favorites数も増加すると、それこそ議論の取り出しも難解になってしまう。この問題についてはまだ解決策は見つかっていない。
また、各種Twitterクライアントが発言をローカルに保存することで全体的な流れを大まかにつかむことができるようになっているが、まだ議論をまとめる事ができない上、実装されても、ローカルで保存されたり、そのソフトウェア依存である可能性が高く、その価値を共有することはできない。

目的

自分のTimelineだけでなく、これまでに溜めたFavotites、またはReply関係により抽出された推奨発言を、名前つきのSet内に振り分け、パーマリンクを割り当てるシステムを構築する。
それによって、カオス状態になっているがしかし意味のあるデータの集まりである発言を後から有効活用することができる。
また、APIを出す事により、すでに浸透している各種Twitterクライアントへの実装を容易にする。

関連作品

ShareTwitterOnTumblrは、MiniBufferを用いた優れたシステムだが、以下の問題点がある。

  • MiniBufferを入れないと使えない。
  • LDRizeを用いることが推奨されてるが、ピンという概念とそれを行う操作の習得が難しい。
    • Twitterを議事録を作ると言った用途の場合、その議論のスピードとLDRizeの静的なページしか扱えない(現時点)制限が問題を大きくしている。

また、TwitterClipというサービスも出たが、ステータスページのURLの入力と出力の取り出しが現時点で使いづらいと思われる。

Tweditorは中でもユーザインターフェースとしては群を抜いて良いシステムだが、ステータスの選択が議事録を想定していないのか、種類が少ない点が残念である。

仕様

  • Twitter Segmentsのユーザ(以下ユーザ)はそれぞれ有限個の名前付きセット(Segmentと呼ぶ事にする)を作成し、自分のものとして所有することができる。
  • 各Segmentは共有状態を幾つかの候補から選択できる。
  • 各Segmentはコピーできる。
  • REST等を使って、ログイン、Segmentへの追加、その他機能のAPIを公開する。
  • アカウント情報はOAuthを利用する事にする。OAuthはOpenIDを使ったアクセス制御プロトコル。最近Twitterが対応した。

DB設計

Users

  • ID : INTEGER, PRIMARY
  • Password : TEXT
  • TwitterID : VARCHAR(255)
  • TwitterPassword : TEXT
  • EmailAddress : VARCHAR(255)
  • OAuthAccessToken: VARCHAR(255)

Statuses

  • ID : BIGINT, PRIMARY_KEY, ALIAS StatusID
  • TwitterID : VARCHAR(255)
  • StatusText : TEXT

Segments

  • ID : INTEGER, PRIMARY_KEY
  • Title : TEXT
  • Description : TEXT
  • Accessibility : INTEGER
  • CopiedFrom : INTEGER, FOREIGN_KEY(Segments.ID), ONDELETE SET NULL
  • (OwnerID: INTEGER, FOREIGN_KEY(Users.ID), ONDELETE SET NULL)←非正規化する場合

UserToSegments

  • ID : INTEGER, PRIMARY_KEY
  • UserID : INTEGER, FOREIGN_KEY(Users.ID), ONDELETE CASCADE
  • SegmentID : INTEGER, FOREIGN_KEY(Segments.ID), ONDELETE CASCADE

SegmentToStatuses

  • ID : INTEGER, PRIMARY_KEY
  • SegmentID : INTEGER, FOREIGN_KEY(Segments.ID), ONDELETE CASCADE
  • StatusID : INTEGER, FOREIGN_KEY(Statuses.ID), ONDELETE SET NULL

実装

実装のしやすさで言えばRailsが群を抜いている。その理由は以下である。

  • 自分が単にRubyをよく知っているから。
  • TwitterRailsで作られているので、Railsに易しい。
  • 難しいがパターンに沿ったロジックは、プラグインやライブラリとして既に実装されている。
    • OpenID
    • OAuth
    • Twitter4R
    • タグ付け
    • etc.

実験

というか、誰かに作ってもらいたい(汗)

問題点

  1. Protectedな発言をどう扱うか。
    • Twitter側のパスワードを平文で保存していいのか。
    • Followers以外に見せていいのか。
  2. OpenIDを強要してしまう。

解決策

  1. OAuthを利用する事で回避可能
  2. OpenIDを持っていない人はProtectedの発言を扱えなくするとか?

まとめ

今回、Twitterの発言をSegmentとしてまとめるシステムを提案した。
自分で作成したSegmentをShareすることで広くその議論を通知できる。
他人の作成したSegmentをコピーすることで、それを自分用に編集し、コピー元にもフィードバックすることができる。
今後の予定は、誰かにこのシステムの事前チェックと実装をしてもらう事(笑)自分は開発をしてくれる人がいたら見守りたい。