perlでtwitterAPIからTLデータを取得してみた
※ 先日のnamba.pmで、ブログ記事にする許可を頂いたので書きました。
いつもコンテンツ力の高いツイートで楽しませてもらっている某職質王氏にインスパイアされて、perl鍋という、ミニハッカソン?みたいな勉強会で、twitterAPIを題材にプログラムを作ってみました。
コンテンツ力の高さ・・・それは言葉のセンスもさることながら、次から次へと脳から湧き出る脳内物質まかせに紡ぎ出される、怒涛の連続ツイートではないでしょうか。
ということで、連続ツイートをしている時の脳内の状態を数値化してみようと考え、ツイートしている時に出ている脳内の汁dopamineの出る速度を数値化してみました。
書いたコードはこんな感じです。
TwitterAPIから色々な人のTLを取得する方法は、Net::Twitter::Lite::WithAPIv1_1オブジェクトを使用し、user_timelineメソッドの引数'user_id'に対象の人のtwitterID番号を設定しメソッドを実行すれば、TLの内容が配列のリファレンスで取得できるのでそれをデリファレンスして使用します。
配列(リファレンス)の中身も、ハッシュのリファレンスが入った、複雑な入れ子構造になっているので、Data::Dumperで中身の階層と必要なデータ位置を確認してやる必要があります。
膨大な入れ子構造のままだと把握しにくかったので、今回は必要なデータ(ツイートされた時刻)だけ取り出して新たな配列に格納、それを基礎として色々処理しました。
TLをごっそり取得って、某職質王氏の提唱するネットストーキングを支える技術っぽいですね。
さて、このコードを使って色々な人の数値を測定し実験してみました。ちなみに汁速度の単位はnionと勝手に命名しました。
まずは、Perl入学式のP総裁の脳汁量
普通にtwitterを使っているとこんな感じでしょうか。
次に、リスペクトする面白エンジニアh先生の脳汁量
さすがですね。100 over、200 overもありますね。
最後に、このコードを書く動機付けとなった、職質王氏の脳汁量
連続ツイートの数が多いです。しかも、最高値、350 over?!コンテンツ力、凄い!
書いたコードの課題点
・変数や関数等の名前の付け方が適当すぎて、自分でもわかりにくい。元々、数カ月前に途中まで書いたコードの続きを作ったのですが、前書いたコードを自分で読んで、分かりにくかったのは問題。
・思いつくままにダーッと書いたコードなので、別のプログラムでも再利用したり、読みやすくする為に、いくつかのサブルーチンに分けた方が良いのかな?と思った。
->namba.pmで、「そもそも再利用しようとしてコードを分割し、成功した試しがない。コードは再利用も視野に入れて設計し予め小さな単位で書く意識が必要」と教えて頂きました。なるほどです。
最後に
・面識がほとんど無いのに、勝手にネタにしてすみませんでした。勝手にネタに使わしてもらったのに、快くブログ記事の許可を頂きありがとうございます。
※ twitterAPIで測定対象のツイートを取得し、3分以内のツイートを連続ツイートとみなし、速度を計測。
※※ 連続ツイート数が10を超えると、脳内がかなり危険なトランス状態に違いないという推測で、評価数値がぐんと上がる様にバイアスをかけてみました。