Help us understand the problem. What is going on with this article?

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

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月号に、たぶん寄稿します。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away