2009-07-30
■ 広瀬香美ついコンで公開して騒動

流れとか追えてない人が多いので、だいたいこんなかんじ
- そもそもついコンというのは 2007 年の 12 月に発足した企画
- ついコン 1 が 2008 年 4 月、ついコン 2 が 2008 年 10 月公開 (半年ペース)
- ついコン 1 は @cheebow さんのサーバを借していただいて公開していたものだったので URL が比較的覚えやすいものではなかった
- 個人で twicom.info ドメインを取って、ドメインとサーバをついコン制作委員会に個人的に提供した
- 実は俺はついコンには参加しているけど、ついコン制作委員会には名乗り出ていない、ただのイチ参加者
- 2009 年 6 月から Twitter の参加者が爆発的に増えはじめたよね
- 最近参加の人はついコンとか知らんのだろうな的な発言から、チラホラ「ついコン 3 まだー?」的な待望論が各所でたまに聞かれるようになった
- 自分は制作委員会じゃないけど、ついコン 2 の公開前後で色々とウンザリする出来事に巻き込まれてたので、あんまり先導したくない
- 誰かやるって言うなら乗るけど
- ついコン以外の企画もやろうかとか、そういう話も各所からチラホラ
- ついコンだってどうせ誰もやるって言ってくれなきゃ進まない企画だからね
- なんか俺が所用で渡米中に広瀬香美が Twitter に参加したとか聞いて、盛り上がってるのを知る。「ふぁぼりんこ」とかあたり
- 帰国後、ちょっとまた楽曲でも作ってみたいなーとか思ったからそろそろ誰かついコン 3 とか言い出すのかなとつぶやいたみた
- やっぱ誰も言い出さない
- 誰か音楽がわかる人で、そういう企画とか仕切れる人いないかな。はっ、最近話題の広瀬香美!
- やっぱ誰も言い出さない
- 「ついコン 3 やりませんか?」という無茶振り。もちろんネタ
- やりませんか?というのは、仕切り (プロデュース) という意味。やってもらえるなんて期待なんかゼロ
- まぁまぁのふぁぼられ。ネタをネタと見抜ける人たち
- 味をしめて更に天丼。二度目、三度目
- これ以外にも色々 @kohmi したが、俺が広瀬香美に @ すると、広瀬香美は黙るというジンクスを発見
- まぁ、ただの偶然
- とは言え、replies のページはまず見てないことは間違いないだろうと感じた
- 広瀬香美がヒウィッヒヒーのテーマ作るから公開方法を教えてくれ的なことを言いだした
- そのタイミング、ジャストで見逃してたんだけど、何人かの「これはついコン 3 の流れか?」的な発言が目についた
- ああ、ついコン 3 って流れでおk? (なわけない) だろというノリでもう一度 (天丼的な意味で) ついコンをすすめる流れ
- 「決め手」が足りないので、ノリでサブドメイン切る。http://kohmi.twicom.info/
- 当初は「広瀬香美 ヒウィッヒヒーテーマソング公開予定地」というテキストぐらいしか書いてなかった
- 殺風景すぎるのでアルバムのリンクと広告をつけた
- @kentax がテーマソング公開用のイラストを Twitter に貼った。まず明らかにネタっぽいテイスト。というか @kentax はいつも適当にああいうテイストの絵をよく書く
- ちなみに 7 月あたま頃 @kentax が俺のイラストを書いた時の絵。ね、同じテイスト。
- 万が一 OK という話ですすんだとしても、こんな絵貼ったら間違いなく断られるだろwwと思いつつ、貼ったら面白いと思ったから追加した
- 「ついったーの上からつぶやいといて 「みなさんに、宿題です。」なんて聞かないで ついコン参加したほうがいいかもよ 絶好調 テーマソング ついコンに乗って 急上昇 テーマソング ついコンで公開したい ブレイク寸前 ついコン第 3 弾 私だけに Twitter Theme Song 歌ってほしいの」と、広瀬香美の名曲「ゲレンデがとけるほど恋したい」の替え歌も咄嗟に作って掲載
- こんなノリで広瀬香美が参加してくれるわけないだろ
- まぁ別に、言った通り「やってもらえるなんて期待なんかゼロ」だからいい
- 広瀬香美はネタをどこまで許容出来るのか、ちょっと見てみたいとかいう期待もあり、一応URL を広瀬香美に教えてみた。今迄の流れからして、どうせ確実にスルーされるだろうけど
- どうも和代ちゃん経由で広瀬香美に伝わった模様
- えー!!本気じゃないんだけどw
- でも、もし万が一おkなら広瀬香美すごい。今まで出した CD 全部買う!
- えー!!本気じゃないんだけどw
- 夜中に広瀬香美本人から初めて言及があった
- うん。そりゃそうだよね
- でもこの発言の時、ちょっと体調崩して横になっててリアルタイムに祭に参加出来ず
- 早朝に気付いて、一応のリアクション
- イラストを理由に広瀬香美さんの気分を損ねたとこまで把握した
- @kentax のイラストのテイストは否定的に捉えられてもしょうがないと思ったけど、悪意はないんだよな。表現の個性の問題で愛はあったと思ったから使ったんだけどな…
- 「愛があれば大丈夫」だと思った俺が間違いだった
- これは言うまでもなく、広瀬香美ファーストシングルのタイトル「愛があれば大丈夫」に絡めるために無理矢理書いてる
- ここまでで一連のネタは完結なんだけど、具合悪くてこれ以上のリアクション出来ず
- 今日になって、@kotoriko が広瀬香美のイラストを書いてたのを知って、@kentax のよりはかわいいからそれに差し換える
- ついでに、公開予定地ってなってたのを、その予定がなくなったので「ゲッダン☆」と書いておいた
- 広瀬さんをガッカリさせたというゲッダンね。こっちがガッカリしたとかそういうのはないから
- ついでに、公開予定地ってなってたのを、その予定がなくなったので「ゲッダン☆」と書いておいた
- しかしネタをネタと見抜けない人たちが多い
- そもそもついコンなんかやったってビタ一文儲かんない
- ドメイン費用とかサーバ費用とか持ち出しだけどそれすら回収出来ない
- そんなに儲かると思ってるなら誰か買い取ってくんねーかな。マジで
- ついコン批判にまで及んでるけど、ついコンのドメイン以下で俺が勝手にやっただけ。和代ちゃん釣れると爆発力すごい
素人がプロに対して礼儀知らずすぎじゃね?みたいな批判は甘んじて受けます。
しかし、それまでの流れから、どう見ても「どうせスルーされるに決まってるネタ」という前提がありますから、@ しても「目につくかつかないかの場所」なんですよね。便所の落書きやチラシの裏書きに「礼儀」なんてありますか。
うっかり「便所の落書きをネタじゃない場所まで昇華された」時点で、IP unreachable だったんで、あのネタページのまんまにして放置しときましたけど、別に「いやだ。」って言われて当然だと思ってるし、そう言ってもらえて良かったとも思ってますし。
「どうしてもやって欲しい」と思っているのならば、Twitter なんかで完結させずに、ちゃんとしたルートからご連絡を差し上げて、お願いのご挨拶にあがりますけど、そこまでしたって、大前提として、一円も儲からないし、個人のサーバのリソース食いつぶす要因になるから、ハッキリ言って損が出る。それなのに本気でお願いするはずがないでしょう。
いや、そうやって釣っておいて儲かってんだろうと嫌儲の人とかは思うでしょうけど、PV と CTR を算出していくらぐらい儲かったかは想像つくでしょう。ドメイン代すらペイできるはずもない。
本気で「儲かる」って疑ってんなら、ドメインとサーバとかマジで全部引き取ってくんないかな。
ついコン 3 以降やるってなったら、サーバの全面的提供を必須条件として。
2009-06-18
■ ケイレキ.jp でミリ秒とか出る

ケイレキ.jp とか使ってると、「キッカケ」などを更新した時に、ごくたまに「27ミリ秒前」とか出る。
ちょwwミリ秒てwwって話題になってるんだが、もうこの際、全ての単位をミリ秒にしたらいいんじゃないかな?と思ったので、そうする Greasemonkey スクリプトを書いた。
// ==UserScript== // @name keireki milli seconds // @description Count by milli seconds on keireki.jp // @namespace http://blog.livedoor.jp/nipotan/ // @include http://keireki.jp/* // ==/UserScript== (function () { var span = document.getElementsByTagName('span'); for (var i = 0; i < span.length; i++) { if (!span[i].className.match(/^(?:xcomment-)?published$/)) continue; if (!span[i].innerHTML.match(/(?:(\d+)日)?(?:(\d+)時間)?(?:(\d+)分)?(?:(\d+)秒)?/)) continue; var ms = ((RegExp.$1 - 0) * 24 * 60 * 60 * 1000) + ((RegExp.$2 - 0) * 60 * 60 * 1000) + ((RegExp.$3 - 0) * 60 * 1000) + ((RegExp.$4 - 0) * 1000); span[i].innerHTML = ms + 'ミリ秒前'; } })();
これを使うとこうなる。
実にばかげている。
2009-03-17
■ Twitter で人生が変わった、ついったーシンデレラの報道について

2009/03/16、NHK-BS1「きょうの世界」の午後 11 時台放送 (23:15 ~) 「Twitter 特集」に出てた、通称「ついったーシンデレラ」こと、石嶋未来さん (@woopsdez) が紹介されていた部分の文字起こし。
ナレーション (以下 ナ) : Twitter によって、「人生が大きく変わった」と話すのは、東京に住む石嶋未来さんです。Twitter を使いはじめたのはおよそ 2 年前。多くの人から瞬時に返信がもらえる Twitter は、既に生活の一部だと言います。
石嶋未来 (以下 石) : 話し相手がいない時に Twitter で「こんなことがあったよー!」…っていう風にする洞穴みたいな…。
ナ: 石嶋さんは当時、栃木県のデザイン会社でチラシを作っていました。仕事の愚痴を Twitter に書いていると、そのうち返信としてアドバイスが来るようになりました。
石: 仕事でこんなことがあったと。もう「本当にこの…怒りをどうしたらいいんだろう?」ってなってきたら、あの、大体同じぐらいの年齢で、同じ会社…あ、他の会社で勤めてる人が、こう…「そういう時は、こう、トイレで吐き出してくるといいよ。わーーって言って来い!」って言う人もいれば、女の人で、あの、もうちょっと若い子が「大変だったねー、今度飲みに行こうぜー!」って返してきたりとか…。やっぱり、打てば響く…みたいなところがあったので、多分、更にハマっていったんだと思います。
ナ: 石嶋さんが「Twitter ってどんなツールなんだろう?」とつぶやくと、こんな風に返信が付いていきます。コミュニケーションを重ねていくうちに、石嶋さんは、Twitter で知り合った仲間たちと、実際に会いたいと思うようになりました。
石: で、初めてオフ会に行って、彼等がすごい面白かったので、こんな刺激的なところに自分もいたい!と思って、就…仕事も決まってなかったんですけど (笑) 勢いで上京しまして…。
ナ: しかし、思い切って上京したものの、二ヶ月経っても仕事は決まりません。石嶋さんは、そうした苦境を Twitter でつぶやいていました。
石: Twitter でできた友達に、こう「就職先ないですか?」みたいに聞いてみたりしたら、友人の一人が「あ、うち募集してるけど来る?」って言うんで、「うん、行く!」って言って、そのまま就職も決まった。Twitter がなければ、東京に上京していることも、今の会社で働いていることも、今こうやって取材を受けることも (笑) なかったと思うので、Twitter によって人生が変わったと自負しています。本当に変わったと思います。
人生変わってよかったですね。
ちなみに、そんなシンデレラさん、2007 年 6 月に行なわれた、60 ~ 70 人規模のオフ会で偶然隣の席だったりして、名刺交換をさせてもらいました。その頃は、その栃木県のデザイン会社でお勤めで、とてもカラフルな名刺でした。
就職が決まった今は、白、黒、赤 3 色の非常にシンプルな名刺の会社でお勤めです。
でも、正直、
「私も石嶋さんみたいになりたい!なれる!」
みたいな勘違いをして、同じように無計画な上京などという軽率な行動に出る若者が後に続く恐れがあることをメディア (NHK) は認識してこれを放送したのか、そこが気になるところです。
こういう軽いノリで就職活動する人とかが増加していってしまうのは、採用する側としては、判断材料基準の揺らぎに繋がる可能性もあり、非常に由々しき問題です。
人を雇用するというのは、その人の社会生活のみならず、生活基盤全体までをも支えていくかどうか、その判断が求められた末の決断で、非常に繊細な問題です。
今まさに就職活動をされている諸君におかれましては、こういった甘い幻想を抱かせるようなメディアの報道に揺らぐことなく、しっかりとした将来設計のもとで、就職活動を継続されますように願います。
石嶋を採用した会社の中の人より。
2009-03-06
■ この人、自分のこと follow してくれてるのかな?を調べる bookmarklet

単純に doesfollow.com を利用。
あれ、この人…、と↑表題のような疑問を感じたら
1. ログインしている時に、その人のページとか発言のページに行く (例えば http://twitter.com/nipotan)
2. ざっと following のアイコン見る。うーん、自分のアイコンがいないよー、そりゃ、このひと 3,000 人近く follow してるしなー、自分を探すのが面倒だー
自分探しの旅に出なくてもいいんだよ
3. URL のところに
javascript:(function(){me=$('#profile_link').get(0).href.match(/([^\/]+)$/)[0];you=location.href.match(/twitter\.com\/([^\/]+)/)[1];location.href='http://doesfollow.com/'+you+'/'+me;})()
を貼るとわかる。
あー、remove されてるー。
2008-11-12
■ Twitter が壊れすぎ

発言の permalink が 200 返したり 404 返したり
#!/usr/bin/env perl use strict; use warnings; use LWP::UserAgent; my $ua = LWP::UserAgent->new; $ua->env_proxy; my %statuses = (); for (1 .. 100) { my $res = $ua->head('http://twitter.com/nipotan/status/1001782701'); $statuses{$res->status_line}++; } for my $s (sort { $statuses{$b} <=> $statuses{$a} } keys %statuses) { printf "%s ... %d\n", $s, $statuses{$s}; }
結果
404 Not Found ... 55 200 OK ... 45
404 のほうが多かったよ。
ひどい。
2008-09-19
■ ついコンまたやるよ

前回は色々事情があって急に告知サイトを作ったため、適当にやっつけで作った「マーク副社長」のやつでしたけど、今回は @kentax にちゃんと作ってもらいました。
現在はジャケット作者の皆様がカッコいいジャケットを作ってくれている段階です。
私は前回「水室にぽ介」で参加しましたけど、今回は別のネタで参加しています。ネタ公開はもう少し先までお待ちを。
一応、こちらで参加アーティストが一覧できますが、ここではまだ「未定」という扱いになってます。
とにかく、音は 10/8 予定で公開されます。
前回同様、インターネット上で配布されますので、今のところ CD での販売は予定されてません。
ディスクイメージをダウンロードして各自 CD 等に焼いたり、楽曲をダウンロードして携帯用プレイヤーに入れたりしてお楽しみいただけるようになると思います。
今回は前回にも増してバラエティに富んだ内容になってるので、乞ご期待。
2008-09-18
■ タイムラインの抜けが激しい原因がなんとなくわかった

今日、なんだか 10 分ぐらいタイムラインから抜けが発生する現象が頻発。
昔、別のところで「オレオレ Twitter クライアント使ってる」と書いたことがあったけど、そこで定期的に取ってきてるタイムラインが抜ける。
以前、API の返すフィードは、キャッシュがひどくて、since パラメータつけたら解決したとか書いたことがあったんだけど、とにかく、キャッシュ云々にかかわらず、一定時間ずっとタイムラインが抜ける。
「抜ける」というのは、具体的に言うと、friends_timeline.json を GET すると
[]
だけが返ってきて、friends_timeline.xml を GET すると
<?xml version="1.0" encoding="UTF-8"?> <statuses type="array"> </statuses>
だけが返ってくる。
でも、元気な時は全然普通に抜けずに timeline が取ってこれる。
しばらく原因がわからずに悩んでたんだけど、どうも、日本時間の今日、午前 10:00 頃に、8 分近く時計がズレたサーバが追加されたのが原因と想定されます。
そんな極悪な時間ズレのサーバが追加された台数まではわかりませんが、恐らく 1 台だけが悪さしているものと勝手に想像しています。
自分の環境では、API から返された値を DB に INSERT しているのですが、その中の、created_at パラメータが投稿日時で、それを DB に突っ込んでます。DB に突っ込んでいる時に同時に timestamp も突っ込んでいて、たまーに created_at のほうが timestamp より未来の時がありましたが、まぁ、せいぜい未来といっても 3 秒程度。それが、今日になっていきなりすごい未来のデータが返ってきたんだから困ったもんだ。
オレオレクライアントが API を叩く時は、DB に保存した最新ポストの日時を since パラメータに渡して。つまり、最新ポストより後のデータを取ってこようとしているので、最新ポストが未来の時刻だったりすれば、返ってくる値が当然空っぽなのはうなずける。
一応念のため、今日以降で、created_at が DB に insert した時の timestamp より未来なレコードを SELECT してみた。
ついでに、その誤差がどれぐらいなのかも一緒に出した。
mysql> SELECT created_at,
-> DATE_FORMAT(timestamp,'%Y-%m-%d %H:%i:%S') AS timestamp,
-> SEC_TO_TIME(
-> UNIX_TIMESTAMP(created_at) - UNIX_TIMESTAMP(timestamp)
-> ) AS diff
-> FROM timeline
-> WHERE created_at > '2008-09-18'
-> AND created_at > timestamp;
+---------------------+---------------------+----------+
| created_at | timestamp | diff |
+---------------------+---------------------+----------+
| 2008-09-18 00:12:46 | 2008-09-18 00:12:45 | 00:00:01 |
| 2008-09-18 00:25:53 | 2008-09-18 00:25:52 | 00:00:01 |
| 2008-09-18 00:39:14 | 2008-09-18 00:39:13 | 00:00:01 |
| 2008-09-18 01:39:35 | 2008-09-18 01:39:34 | 00:00:01 |
| 2008-09-18 01:53:21 | 2008-09-18 01:53:20 | 00:00:01 |
| 2008-09-18 02:10:31 | 2008-09-18 02:10:30 | 00:00:01 |
| 2008-09-18 03:17:11 | 2008-09-18 03:17:10 | 00:00:01 |
| 2008-09-18 04:05:53 | 2008-09-18 04:05:52 | 00:00:01 |
| 2008-09-18 04:11:03 | 2008-09-18 04:11:02 | 00:00:01 |
| 2008-09-18 04:46:14 | 2008-09-18 04:46:13 | 00:00:01 |
| 2008-09-18 05:07:09 | 2008-09-18 05:07:08 | 00:00:01 |
| 2008-09-18 05:19:54 | 2008-09-18 05:19:53 | 00:00:01 |
| 2008-09-18 05:43:42 | 2008-09-18 05:43:39 | 00:00:03 |
| 2008-09-18 06:18:58 | 2008-09-18 06:18:57 | 00:00:01 |
| 2008-09-18 06:35:05 | 2008-09-18 06:35:04 | 00:00:01 |
| 2008-09-18 07:05:03 | 2008-09-18 07:05:02 | 00:00:01 |
| 2008-09-18 07:20:43 | 2008-09-18 07:20:42 | 00:00:01 |
| 2008-09-18 07:21:20 | 2008-09-18 07:21:19 | 00:00:01 |
| 2008-09-18 07:24:24 | 2008-09-18 07:24:23 | 00:00:01 |
| 2008-09-18 07:31:20 | 2008-09-18 07:31:19 | 00:00:01 |
| 2008-09-18 07:39:17 | 2008-09-18 07:39:16 | 00:00:01 |
| 2008-09-18 07:41:41 | 2008-09-18 07:41:39 | 00:00:02 |
| 2008-09-18 07:51:23 | 2008-09-18 07:51:21 | 00:00:02 |
| 2008-09-18 07:54:16 | 2008-09-18 07:54:15 | 00:00:01 |
| 2008-09-18 07:57:09 | 2008-09-18 07:57:08 | 00:00:01 |
| 2008-09-18 08:04:10 | 2008-09-18 08:04:08 | 00:00:02 |
| 2008-09-18 08:06:46 | 2008-09-18 08:06:45 | 00:00:01 |
| 2008-09-18 08:10:35 | 2008-09-18 08:10:34 | 00:00:01 |
| 2008-09-18 08:18:53 | 2008-09-18 08:18:51 | 00:00:02 |
| 2008-09-18 08:18:54 | 2008-09-18 08:18:51 | 00:00:03 |
| 2008-09-18 08:27:02 | 2008-09-18 08:27:01 | 00:00:01 |
| 2008-09-18 08:28:16 | 2008-09-18 08:28:14 | 00:00:02 |
| 2008-09-18 08:35:00 | 2008-09-18 08:34:59 | 00:00:01 |
| 2008-09-18 08:35:39 | 2008-09-18 08:35:38 | 00:00:01 |
| 2008-09-18 08:49:57 | 2008-09-18 08:49:56 | 00:00:01 |
| 2008-09-18 10:13:36 | 2008-09-18 10:06:17 | 00:07:19 |
| 2008-09-18 10:26:37 | 2008-09-18 10:19:20 | 00:07:17 |
| 2008-09-18 10:27:06 | 2008-09-18 10:19:57 | 00:07:09 |
| 2008-09-18 10:34:02 | 2008-09-18 10:26:27 | 00:07:35 |
| 2008-09-18 10:35:33 | 2008-09-18 10:29:33 | 00:06:00 |
| 2008-09-18 11:24:02 | 2008-09-18 11:16:34 | 00:07:28 |
| 2008-09-18 11:31:29 | 2008-09-18 11:24:39 | 00:06:50 |
| 2008-09-18 11:49:21 | 2008-09-18 11:41:52 | 00:07:29 |
| 2008-09-18 11:50:20 | 2008-09-18 11:43:15 | 00:07:05 |
| 2008-09-18 11:53:49 | 2008-09-18 11:46:23 | 00:07:26 |
| 2008-09-18 12:05:26 | 2008-09-18 11:57:58 | 00:07:28 |
| 2008-09-18 12:11:52 | 2008-09-18 12:04:50 | 00:07:02 |
| 2008-09-18 12:12:59 | 2008-09-18 12:05:34 | 00:07:25 |
| 2008-09-18 13:01:02 | 2008-09-18 12:53:34 | 00:07:28 |
| 2008-09-18 13:24:50 | 2008-09-18 13:17:35 | 00:07:15 |
| 2008-09-18 13:28:18 | 2008-09-18 13:21:23 | 00:06:55 |
| 2008-09-18 13:32:02 | 2008-09-18 13:24:25 | 00:07:37 |
| 2008-09-18 13:36:52 | 2008-09-18 13:30:28 | 00:06:24 |
| 2008-09-18 13:46:36 | 2008-09-18 13:39:08 | 00:07:28 |
| 2008-09-18 13:49:42 | 2008-09-18 13:42:08 | 00:07:34 |
| 2008-09-18 14:00:27 | 2008-09-18 13:53:17 | 00:07:10 |
| 2008-09-18 14:10:32 | 2008-09-18 14:03:29 | 00:07:03 |
| 2008-09-18 14:13:48 | 2008-09-18 14:06:34 | 00:07:14 |
| 2008-09-18 14:30:36 | 2008-09-18 14:23:18 | 00:07:18 |
| 2008-09-18 14:32:05 | 2008-09-18 14:25:07 | 00:06:58 |
| 2008-09-18 14:55:26 | 2008-09-18 14:48:13 | 00:07:13 |
| 2008-09-18 15:07:55 | 2008-09-18 15:00:16 | 00:07:39 |
| 2008-09-18 15:24:08 | 2008-09-18 15:16:32 | 00:07:36 |
| 2008-09-18 15:27:17 | 2008-09-18 15:19:36 | 00:07:41 |
| 2008-09-18 15:37:01 | 2008-09-18 15:29:31 | 00:07:30 |
| 2008-09-18 15:53:15 | 2008-09-18 15:46:02 | 00:07:13 |
| 2008-09-18 16:27:17 | 2008-09-18 16:19:47 | 00:07:30 |
| 2008-09-18 16:41:23 | 2008-09-18 16:33:49 | 00:07:34 |
| 2008-09-18 17:04:06 | 2008-09-18 16:56:30 | 00:07:36 |
| 2008-09-18 17:16:04 | 2008-09-18 17:08:33 | 00:07:31 |
| 2008-09-18 17:54:58 | 2008-09-18 17:47:19 | 00:07:39 |
| 2008-09-18 17:55:13 | 2008-09-18 17:47:56 | 00:07:17 |
| 2008-09-18 17:57:33 | 2008-09-18 17:50:23 | 00:07:10 |
| 2008-09-18 18:15:00 | 2008-09-18 18:07:21 | 00:07:39 |
| 2008-09-18 18:43:40 | 2008-09-18 18:36:22 | 00:07:18 |
| 2008-09-18 18:49:18 | 2008-09-18 18:41:48 | 00:07:30 |
| 2008-09-18 19:05:43 | 2008-09-18 18:58:11 | 00:07:32 |
| 2008-09-18 19:33:35 | 2008-09-18 19:26:13 | 00:07:22 |
| 2008-09-18 19:50:13 | 2008-09-18 19:42:43 | 00:07:30 |
+---------------------+---------------------+----------+
79 rows in set (0.03 sec)
午前 10:00 以降、この 7 分以上の差がある未来を since パラメータとして渡して API を叩けば、当然、
「は、そんな未来より後のデータ?あるわけねーだろ!」
となり、空っぽの結果が返ってきます。
とりあえず、API を叩く時の現在時刻より前に post された日時だけを since パラメータに渡すことで、なんとなく解決しました。
つか、Twitter はホントにひどい。
サーバの時計ぐらい合わせてくれ。
2008-07-29
■ Web::Scraper で全ての following/followers の screen_name を取得する

Twitter が SPAM アカウント削除施策とかをやりまくってるせいなのか、あまりに「バキニゲ」を連呼したりして remove されたせいなのか、following と followers の数が何もしてなくても結構変動してしまうことがある。
なので、following とか followers の差を取って、follow してくれてるのにこちらからしていない人を follow したり、こちらから follow しているのに相手から follow されてない人を remove したりとかを、たまにやっている。
- http://twitter.com/statuses/followers.json
- 自分を follow してくれている人を取る API
- http://twitter.com/statuses/friends.json
- 自分が follow している人を取る API
これとかを使えば良いんだけど、一回のリクエストで remaining_hits (API 回数制限) を消費してしまう。しかも API のクセに paginate するからツライ。それに、別に screen_name ぐらいしか必要ないのに色々な情報を返してくれるのも実に無駄。こんなことのために、ベホマズンを使いまくるほどの消費っぷりは嫌だから、WWW::Mechanize と Web::Scraper を使って、following とか followers の screen_name のリストを取ってくれば良いんだということに気付いた。
こういう DIY なら消費 MP 0 で済む。
まずは、自分を follow してくれている人を取る。
#!/usr/local/bin/perl use strict; use warnings; use WWW::Mechanize; use Web::Scraper; use URI; my $mech = WWW::Mechanize->new; $mech->agent_alias('Mac Safari'); $mech->get('http://twitter.com/'); $mech->submit_form( form_number => 2, fields => +{ 'session[username_or_email]' => 'username', 'session[password]' => 'password', }, ); my $s = scraper { process 'tr.vcard > td.thumb > a', 'screen_names[]' => sub { $_->attr('href') =~ m{([^/]+)$}; }; process 'div.pagination > a[rel="me next"]', next => '@href'; }; my @screen_names = (); my $url = URI->new('http://twitter.com/followers'); while (1) { warn "fetching: $url\n"; $mech->get($url->as_string); die $mech->res->status_line unless $mech->success; my $res = $s->scrape($mech->content); push @screen_names, @{$res->{screen_names}}; last unless $res->{next}; $url->path_query($res->{next}); } print "$_\n" for sort @screen_names;
途中でクジラが出たりしなければきっとうまくいく。
逆に自分が follow している人を取る。
これは、驚いたことに、上記の
my $url = URI->new('http://twitter.com/followers');
の行を
my $url = URI->new('http://twitter.com/friends');
にするだけで動く。
それぞれの標準出力をファイルとかにリダイレクトして diff 取れば、誰を (follow|remove) し忘れているかがきっとわかるはずさ。
% diff -U 0 following.txt followers.txt
とかすれば、follow し忘れてる人に + がついてて、remove し忘れている人に - がついてるよ。
アイツめ!いつの間にか俺を remove しやがったな!とかに気付いても恨みっこナシだよ!
落ち込んだり、攻撃したりしたらダメ!絶対!!
2008-07-28
■ Twitter の API

前に Twitter が瀕死状態で、一時間あたりの API 回数制限が 30 になった頃、2,000 人も follow しているとログの取りこぼしばっかりだった。
ここ最近、自分の観測範囲 (約 2,400 人 follow している) では、24 時間の間で、2 万強のつぶやきが取れるのに、3 割程度のつぶやきを取りこぼしてて、14,000 強程度しか拾えない。
で、自分の中で Twitter 離れが起きて、DIS りはじめた頃、ある日いきなり一時間あたりの API 回数制限が 100 になった。
俗に言う KIH ((K) 急に (I) 一時間 (H) 100 回) である。
一応、ログ収集は cron で毎分動かしてて、実行時に rate_limit_status を見て頻度を調整していたんだけど、それだと 1 時間 60 回の壁を超えられないし、60 回だと発言が多い時間帯の取りこぼしが多く、一日あたりトータルで 1 割程度のつぶやきを取りこぼし、18,000 程度しか拾えてなかった。
ここ最近の制限は 1 時間に 100 回だから、つまり 36 秒おきに API を叩ける。
(ちなみに実際は follow とかを API 使って行なった場合、それも一回とカウントされてしまうから、自動 follow し返しとかやってる自分には、follow されすぎた時間帯は timeline 取得の API 実行回数が減る)
妙に頻発する取りこぼしが気持ち悪すぎるし、取りこぼした発言にすごく貴重な発言や、自分への発言が含まれてたりすると超嫌で、取りこぼしたくないと常々思っていたので、cron はやめて、プロセスを常駐させ、タイマーで動かすようにすれば取りこぼしが減ると思った。
で、実装してみて気付いた。
http://twitter.com/nipotan/statuses/869463516
hourly_limit が 100 だから 36 秒に一回 friends_timeline.json を GET してみたが、返ってくる JSON は 3 分ぐらいキャッシュされてる。つまり 180 秒ぐらい時間を置かずに頻繁に GET しても無意味。
何度も試して気付いたのは、friends_timeline.(xml|json) のレスポンスは、3 分間キャッシュされるという事実。
つまり、36 秒に一回とかいう頻度で timeline を取って来ても、180 秒に一回という頻度で timeline を取って来ても、結果は一緒。
実装を変えてから気付いたからショックが大きかった。
回避策として
http://twitter.com/nipotan/statuses/869464183
ちなみに XML と JSON でキャッシュが別々のようだから、交互に GET すれば 90 秒おきぐらいに新しい timeline が取得出来るかも知れない。
というアホな回避策にも気付いたが、結局取りこぼすであろうことにかわりはない。
そう言っていると id:cheebow さんが Twit でやってるという回避策として、URL にユニークな文字列をクエリにしてつけるとキャッシュされないかも知れないという情報を教えてくれた。
早速、リクエストに、friends_timeline.json?年月日時分秒μ秒 みたいな数字をくっつけてやってみた。
でもやはりキャッシュされてしまう。JSON だから?と思って XML にしてみたもののやっぱりキャッシュされている。
Twit が実際どうかと思ったので、ローカルの (キャッシュしない) proxy経由で Twit を使ってみたら、やはり同様に日時を末尾につけているんだが、3 分保持されているキャッシュを返されている模様。
だから、もしかしたら Twit でも 3 分に一回しか最新が流れてこないのかも知れない。
ここで API ドキュメントを見てて気付いたのは、since パラメータを渡すとどうなるかということが気になった。
で、実際に試してみた。
こっちで持っている最新の発言の日時を、HTTP Date の
Wed, 23 Jan 2008 04:56:07 GMT
こんなような形式で渡す。
HTTP の If-Modified-Since と同様な感じ。だから timezone は GMT 固定。
$datetime->set_time_zone('UTC'); $datetime->strftime('%a, %d %b %Y %H:%M:%S GMT');
みたいに。
クエリとして渡す時はちゃんとエスケープしてあげる
friends_timeline.json?since=Wed%2C+23+Jan+2008+04%3A56%3A07+GMT
そして、これで、指定した日時より後 (その日時は含まれない) の追加分のみ (最大 20 件) を取得することが出来る。
36 秒に一回だと、少ない時は、2、3 ぐらい。多い時で 12 ~ 15 ぐらいの発言が一度の API で拾える。
よく見たら、これで取りこぼしが皆無になった。
since パラメータがこんなに便利だったのに、全然知らなかったよ。
何か損した気分!
2008-07-03
■ しばらく発言が保存されなかった件

なんか、どうも俺以外にそんなんなってた人いなかったような気がするんだけど、これはもうダメかもと思ったね。
昨日 Twitter を猛烈批判して、本格的に他のサービスに移行しよう的な呼び掛けをしてたんだけど、こりゃ本格的に移行せざるを得ないなって思わされる挙動。
とりあえず、最初はこんな画面ね。
いや、これでも 30 個ぐらいの発言は消失していると思う。
別の発言をしてみると
さっきのが消えてるの。
でも、さっきのってのは、俺が手で消したわけではない。
その証拠に、permalink はきっちり残ってるんだよね。
Wassr と、Jaiku と、nowa (と、あとログが残らないけど Frepa も) にマルチにポストしているから、Twitter のログがどれだけ消失しているかは、他のサービスのログと見比べてもらえればわかると思う。
Wassr で、この 1 日の間に 73 人から購読されている流れを見ると、本格的に Wassr 移行祭りが始まっているように見えるんだけど、マジで移行したほうがいいんじゃないかな。
あと、個人的にはなるべく follow し返さない方針だけど。互換 API を謳っているところだと nowa もあるし、Twitter はそろそろ干されるべきだと思う。
あと、IM じゃないクライアントが欲しいね。
ついでに、Wassr 移行祭りで「follow 返し」みたいなのをするのが面倒な人は、これをやってみるのも手だよ。
たまにコケるけどね。





nipotanさんには悪いですが、あさんと同じく『後出しのいい訳』にしか見えません。
広瀬さんが(現在Twitterでたむろしている大多数と比べ)それ程webの文化に明るくないだろう事は彼女のpostから容易く想像がつくでしょう。仲間内のノリで、文化の違う相手に失礼と捉えられない態度を取った訳ですから、nipotanさん及び悪乗りした連中に非があるのではないですか。
なお、採算が取れるかどうかと、広瀬さんへの呼びかけがネタかどうかは無関係でしょう。
今回の話は"素人がプロに対して礼儀知らずすぎ"だったのではなく、"異文化の人間に対しそれを考慮しない、相手に失礼な態度を取ってしまった"という事でしょう。
「ネタで」、「ノリで」って言い訳がましいんだよ、クズw
結果的に、明らかに文化の違いを押し付けましたね。
反省しています。
だからバチが当たった。それが3日前。
せっかく作ったサイトも消えてしまったわ。
ロマンスの神様、そういうことでしょうか。
ただパロったっていうよりは似た匂いがするなと思って。
nipotanさんもある意味有名人なので、
僕はそういうことになってしまったのかなって思いました。