ミリオンライブ!キャスト投票のVisualization
キャスト投票の推移が面白い
アイドルマスター ミリオンライブ!では、「CD&ボイスドラマ キャスト投票キャンペーン」が行われています。
いわゆるシンデレラガールズでの総選挙とは違って、投票券がガチャで貰えるタイプ*1ではないため、Pたちの駆け引きが繰り広げられているようです*2。
駆け引きの起きる理由と、その動きについては次の記事などを参考にしてください。
こんな時はデータを眺めるに限りますね。
幸いデータはどなたかがTwitter botとして投稿してくださっていたので、それを利用します。
ミリオンキャスト選挙bot (@ml_castvote) | Twitter
「勇者」もつれ合う登り龍の如く
一番の注目は「勇者」役です。事実上「七尾百合子(H.N. lily_knight)」「望月杏奈(H.N. vivid_rabit)」のトップ争いです。
これを書いている時点で1位:杏奈(41,264票)、2位:百合子(41,055票)で得票差は209票です!
接戦の行方
接戦が続く「勇者」役と同じく、いくつかの役は数百票の差で1位争いが行われています。
- 「悪徳組長」役は、1位:木下ひなた(30,121票)、2位:徳川まつり(29,964票)で157票差。
- 「用心棒」役は、1位:福田のり子(16,537票)、2位:北沢志保(15,721票)で816票差。
- 「幼なじみ」役は、1位:所恵美(24,843票)、2位:佐竹美奈子(24,227票)で616票差。
- 「転校生」役は、1位:島原エレナ(14,765票)、2位:篠宮可憐(14,373票)で392票差。
- 「霊」役は、1位:北上麗花(21,231票)、2位:高山紗代子(21,027票)で204票差。
- 「四天王」役は、1位:松田亜利沙(18,947票)、2位:横山奈緒(18,872票)で75票差。
競っていると伸びるのか
まずは、役ごとの最大得票数の推移を見てみましょう。
最大得票数が多い役は、上記の得票差が少なく競っている役が多いです。 逆にトップが固まりつつある役は、最大得票数も落ち着いている傾向があります。
なお、「部長」「お嬢」も2位が追いすがっているのか、2位が逆転されたかつてトップだったのか、最大得票数が多いです。
アイドル別最大得票数
各アイドルが獲得した最大の投票数を並べてみました。
得票数が少ないアイドルについては、忸怩たる思いのPもいらっしゃるでしょうが、「今回は合う役が無いから、次回に向けてどんな役がいいか」など前向きに話している姿を見かけるなどして、かなり担当毎に傾向が違うようです*3。
今後の推移が楽しみですね。(私の投票行動は秘密です)
データ取得環境など
Elasticsearch 2.2.0 + Kibana 4.4.2
mapping
最初はnestedなデータ構造でindexを作成しましたが、Kibanaはnestedなデータを扱えないので、下のような構造にしました。
// nestedなmapping {"mappings": { "voting": { "properties": { "ranking": { "properties": { "vote": { "type": "integer" }, "name": { "type": "string", "index": "not_analyzed" }, "rank": { "type": "integer" } }, "type": "nested" }, "dateTime": { "format": "yyyy-MM-dd'T'HH:mm", "type": "date" }, "role": { "type": "string", "index": "not_analyzed" }, "id": { "index": "not_analyzed", "type": "string" } } } }}
//今回使ったもの {"mappings": { "voting": { "properties": { "rank": { "type": "integer" }, "dateTime": { "format": "yyyy-MM-dd'T'HH:mm:ss", "type": "date" }, "vote": { "type": "integer" }, "name": { "index": "not_analyzed", "type": "string" }, "role": { "index": "not_analyzed", "type": "string" } } } }}
curl -s XPUT myserver:9200/index_name -d @/path/to/mapping.js
Twitter Webページから取れる時間書式は悪夢だったので、data-timeというunix time値を取得しました。
なお、指定できるフォーマットはhttp://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.htmlを参照。日付と時刻の区切り文字'T'を指定するのにカンマを忘れて詰まりました。
JSONデータ
{ "dateTime": "2016-04-18T23:14:14", "role": "お嬢", "rank": 1, "name": "周防桃子", "vote": 447} { "dateTime": "2016-04-18T23:14:14", "role": "お嬢", "rank": 2, "name": "二階堂千鶴", "vote": 320}