2016年1月15日。あの、伝説のクジラを呼び覚ます禁断の呪文「バルス」をTwitter民に唱えさせる映画、「天空の城ラピュタ」が放送された!
その騒動に乗じて戦いを挑むべく、アイツが立ち上がった。
シェルスクリプトは「バルス」に勝てるのか、体を張って確かめたい!
Twitter REST APIの真の実力を知らされぬまま、リンク先の記事に書かれたとおりの準備を行い、戦いに挑むシェルスクリプト。
このボクに任せてください!!!
上映開始前の19時30分、意気揚々とREST APIを10並列でぶん回すシェルスクリプトを仕掛けた。
奇襲開始!!
不安の色を全くうかがわせないシェルスクリプト。そして上映時間に突入。
戦績は終わってから集計するため、シェルスクリプトもTwitterクライアント 小鳥男を使って一緒になってバルス祭りに参加。
上映終了。
「では、戦果を見てみましょう!」
そう言いながら、先程のプログラムで生成された大量のデータを捌き、1分当たりのツイート数の集計。
#! /bin/sh
cd kotoriotoko/APPS/barusu_search.sh.data
find RES -type f | #<全ファイルを開く
xargs cat | #
awk '/^2016/ {gsub(/[^0-9]/,""); # #<時刻行と
printf($0); # # ツイートIDを含むURL行のみ抽出し
next; } # # 1ツイート1列化
/^- http/{sub(/^.*\//,""); # #
print "",$0; # #
next; }' | #
grep -E '^[0-9]{14} [0-9]+' | #<ゴミ行を除去
sort -u | #<重複ツイートを除去
awk '{print $1}' | #<ツイートID列の除去
sed 's/[0-9][0-9]/& /g' | #<秒の桁も除去
sed 's/ //' | #
awk '{print $1,$2,$3,$4,$5}' | #
uniq -c | #<同分の数を集計
awk '{printf("%s/%s/%s %s:%s %d\n",$2,$3,$4,$5,$6,$1);}' #<時刻と数のデータに
結果をExcelにコピペしてグラフ化してみると……。
「あぁ……、上映開始時点からもう収集の限界レートこえてますね……。」
解説
REST APIの検索エンドポイントを高頻度アクセス可能なアプリケーション認証で回した時の最大呼び出し頻度は2秒あたり1回(厳密には15分間に450回)まで。そして1回で取得できる最大は100ツイート。従って1分間に取得できる最大ツイート数は3000個なのだ。
【追加企画】シェルスクリプトは「タニタ」に勝てるのか、体を張って確かめたい!
うなだれるシェルスクリプトに、スタッフが言った一言。
こうなることは想像できててさ、もう一つ軽めの対戦カードを組んでおいたから。やって♥
その対戦カードとは「タニタ」!!!
**株式会社タニタ(公式)**の2016/1月14日17:27のツイート
「タニタ」が「バルス」を超えたら
1.破滅の呪文「タニタ」セット限定販売
2.ラピュタパンを作る
3.「君をのせて」体重計作成超えなかったら社名を1日「バルス」にします。
タニタはこともあろうにこんな宣言をぶち上げていたのだった。
「何、他にも無謀な戦いを挑むやつがいたのか!!!」
途端に目が輝き出すシェルスクリプト。
そういいながら、19時30分にタイムスリップし(え?)、再び戦いを挑むシェルスクリプト!
上映が終わり、今度は「タニタ」の分間ツイート数を集計することに。
果たして結果は!?
驚きの結果は、CMの後で
CM
たぶん世界唯一のシェルスクリプト総合誌「月刊シェルスクリプトマガジン」。毎月25日発売。
バルスに敗れたシェルスクリプト。果たして「タニタ」に勝つことはできたのか?気になる結果は、次回2016年3月号に、たぶん寄稿します。