Edited at

シェルスクリプトは「バルス」に勝てるのか、体を張って確かめた!!(タニタ予告付き)

More than 3 years have passed since last update.

2016年1月15日。あの、伝説のクジラを呼び覚ます禁断の呪文「バルス」をTwitter民に唱えさせる映画、「天空の城ラピュタ」が放送された!

その騒動に乗じて戦いを挑むべく、アイツが立ち上がった。


シェルスクリプトは「バルス」に勝てるのか、体を張って確かめたい!

Twitter REST APIの真の実力を知らされぬまま、リンク先の記事に書かれたとおりの準備を行い、戦いに挑むシェルスクリプト。


このボクに任せてください!!!

上映開始前の19時30分、意気揚々とREST APIを10並列でぶん回すシェルスクリプトを仕掛けた。

barusu1.jpg


奇襲開始!!

不安の色を全くうかがわせないシェルスクリプト。そして上映時間に突入。

戦績は終わってから集計するため、シェルスクリプトもTwitterクライアント 小鳥男を使って一緒になってバルス祭りに参加。


上映終了。


「では、戦果を見てみましょう!」


そう言いながら、先程のプログラムで生成された大量のデータを捌き、1分当たりのツイート数の集計。


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にコピペしてグラフ化してみると……。

vs_barusu.png


「あぁ……、上映開始時点からもう収集の限界レートこえてますね……。」



解説

REST APIの検索エンドポイントを高頻度アクセス可能なアプリケーション認証で回した時の最大呼び出し頻度は2秒あたり1回(厳密には15分間に450回)まで。そして1回で取得できる最大は100ツイート。従って1分間に取得できる最大ツイート数は3000個なのだ。

barusu2.jpg


【追加企画】シェルスクリプトは「タニタ」に勝てるのか、体を張って確かめたい!

うなだれるシェルスクリプトに、スタッフが言った一言。


こうなることは想像できててさ、もう一つ軽めの対戦カードを組んでおいたから。やって♥


その対戦カードとは「タニタ」!!!


株式会社タニタ(公式)2016/1月14日17:27のツイート

「タニタ」が「バルス」を超えたら

1.破滅の呪文「タニタ」セット限定販売

2.ラピュタパンを作る

3.「君をのせて」体重計作成

超えなかったら社名を1日「バルス」にします。


タニタはこともあろうにこんな宣言をぶち上げていたのだった。


「何、他にも無謀な戦いを挑むやつがいたのか!!!」


途端に目が輝き出すシェルスクリプト。

tanita.jpg

そういいながら、19時30分にタイムスリップし(え?)、再び戦いを挑むシェルスクリプト!

上映が終わり、今度は「タニタ」の分間ツイート数を集計することに。


果たして結果は!?

vs_tanita.png

驚きの結果は、CMの後で


CM

たぶん世界唯一のシェルスクリプト総合誌「月刊シェルスクリプトマガジン」。毎月25日発売。

バルスに敗れたシェルスクリプト。果たして「タニタ」に勝つことはできたのか?気になる結果は、次回2016年3月号に、たぶん寄稿します。