enjoy h@rmony!!とボーダーbot
TRANSCRIPT
About me
● treby○ 所属ラウンジ
■ 無名ラウンジ→音ノ木(にじいろ)→HHV(IMC9)→未所属→R-Gray○ 担当:馬場このみ
■ PSL4th(ミックスナッツ) 3位 エンドローラー● http://imas.gree-apps.net/app/index.php/event/145/flash/endroll/from/memories
■ IMC9 個人30位/HHVの皆様ありがとうございました!
○ ENJOY H@RMONY!! 死ぬかと思った■ まさかのこのみさん最激戦区■ 終盤になるにつれ「bot作ってる場合じゃねぇ」状態に■ EHを一番エンジョイしたのはこのみPだと思ってる
ボーダーbotとは
● ミリオンのイベントボーダーを延々とつぶやいてくれるすごいやつだよ!○ 一時間前のボーダーと比較した値も計算
● コトがコトなのでこっそりやる(最重要)○ 技術は楽しいことにもいけないことにも使えるのです
当初の運用
● ごく初期はボーダーのみツイート○ 時速入れ始めたのは運用開始後1週間後くらいから
● 10分に1回ツイートしてた○ 今から考えると鬱陶しい。しかも1回のタイミングでボー
ダー・時速の2ツイートしてた。○ ツイート数がやたら多いのはその頃の名残です。
● 9th TOKYOにて知り合いのPに布教○ 最初の2, 3人のフォロワーさん方だったり
ゴールデンキャッスルからはワンセット
ボーダーbotの最近の構成
ボーダー調べるやつ
ボーダーDB
ファイル解釈してDBに格納するやつ
ツイートするやつ(ボーダーbot先生)
一時ファイル
(1)調べて書き出し (2)読み込み解釈、格納 (3)取り出し、ツイート
もろもろ定期実行
ENJOY H@RMONYでの反響
● 異常とも言える反響○ 自分的KPIでは運用開始1年でフォロワー数4桁目指す、
というものだったが一瞬で達成……● ENJOY H@RMONY!!やばい
○ 担当アイドルへの愛にあふれてますね○ 個人的にはアホみたい(失礼)に担当走りまくる人が好き
● 海外のPにもリーチしてるっぽい○ アジア圏、北米方面○ アイマスコンテンツすげぇ
まとめ
● ボーダーbot史上最大の反響● 「ボーダーbot」という名前が定着した
○ それまでは、「border bot」とか「Border bot」とか自分の中
でもブレがあった
● ツイッターやってるP達を煽りまくったという問題(噂)も……○ 批判が出てくる程には知名度が上がった○ なかった場合より結果的に枠が開いた?
EH中のボーダーbot裏側での動き
● 技術的な課題○ どうやってボーダーを調べるか:普段はイベントトップの
み調べれば良いが、今回は……○ 上位報酬獲得者数(枠)という概念をどう既存システムに
盛り込むか○ 取り込んだ情報をどうやって伝えるか
● イベントが特殊すぎるため、さりげにいろいろと問題があった
どうやってボーダー調べるか
● 普段○ ページを取得→HTML(普通のページ)が返る→要素を
解析する(職人技)→ボーダーが何かを知る
● 今回○ このアイドルの情報が欲しいです><→JSON(扱いや
すいデータ)が返る→そのまま使う○ むしろ処理的には簡単になった
● やってみると意外と軽かった
どうやって既存システムに盛り込むか
● 普段○ 順位ごとに“border_”というprefixをつけて管理○ 10位ならborder_10、1200位ならborder_1200
● 今回○ “border_”というprefixつける運用はそのまま、順位が入
る場所にアイドルIDを入れて流用○ 未来ならborder_14、このみさんならborder_39○ 枠数用に“reward_rank”という要素を新しく追加
● これも重くはなかった
どうやってボーダーを伝えるか
● 主に140字との戦い:様々な懸案事項や思惑○ 必要な情報は何か○ 削って良い情報は何か○ 削ったことでわかりづらくならないか
○ 極力邪魔にならず、かつ有益な情報を届けるにはどうす
るか○ ボーダー高くないアイドルもフィーチャーしたい
● 今回一番チャレンジングだった部分○ 次に問題や事例を紹介(長いです)
機能:ボーダー上位陣をフィーチャー
● 盛り上げる工夫● ボーダー上位3人は素で表示
○ 「激戦区」という言葉が登場○ ptが1000で割られている旨も表記
● ツイートに通し番号を付与○ ツイート間の順番がわかるように
● ツイート数は4に……
対応:可奈可憐問題(Ruby)
● Before○ omit_name = name[0]
■ # name = ‘可奈’ → omit_name => ‘可’■ # name = ‘可憐’ → omit_name => ‘可’
対応:可奈可憐問題(Ruby)
● After○ omit_name = name == ‘可憐’ ? ‘憐’ : name[0]
■ # name = ‘可奈’ → omit_name => ‘可’■ # name = ‘可憐’ → omit_name => ‘憐’
● 超突貫修正
対応:枠開きのタイミングがわからない
● 上位報酬者数が増えたタイミングでお知らせ○ botを構成する複数処理を一つにまとめて実現
● 後にレイアウトを通常ツイートに統合● 枠が開いていく臨場感を演出
対応:上位アイドル以外目立たない
● 仮説:総ptは難しくても、単位時間あたりの伸びでは高くなりうるのではないか
● 注目ランキングの導入○ 単位時間あたりの伸びの高いアイドルを注目アイドルと
してフィーチャーするように
問題:ptの規模に起因する根本的な問題
● そもそも桁が億単位なので、それだけで9文字必要となる。○ さらに差分情報も勘案すると、安心できない
○ 1000で割って表示することで一情報あたり3文字は節約
できるが、限界が近づいている
対応:pt桁数に関する根本問題
● いくつかの仮説a. そもそもポイントを詳細に表示しなくても良いのでは
■ 上から4桁くらいで十分ではないか
b. ブレが激しい差分部分は適切に単位をつけてあげれば良
いのではないか
● →試してみた
結果:ptの単位を億表記に&時速単位付表示
● 文字数の大幅な削減○ 時速などの桁数によらずスケールする仕組みに。
○ 上位6名以外は思い切って時速表記を省略することにし
た:注目アイドルツイートで補完するイメージ
● 桁合わせや、アイドル名3文字まで表示できるようになった。○ 名前最初一文字じゃアイドルを識別しにくいという意見も
あった○ 読みやすさ大幅アップ
問題:ツイート略されすぎ問題
● ここまでの変更にて、パッとツイートを見た人が何を言っているのか分からない状態に○ 表記が略されすぎたり、数値の説明を省略したりしてい
る関係で読み方がわからないという意見も……
安定運用期(6/2〜)
● 億表記・ヒューマンリーダブル実装でようやく140字戦争に終止符を打てた
● 一旦、本家ボーダーbotから離れられた○ ボーダーbot観測所のEH対応など○ どのアイドルにどのくらいランナーがいるか
■ ちなみに、このみさんがやばそうなのはこの辺りで認
知
最後の週末対応(6/5)
● EHランナー向けに微調整● 枠開き時差分を時速(一時間前のptとの単純比
較)から枠開き前のptとの単純比較に変更○ 順位間のptの崖が見えるように
● 注目アイドル(時速)ランキングを廃止、全てのアイドルの時速を表示するようにした
● そして終焉へ
(4)
ボーダーbotのEH最終のシステム構成
ボーダー調べるやつ(EH特別版)
ボーダーDB
ファイル解釈してDBに格納するやつ
(EH特別版)
ツイートコントローラー
(枠開き・時間判定 )
一時ファイル
(1)調べて書き出し (2)解釈、格納
全て一連の流れで行うことで、ほぼリアルタイム通知を実現
botちゃん
(3)枠が開いているか、ツイートの時間かの判定を行う
(4)愚直にツイートする
(3)
まとめ
● 技術的にもENJOY H@RMONY!!でした● ENJOY H@RMONY!!を共に闘ってきたボー
ダーbotのコード最終形態(一部)○ 枠開き/定期ツイートトリガー(図の(3))
■ https://gist.github.com/treby/86b8c47f14df911addd7○ ツイッター投稿(図の(4))
■ https://gist.github.com/treby/76d2beab7e9dfdc5fa26
総括
● ENJOY H@RMONY!!最後の大どんでん返しを上手く実況できていれば幸いです。○ 正直、最後の最後でGという単位が出てくるとは思わな
かったw● 走る人に対して枠数が広がりすぎたアイドルが
多かった印象○ このみさん200人以上走ってたんすよね……○ その点、爆死者のいない美奈子Pはすごい。
総括
● このみさんの最後の伸びは、実は特定時点での各アイドル順位別pt分布を見れば早い段階から予測可能でした。○ ガチで分析するなら見た方が良いけど、エンタメとしては、
今回のもので十分楽しめた(なら良いです)○ し、あまり行儀悪くしすぎるのも……ね。
● 何はともあれ、EHお疲れ様でした!!