2009/11/19


今日、TypePadが提供するMicroblogを作ってみた。
http://mattn.typepad.com/
とてもグラフィカルで、reblogもついててfavoriteもついててカッコイイのだが、これを見て最近twitterのBeta機能として盛り込まれているReblogボタンの存在に疑問を感じた。
twitter-reblog-button
twitterではこれまでRT(Retweet)する際にはユーザがRTという接頭語を入れ、さらにその前にコメントを付与してポストするのだけれど、実はこのボタン、押すとそのまま自動でRetweetされる。まぁコメントが入れれない訳なんですが、私が疑問を感じたのはそこじゃない。

「何故ボタンにしたのか」

私が思うにtwitterが起こした革命の一つが「テキストの可能性」へ着目した事だと思う。140字以内で、かつ太字に出来る訳でもアンカーを貼れる訳でもなく、かつ宛名をGUIで指定出来る訳でもない。単なるテキストだけで、宛先、タグ、評価、位置などを表しているのだ。昨今リッチコンテンツが流行する中、メインとなるコンテンツの入力は、twitterサービス開始当初と変わらずテキストエリアなのだ。
このテキストによる表現は、replyこそ当初から入っていたが他の物については誰が取り決めた訳でもなく、ユーザが勝手に始め、後追いでオフィシャルが機能追加していったのが実状だ。
そしてそれは今や明文化され、一種のルール(nanoformat/twitter-syntax)になっている。
microblogging-nanoformats · Microformats Wiki
http://microformats.org/wiki/twitter-nanoformats
Twitter Syntax · Microformats Wiki
http://microformats.org/wiki/twitter-syntax
なのになぜ、ボタンにしたのか...。テキストでの表現があってこそ、Greasemonkeyによる拡張や、他のサービス連携が発展したのだと私は思うし、twitter自身が例えば画像添付や自動処理なんてすべきじゃないとも思う。

サービスを面白くする要因は、サービスが提供する機能以上に、ユーザが作るコンテンツが重要なんだと信じているが、この自動化の流れはユーザが作る新たなルール(コンテンツ)を阻害する可能性もあると思う。
twitterのあるべき姿は140字のテキストエリアであって、ボタン一つでアクションを起こせる様な、流行に流される物じゃない。今後このRetweetボタンがどの様に機能していくか分からないが、コンテンツを作るのはサービス提供側じゃなく、ユーザなんだという部分を忘れないでいて欲しいし、これからのtwitterがそうある事を信じたい。
Posted at by



2009/11/14


amachangのtwitterタイムラインの奴をhttp.Getでやってみた。
早速 Go 言語を試してみる! - IT戦記

http.Get は何故か動かなかったので net.Dial を使った。

http://d.hatena.ne.jp/amachang/20091111/1257928890

こうかな?わかりません><
package main

import (
    "fmt";
    "json";
    "io";
    "http";
)

func main() {
  if r, _, err := http.Get("http://twitter.com/statuses/public_timeline.json"); err == nil {
    b, _ := io.ReadAll(r.Body);
    j, _, _ := json.StringToJson(string(b));
    for i := 0; i < j.Len(); i++ {
      data := j.Elem(i);
      fmt.Printf("%s: %s\n",
        data.Get("user").Get("screen_name"),
        data.Get("text"));
    }  
  }
}

今日、始めてGo触ってみたけど、重大な欠点を見つけた。
# vi twitter.go
コードかきかき...
# 8g twitter.go
うし!コンパイルだ!
twitter.go:7: imported and not used: net
おろっエラーだ
# vi twitter.go
直すぞ!直すぞ!
# !8
もっかいコンパイルだ!
bash: !8: event not found
><
言語仕様で、multiple-valueをちゃんとmultiple-valueで受けないといけないのが堅すぎる気がする。
pythonとかC++とか言われてるけど、私はluaなんじゃないかと思った。
Posted at by



2009/11/13


goを弄ってるといちいち8g(5g?)とか8l(5l?)とかでコンパイル、ビルドする手間が必要なんだけど、これってquickrun.vimの設定で便利になるんじゃないか?と思ったので設定した。
thincaさんバージョンのquickrun.vimを入れた後、vimrcで以下の様に記述する。
let g:quickrun_config = {
\  'go': {
\    'command''8g',
\    'exec': ['8g %s', '8l -o %s:p:r %s:p:r.8', '%s:p:r %a', 'rm -f %s:p:r']
\  }
\}
環境によっては8g/8lを書き換える必要があります。
あとは拡張子goのファイルで<leader>r(mapleaderを設定してなければ\r)で、コンパイル、リンク、実行までやってくれて、まるでスクリプト言語を書いている様な開発効率が得られる!

thinca++
Posted at by