#june29jp

紅白歌合戦に関するツイートを20万件ほど保存して遊んでみたお話

2012-12-31

数年前に上京したときから、すっかりテレビのない日々に慣れてしまてしまっていて、また、ボンクレショ〜ガツは飛行機のチケットを取るのが大変なので北海道の実家に帰ることもなく、年末年始の特別番組とは無縁の生活を続けてきた。

しかし、今年、2012年は事情が少し違った。第63回NHK紅白歌合戦を観たかったのである。

かれこれ2年半ほど尊敬の眼差しを送り続けているゴールデンボンバー兄さんが出場する。ファンとしては、2012年の1月に「なんで2011年は紅白に呼ばれなかったんだ!」と叫び、もし呼ばれていたらこんな衣装でした、と「さよなら冬美」を歌った大阪城ホールでのライブを思い出す。

他には、きゃりーぱみゅぱみゅ先輩が出場する。ぼくは「もしもし原宿」のジャケット写真を真似してしまうほどの、ぱみゅ先輩の写真付きツイートはほぼすべてファブしてしまうほどの、ファンであった。

Untitled

さらに、石川さゆりさんの歌唱シーンの背景映像を、漫画家の荒木飛呂彦先生が担当するというではないか。

だが、冒頭に書いた通り、わたしの生活の中にはテレビがない。捨て猫みたいな俺達に、テレビを見る場所なんてもう何処にも無かった… Angel!

こうしてぼくは、ヴィム様のご厚意によって、紅白歌合戦を視聴するチャンスを掴んだのであった…!

当日のこと

紅白歌合戦の放映時間は、19:15から23:45までの4時間半である。これは、かなり長い。いくら今年のぼくの紅白熱が最高潮だとしても、270分もの間、黙って観賞を続けられるとは思えなかった。この270分は、せっかくの冬休みなので、自由研究の時間に充てようと思った。

そう考えて、紅白歌合戦の公式ハッシュタグである #NHK紅白 付きのツイートをひたすらフェッチして保存するスクリプトを用意しておいた。

いよいよ訪れたその日、ぼくはヴィム様のもとを訪れ「あのとき助けていただいた捨て猫です」と一礼し、せめてものお礼を、と思い、鍋をつくってふるまった。ふたりで食べた。

ツイートの収集

放送が始まった瞬間から、タイムラインの流速がけっこう早くて、おもしろいことになっていた。あまりにもツイートが多いとおかしくなるのか、Twitter さんがたまに変なレスポンスを返してきて JSON パーサが「だめです、パースできません!」とか言って死ぬときがあった。死因を特定しては、死を回避するような処理をスクリプトに追加して、少しずつ安定運用に近付いていった。

コンソールを流れるツイートのことは気にかけつつも、ふつうにテレビを観たり、雑談したり、鍋を食べていたりしたので、途中、スクリプトが死んでいることに気付かずに2〜3分ほどツイートを収集できていない虚無の時間帯を発生させてしまったのは失敗だ…

ほいで、ヴィム様にご指導を受けて、以下のようなシェルスクリプトを書いて、スクリプトが死んだら say してすぐに再実行、みたいな体制に落ち着いた。

収集したツイートの集計

案の定、ゴールデンボンバー兄さんときゃりーぱみゅぱみゅ先輩の登場を見届けたあと、だんだんと時間を持て余すようになったので、ツイート収集スクリプトを見守りながらも、並行して、ツイートの集計について考え始めた。

とりあえず、放送時間中の「盛り上がりチャート」みたいなものはつくりたくて、かつ、それを HTML として公開するところまでは勢いで済ませてしまいたかったので、そこをめがけて作業を進めた。

JavaScript のチャート作成ライブラリみたいなものは、いくつか知っていた。幸いなことにヴィム様がこのあたりに詳しかったので、何種類かのライブラリのデモページを見たあと、パッと「これにしよー」と言って Highcharts – Interactive JavaScript charts for your webpage を採用した。

Highcharts が受け取ることのできるデータフォーマットについて調べつつ、保存したツイートを集計するスクリプトの設計について議論を進めた。

ここが自然にペアプロの形になり、ぼくがドライバーとしてハンドルを握る横でヴィム様がナビゲーターを務めてくれて、とても楽しいドライヴになった。

ヴィム様は思考の速度が早いだけでなく、引き出しがとても充実している印象を受けた。ぼくは積極的に「ここでやりたいのは、こういうこと」を伝えるために紙にペンを走らせたり疑似コードを書いたりしてコミュニケーションをはかり、そうするとヴィム様は「C#だと、こういう方法を使うんだけど、Rubyだと?」「ここは、そろそろメソッドに切り出した方がいい」と、いい感じに導いてくれて、すごく楽しかった。

それから、ぼくが Emacs の操作でもたつくと「え〜?え〜??」と困った顔を見せ「そこを手作業でやっちゃいますか〜」「3手、私のVimなら3手だ」などと愛に満ちた檄を飛ばしてくださり、コーディング環境についても学びが多かった。

今回のような、おもちゃみたいなスクリプトを書くときにも、相手が素敵だと、とても充実したプログラミングタイムを満喫することができる。そんな満ち足りた心情をツイートにして吐き出していたら、まわりからも反応があった。

アラサーのみなさんも、そうじゃないみなさんも、ぜひペアプロしましょう!楽しそう!

そんなこんなキャッキャと過ごしている間に、いつの間にか新年を迎えていた。ハッピーニューイヤー、2013年!!!

成果物

こんな感じで、1分ごとのツイート数をチャート化してみた。

KOUHAKU Tweets

「全ツイート」の他にも「指定のアーティスト名を含む」を条件としてフィルタした場合の数を何種類か出してみた。

ツイートの JSON をゴロンと保存してあるので、たとえば「最もよくリツイートされたツイート」なんかも出せるし、色々と遊べそうではあるのだけれど、けっこういい時間になっていたので、ひとまずこの状態で公開し、ヴィム様に迷惑を掛けすぎる前に帰路に着くことを選んだ。

まとめ

数年ぶりに「NHK紅白歌合戦」を観て楽しんだ。ゴールデンボンバー兄さんに関しては直前の報道のこともあったりしてかなりドキドキハラハラしながら過ごしていたのだけれど、とてもいい感じにイベントを盛り上げていて、なんだか「ホッとした」ってのが感想だ。素晴らしいステージだった。

ツイートの収集から集計、チャート化まで、準備時間をあまり確保できなかったにも関わらず、けっこうスムーズに進められて楽しかった。たとえば大学院時代のぼくが取り組んでいたら「収集で失敗する」確率もけっこう高かっただろうし、保存の形式の設計や、集計スクリプトを繰り返し実行できるようにする工夫も、そんなに上手くいかなくて、今回の5倍くらいは労力がかかっていたと思う。「ちょっとしたことを上手くやれる」ようになると、今回みたいなお遊戯が、俄然、楽しくなる。ヴィム様みたいな人が隣にいてくれると、なおのことだ。ペアプロに夢中になりながらの年越しは初めてのことで、すごく楽しかった。

おもしろかったら、シェアやブックマークや送金などぜひぜひお願いします。サイト運営の励みになります!

シェアや送金などお待ちしています!