enjoy h@rmony!!とボーダーbot

65
ENJOY H@RMONY!!ミリオンボーダーbot 2015/6/12 @treby006

Upload: treby

Post on 07-Aug-2015

1.341 views

Category:

Entertainment & Humor


0 download

TRANSCRIPT

ENJOY H@RMONY!!とミリオンボーダーbot2015/6/12 @treby006

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について

ボーダーbotとは

● ミリオンのイベントボーダーを延々とつぶやいてくれるすごいやつだよ!○ 一時間前のボーダーと比較した値も計算

● コトがコトなのでこっそりやる(最重要)○ 技術は楽しいことにもいけないことにも使えるのです

2014年9月22日最初のツイート

2014年9月30日運用開始

当初の運用

● ごく初期はボーダーのみツイート○ 時速入れ始めたのは運用開始後1週間後くらいから

● 10分に1回ツイートしてた○ 今から考えると鬱陶しい。しかも1回のタイミングでボー

ダー・時速の2ツイートしてた。○ ツイート数がやたら多いのはその頃の名残です。

● 9th TOKYOにて知り合いのPに布教○ 最初の2, 3人のフォロワーさん方だったり

ゴールデンキャッスルからはワンセット

ボーダーbotの最近の構成

ボーダー調べるやつ

ボーダーDB

ファイル解釈してDBに格納するやつ

ツイートするやつ(ボーダーbot先生)

一時ファイル

(1)調べて書き出し (2)読み込み解釈、格納 (3)取り出し、ツイート

もろもろ定期実行

詳しくは

● 『Border botを支える技術』○ 2014年12月発行○ 調べてくるとこ以外の技術面を紹介

ENJOY H@RMONY!!とボーダーbot

ENJOY H@RMONYでの反響

● 異常とも言える反響○ 自分的KPIでは運用開始1年でフォロワー数4桁目指す、

というものだったが一瞬で達成……● ENJOY H@RMONY!!やばい

○ 担当アイドルへの愛にあふれてますね○ 個人的にはアホみたい(失礼)に担当走りまくる人が好き

● 海外のPにもリーチしてるっぽい○ アジア圏、北米方面○ アイマスコンテンツすげぇ

フォロワー数の推移

ツイート影響指標:普段の15倍

最も反響の大きかったツイート

まとめ

● ボーダーbot史上最大の反響● 「ボーダーbot」という名前が定着した

○ それまでは、「border bot」とか「Border bot」とか自分の中

でもブレがあった

● ツイッターやってるP達を煽りまくったという問題(噂)も……○ 批判が出てくる程には知名度が上がった○ なかった場合より結果的に枠が開いた?

ENJOY H@RMONY!!ボーダーbotの舞台裏

EH中のボーダーbot裏側での動き

● 技術的な課題○ どうやってボーダーを調べるか:普段はイベントトップの

み調べれば良いが、今回は……○ 上位報酬獲得者数(枠)という概念をどう既存システムに

盛り込むか○ 取り込んだ情報をどうやって伝えるか

● イベントが特殊すぎるため、さりげにいろいろと問題があった

どうやってボーダー調べるか

● 普段○ ページを取得→HTML(普通のページ)が返る→要素を

解析する(職人技)→ボーダーが何かを知る

● 今回○ このアイドルの情報が欲しいです><→JSON(扱いや

すいデータ)が返る→そのまま使う○ むしろ処理的には簡単になった

● やってみると意外と軽かった

どうやって既存システムに盛り込むか

● 普段○ 順位ごとに“border_”というprefixをつけて管理○ 10位ならborder_10、1200位ならborder_1200

● 今回○ “border_”というprefixつける運用はそのまま、順位が入

る場所にアイドルIDを入れて流用○ 未来ならborder_14、このみさんならborder_39○ 枠数用に“reward_rank”という要素を新しく追加

● これも重くはなかった

どうやってボーダーを伝えるか

● 主に140字との戦い:様々な懸案事項や思惑○ 必要な情報は何か○ 削って良い情報は何か○ 削ったことでわかりづらくならないか

○ 極力邪魔にならず、かつ有益な情報を届けるにはどうす

るか○ ボーダー高くないアイドルもフィーチャーしたい

● 今回一番チャレンジングだった部分○ 次に問題や事例を紹介(長いです)

素直に全てツイート

● 最初期の実装○ 既存コードとほぼ変わらず○ 3人ずつ、7回に分けてツイート

問題:素直に全てツイート

● さすがにスパムっぽい○ どう改善していくかの闘いの始まり○ 多くても半分くらいのツイート数に収めたい

● ただこれはこれで反響が大きかった

対応:ツイート数節約

● やったこと○ pt/時速をそれぞれ1000で割る

○ さらに、名前の最初一文字でアイドルを区別するように

した

● 1回のツイート数7→3まで削減

問題:ptを1000で割って表示

● 知識がないと分からない○ 1000で割られた値だという事前知識が必要

● いささか単調○ 全て同じフォーマットで表示しているので盛り上がりに欠

ける

機能:ボーダー上位陣をフィーチャー

● 盛り上げる工夫● ボーダー上位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を構成する複数処理を一つにまとめて実現

● 後にレイアウトを通常ツイートに統合● 枠が開いていく臨場感を演出

問題:ツイートが多すぎる

● 一度で4回以上のツイート○ せめて3回まで落としたい

対応:ツイート多すぎ問題

● ツイートを数珠つなぎにして文字節約○ Twitterのメンションなどに使われる機能を利用して一連

のツイートに関連を持たせる

ツイート群を一連のまとまりとして表示してくれる

(イベント告知やPixivイラストなどを再度上げるときによく使われる手法の応用 )

結果:ツイートを数珠つなぎに

● 全てのツイートに日時などのヘッダ情報が不要になった○ 最初のツイートに日時をつけていれば関連づくため

● 大幅な文字数の削減!

問題:上位アイドル以外目立たない

● ボーダーの絶対値が高くないアイドルは目立ちにくい○ 担当Pは見てておもしろくない

対応:上位アイドル以外目立たない

● 仮説:総ptは難しくても、単位時間あたりの伸びでは高くなりうるのではないか

● 注目ランキングの導入○ 単位時間あたりの伸びの高いアイドルを注目アイドルと

してフィーチャーするように

結果:注目(時速)ランキング導入

● 総ptが高くないアイドルも、取り上げることができるようになった

問題:ptの規模に起因する根本的な問題

● そもそも桁が億単位なので、それだけで9文字必要となる。○ さらに差分情報も勘案すると、安心できない

○ 1000で割って表示することで一情報あたり3文字は節約

できるが、限界が近づいている

それでもとうとう障害発生

対応:pt桁数に関する根本問題

● いくつかの仮説a. そもそもポイントを詳細に表示しなくても良いのでは

■ 上から4桁くらいで十分ではないか

b. ブレが激しい差分部分は適切に単位をつけてあげれば良

いのではないか

● →試してみた

Before After

結果: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!! 総括

総括

● ENJOY H@RMONY!!最後の大どんでん返しを上手く実況できていれば幸いです。○ 正直、最後の最後でGという単位が出てくるとは思わな

かったw● 走る人に対して枠数が広がりすぎたアイドルが

多かった印象○ このみさん200人以上走ってたんすよね……○ その点、爆死者のいない美奈子Pはすごい。

総括

● このみさんの最後の伸びは、実は特定時点での各アイドル順位別pt分布を見れば早い段階から予測可能でした。○ ガチで分析するなら見た方が良いけど、エンタメとしては、

今回のもので十分楽しめた(なら良いです)○ し、あまり行儀悪くしすぎるのも……ね。

● 何はともあれ、EHお疲れ様でした!!

Thank you!!