はやみずです

timeline specに関して考えをまとめてみましたが

- 内部表現は emacs lisp の慣例に倣って定めるべき
- ユーザーが入力する省略表現としては "@hoge" などの表記はあり

というところです。

プログラムの内部表現として用いるには、今のtimeline specの表記はちょっと
場当たり的で拡張性に乏しいです。search はどうするの?とか2つのタイムラ
インをマージして表示したいときはどうするの?とかいう要求には応えられな
いでしょう。

timeline specによって折角タイムライン表示の処理が抽象化できるのであれば、
未知のものにも対応できるようなフォーマットにしておくべきであると思いま
す。なので、文字列によって定義されるのではなく、S式によって規定されるべ
きでしょう。ユーザーの入力以外からも、タイムライン表示の処理が呼び出さ
れることはありえるわけですから。

また今後、複数のタイムラインを別個のバッファで表示させるようにすること
を考えると

    ((timeline-spec . buffer) ...)

という assoc list で覚えておくという実装方法が考えられます。そうなると、
timeline specを操作する処理が少なからず発生するので、Lispで操作しやすい
S式で表現しておくほうが良いと考えます。

逆に、ユーザーが入力する省略表現は文字列によって規定されているほうが便
利だと思います。

内部表現としては、とりあえずの案としてこんなものを考えてみました:

- (user STRING): ユーザー名STRINGのタイムライン. STRING は文字列
- (public): public timeline
- (friends): friends timeline
- (replies): replies
- (list USER LIST): ユーザーUSERのリストLIST. USER, LISTは文字列
- (search STRING): STRINGをクエリとする検索結果
- (direct-messages): 受信したDM
- (direct-messages-sent): 送信したDM
- (merge SPEC1 SPEC2 ...): timeline spec SPEC1, SPEC2, ... が表すタイムラインをマージしたもの
- (filter REGEXP SPEC): タイムラインSPECからREGEXPにマッチするものだけを表示

このようにしておけば、例えば hoge さんと fuga さん...@で会話しているのを
抜き出すには

    '(filter "\\(@hoge\\|@fuga\\)" (merge (user "hoge") (user "fuga")))

のように書けます。

どうでしょう?



At Tue, 22 Dec 2009 12:09:44 +0900 (JST),
Tadashi MATSUO wrote:
> 
> 松尾です。
> 
> > USERNAME と USERNAME/LISTNAME はこれで問題無いと思いますが、replies と
> > かはもうちょい human readable なほうがよいように思います。Twitterのユー
> > ザー名は半角英数と_(アンダースコア)しか使えないので、: とか ! とか % あ
> > たりをプレフィックスにして、:public とかどうでしょう?
> 
> repliesとfriends_timelineについては一応、いくつか
> 理由を考えてました。
> 
> [replies]
> ・http://twitter.com/のUIで自分宛のtweetsを表示する
>   リンクが @USERNAME になっている
> ・いずれ、特定ユーザ宛のtweets取得用のAPIが用意
>   されるかも(searchによる実装もあり)
> ・その際、 @USERNAME で指定したユーザ宛のtweetsを
>   表示するなら、USERNAMEを省略したときはログイン中の
>   ユーザを対象とするのが自然
> 
> [friends_timeline]
> ・http://twitter.com/にログインしたときに最初に表示
>   される timeline なので、ホームディレクトリっぽい
> ・shell上では一般に ~ がホームディレクトリに展開される
> ・「特定ユーザがfollowしている人」というのも本質的には
>   LISTSと同等なのでいずれAPIでサポートされるかも
> ・サポートされたときは ~USERNAME とすれば自然に拡張できる
> 
> human readableかというと苦しいですが、よく使うものは
> 短くて想定される拡張に対応しやすい名前が良いと思い、
> @と~に設定していました。
> 
> hashtag timelineのspecとして #TAG を考えていましたので
> それとの見た目のバランスもあります。
> 
> public_timeline の方は適当なものが見つからなかったので
> -に特別な理由はありません。
> 
> > 個人的には curl を導入してSSLを使うのをおすすめします。curl を導入する
> > もう1つのメリットとして、良いバッファリング機構として働いてくれるため、
> > ネットが低速な環境でEmacsが固まることが非常に少なくなります。Emacsのネッ
> > トワークプロセスはゆっくり通信してると、通信している間中Emacsが固まって
> > しまうみたいです。
> 通信周りは鬼門みたいですね。
> 
> ただ、UNIX系なら外部コマンドを使うのが楽なのですがWindows
> では外部コマンドとの連携がしにくいです。(初心者には設定が面倒)
> 
> Emacs21以前用のurl libraryがありますので、これを
> url-for-old-emacs等のディレクトリとして同梱してEmacs21
> 以前の人はそちらにload-pathを通せば使える、というように
> するのはどうでしょうか。
> 
> http://packages.debian.org/lenny/w3-url-lisp
> こちらから取得したものを使うとEmacs 21.4でもwgetなしで
> icon表示ができました。
> (少し準備は必要ですが)
> 
> ---
> 松尾 直志 <t...@mymail.twin.jp>
> 
> ------------------------------------------------------------------------------
> This SF.Net email is sponsored by the Verizon Developer Community
> Take advantage of Verizon's best-in-class app development support
> A streamlined, 14 day to market process makes app distribution fast and easy
> Join now and get one step closer to millions of Verizon customers
> http://p.sf.net/sfu/verizon-dev2dev 
> _______________________________________________
> twmode-users mailing list
> twmode-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/twmode-users

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
twmode-users mailing list
twmode-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/twmode-users

メールによる返信