SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
BELIEVE MY DRE@M!!と
ミリオンボーダーbot
2016/5/9 @treby006
About me
● treby
○ PSL4(ミックスナッツ) 3位・戦国復刻イベ 7位
○ ラウンジ : R-Gray / 一周年おめでとうございます!
○ 過去お世話になったラウンジ
■ 国立音ノ木坂学院 : 〜2015/04
■ HHV(仮) : 2015/04 IMC10(このみさんIMC)
○ BMDはこのみ莉緒昴の3枚取り
■ ランナー分布で煽ってたせいか (自意識過剰かもですが )ボーダーぬるいことがバレた。それ
で他の方が流れてきて、最後崖がない分布になってて泣きそうだった。特に昴。
ミリオンボーダーbot
● 爆死体験(つらい)から作り始めたミリオンのボーダーbot
○ 2014年10月くらいからこっそり運用
● ENJOY H@RMONY!!で一気に知名度が上がる
○ 『ENJOY H@RMONY!!とミリオンボーダーbot』
■ http://www.slideshare.net/treby/enjoy-hrmonybot
■ botちゃんの人気に嫉妬……!
● ミリオンというコンテンツを大事にしながらエンタメとして楽しん
でいただけることを目標にしています。
BMDダイジェスト
最終日サイト(mlborder.com)PV数 平常ピーク時の約30倍
ツイートのインプレッション 普段の20倍
拡散されたツイート
https://twitter.com/mlborder/status/727019539754414080
拡散されたツイート
https://twitter.com/mlborder/status/727044102324264961
拡散されたツイート(キャスト投票CP)
https://twitter.com/mlborder/status/726939224008589312
フォロワー数+1300
フォロワー数+1300
周年LIVEイベントはお祭り
● EHの時と大体同じ傾向。ミリオンPはお祭り好き。
● キャスト投票キャンペーンも重なり、盛り上がりがすごかった。
○ BMDで争い、キャスト投票CPで結束する同担当P
● ミリオンボーダーbotが一年のうち一番輝けるのが周年LIVEイ
ベント
○ 楽しみ、楽しませたい
裏側のお話
裏側のお話
● つよくてニューゲーム
○ 21人→37人
○ 画像の導入
● 503 Service Temporarily Unavailableとの戦い
● ランナー分布→誰でも情報を簡単に見られる世界線
● ボーダー観測の知見を生かした開発(キャスト投票CP)
● 次回以降の課題
○ 画像に添える文章で以下に上手く状況を伝えられるか
つよくてニューゲーム
● BMDのゲームモデルはENJOY H@RMONY!!(EH)のまま
○ 昨年の知見がそのまま生かせる
● データ取得、格納、枠開きの検知 → EHをほぼ流用
○ あわあわすることもなく冷静に対処
● 去年のそのまま、使えばいいじゃん♪
○ なんだBMD余裕じゃん♪
つよくてニューゲーム?
● さすがにスパムっぽい(1年ぶり2回目)
● EH21人→BMD37人(+16人)
○ 21人 …… 頑張って3ツイート
○ 37人 …… 頑張っても5ツイート
● EHと比べてそもそも対象アイドル数が増えた
○ 昨年の解決法が通用しなくなっている
21人→37人
● 140字制限ベースでの情報伝達(on Twitter)
○ 21人→なんとかごまかし3ツイートにまとめる
■ EHにおけるベストソリューション
○ 37人→???
■ もともと文字数絞っているので、削りようがない
■ とはいえ、一部のアイドルを削るわけにもいかない
● 情報網羅に文字を使うのを早々に脱却する必要があった
画像の導入
● ボーダーbot界隈で結構多く見られる実装
○ デレステ、デレマスなど
● まあ、うち(ミリオン)の場合はtext作ってImageMagickに食べさ
せているだけです。
○ アイドル色つけたかったけれど、今回できなかった
● BMD開始から10時間後に運用開始(がんばった)
画像の導入
画像の導入
● 個人的こだわりポイント
○ 横ではなく縦3列に並べるため、頑張って処理書いた(汚いし、意味間違ってそ
うなところありますが)
○ エミリーのその場しのぎ感……
画像の導入結果考察
● メリット
○ 伝えられる情報量に実質的に制限がなくなった
○ 工夫次第でどんな情報もいける
○ 複数ツイート→1ツイートに。スマート。
● デメリット
○ クライアントによってはいちいち画像を開く必要あり
○ データデータしすぎてしまう:楽しさが減る恐れ
EH→140文字との戦い
EH→140文字との戦い
● データを略したり(○万、○億のような形にする)、ツイートを数珠
繋ぎにすることで解決
● その手法は現在のボーダーbotに生かされています。
BMD→503 Service Temporarily Unavailableとの戦い
● 503:サーバがアクセスを処理しきれず、パンクしてしまった時
に起こるエラー画面
● ミリオンボーダーbotのサイト(mlborder.com)で発生
○ BMD前日(EHのボーダーページにアクセス集中)
○ 最終日付近(BMDのボーダーページにアクセス集中)
● 一部ページが重いため、アクセスが集中すると発生する
○ 元が適当に運用しているページというのもあり
● BMD:最大同時アクセス数235程度
BMD→503 Service Temporarily Unavailableとの戦い
503対策
● いろいろなサーバに入って再起動かける
○ ボーダーの時系列データ入れているところがネック
● 苦肉の策でメモリキャッシュ効かせるように
○ https://github.com/mlborder/borderbot-
rails/commit/2ee0049a6417771203c9a242b4b4e42e64f7d76f
○ 効果はあったが、キャッシュが効く前にアクセス殺到するとつらい
● 札束で殴る(サーバ課金)
○ HerokuのFree dyno(無料)からHobby dyno(有料)に切り替えた。
○ リクエストをサクサクさばけるようになった
BMD→503 Service Temporarily Unavailableとの戦い
● 端的には負けた
○ サイトはアクセス集中するとそれなりに落ちた
○ 残されたのは味気ないエラーメッセージだけ……
● 原因が推測レベルでしか考えられなかった
○ メトリクス見てボトルネックを特定して対策せねば
○ 今の自分では技術力が足りない
● 次までには精進してまいります……
今回の最大同時アクセス数
BMD新機能:ランナー分布の導入
● EH:かなりの反響
○ 一方でボーダー煽りすぎだろうというご意見も。
○ HHP型はボーダーが下がることのある特殊なイベント
○ ボーダーではなく最終開放枠数付近のptが大事
■ →ランナーの分布を可視化できるように
● あくまで上級者向け、ということでデータの提供に専念
○ それをもって○◯であるという見解は示さないように
○ エゴサで見つけたらRTくらいはしていましたが……
BMD新機能:ランナー分布の導入
● 駆け引きの材料を提供
● データ実は愚直にとってきています
● さくらのVPSの一番いいやつを借りて、10並列で取得
○ 500位までの全アイドルデータを大体4分ほどで取得
○ 一応お試し期間ということでサーバ費用はゼロ
● やんちゃしまくりなので、この作業は完全に手動で実行
○ 実際、土下座をする用意しかないです
● サイト的にはstatic fileを読む構成にしたので実は重くない
BMD新機能:ランナー分布の導入
● 把握できている範囲でもそれなりに使っていただけた模様
● CSVをダウンロードできるようにしたが、わざわざダウンロードさ
れる方は稀で、むしろWebのグラフをいじる方が多くおられる印
象。
○ DL機能は残しつつ、Webだけでもそれなりにしっかりいじれ
るようにすると良いかも。
ランナー分布の導入反響
キャスト投票キャンペーン
● CD&ボイスドラマキャスト投票キャンペーン
○ BMDとほぼ同じ時期にやっていたキャンペーン
● ミリオンボーダーbotとしての対応
○ 得票状況の推移を保存(ボーダー観測の知見応用)
○ 特設ページにて、得票状況を一覧できるように
○ 画像付きツイートで得票状況を発信
● 配信とかで使っていただいていた様子(恐れ多いです)
● 鬼みたいな速度で設計・開発・リリースする良い腕試し
【参考】トレンド計算ロジック
1) トレンドがあるかどうかを各役ごとに計算
【参考】トレンド計算ロジック
2) トレンドの種類で優先度をつけて、どのトレンドをツイートするかを決定。ツイートするトレ
ンドは同じ優先度内では完全にランダム。
【参考】トレンド計算ロジック
● トレンドの種類(A, B, Cの順で優先度高い)
○ A. 逆転(1位と2位の順番が入れ替わっている)
○ B. 猛追(2位が1位との票差を半分以上詰めている)
○ C. 独走(1位が2位の得票数の10倍以上稼いでいる)
○ C. 平行線(1位と2位の得票数の差が10票未満)
● 時間があればもう少し検証したかった部分
エンタメとしての課題
● 画像による情報伝達
○ 画像単体ではデータデータしてしまいがち
○ 画像に添える文字で何を伝えられるかが勝負
■ キャスト投票キャンペーンからの流れ
● 今回の最終的な形
○ 定時ツイート→順位変動を中心に載せる
○ 枠開き時→「崩落」などネガティブな情報しか載せられなかった
● 画像に添える文字情報を洗練することで実況を眺めているよう
な体験を目指したい。
まとめ
BMDのまとめ
● (EH)140字との戦い→(BMD)大量アクセスとの戦い
● 画像の導入:情報は伝えられるがいささかそっけない
○ 文字の部分でいかに楽しませられるか
● サーバの負荷問題
● ランナー分布の導入
● BMDはお祭り
○ 桃子先輩つよい
BMDがもたらした技術的革新
● 画像による情報伝達
○ 本質的な文字制限がなくなった
● ランナー分布
○ トライアルなので、定常運用とかは考えてないです。
● データのオープン化
○ 手軽にCSVをとれるような世界観。
● いずれもプロトタイプレベルなので、ブラッシュアップして取り込
めるものは取り込んでいきたいです……
今後のミリオンボーダーbot
● 運用の基本理念
○ ミリオンライブをもっと楽しく
○ やってて楽しいか、みてて楽しいか
○ 楽しさ大事
● ちょこちょこ球拾いしつつ、隙みて開発(希望)
○ データのオープン化なども進めたい
● ミリオンボーダーbotも次のフェーズへ!(希望)
○ 続けられる限りはお付き合いいただけますと幸いです
Thank you!

Contenu connexe

Plus de treby

Octocatは技術的負債の夢を見るか?
Octocatは技術的負債の夢を見るか?Octocatは技術的負債の夢を見るか?
Octocatは技術的負債の夢を見るか?treby
 
Shinjuku.rb #61 RubyKaigi2018予習
Shinjuku.rb #61 RubyKaigi2018予習Shinjuku.rb #61 RubyKaigi2018予習
Shinjuku.rb #61 RubyKaigi2018予習treby
 
The Art of Collaboration
The Art of CollaborationThe Art of Collaboration
The Art of Collaborationtreby
 
楽しく学ぶ?API
楽しく学ぶ?API楽しく学ぶ?API
楽しく学ぶ?APItreby
 
VueとdockerとAWSとチームとアイマスと私
VueとdockerとAWSとチームとアイマスと私VueとdockerとAWSとチームとアイマスと私
VueとdockerとAWSとチームとアイマスと私treby
 
アイマスハッカソン2017
アイマスハッカソン2017アイマスハッカソン2017
アイマスハッカソン2017treby
 
Sinatraで触れる生SQL
Sinatraで触れる生SQLSinatraで触れる生SQL
Sinatraで触れる生SQLtreby
 
Railsフロントエンドの modernizeにおける一事例 ~decaffeinateからES2015移行まで~
Railsフロントエンドの modernizeにおける一事例 ~decaffeinateからES2015移行まで~Railsフロントエンドの modernizeにおける一事例 ~decaffeinateからES2015移行まで~
Railsフロントエンドの modernizeにおける一事例 ~decaffeinateからES2015移行まで~treby
 
最近のRailsフロントエンド開発の紹介
最近のRailsフロントエンド開発の紹介最近のRailsフロントエンド開発の紹介
最近のRailsフロントエンド開発の紹介treby
 
たたかうFFI
たたかうFFIたたかうFFI
たたかうFFItreby
 
mastodon API
mastodon APImastodon API
mastodon APItreby
 
TH@NK YOU for SMILE!!とミリオンボーダーbot
TH@NK YOU for SMILE!!とミリオンボーダーbotTH@NK YOU for SMILE!!とミリオンボーダーbot
TH@NK YOU for SMILE!!とミリオンボーダーbottreby
 
Paperclip
PaperclipPaperclip
Papercliptreby
 
reading suture
reading suturereading suture
reading suturetreby
 
趣味から始めるWebスクレイピング
趣味から始めるWebスクレイピング趣味から始めるWebスクレイピング
趣味から始めるWebスクレイピングtreby
 
Osoji to-ban bot
Osoji to-ban botOsoji to-ban bot
Osoji to-ban bottreby
 
Why do I make bots
Why do I make botsWhy do I make bots
Why do I make botstreby
 
アイマス駆動開発 #shinjukurb
アイマス駆動開発 #shinjukurbアイマス駆動開発 #shinjukurb
アイマス駆動開発 #shinjukurbtreby
 
Heroku Buttonの紹介
Heroku Buttonの紹介Heroku Buttonの紹介
Heroku Buttonの紹介treby
 
Hubotで遊ぶ
Hubotで遊ぶHubotで遊ぶ
Hubotで遊ぶtreby
 

Plus de treby (20)

Octocatは技術的負債の夢を見るか?
Octocatは技術的負債の夢を見るか?Octocatは技術的負債の夢を見るか?
Octocatは技術的負債の夢を見るか?
 
Shinjuku.rb #61 RubyKaigi2018予習
Shinjuku.rb #61 RubyKaigi2018予習Shinjuku.rb #61 RubyKaigi2018予習
Shinjuku.rb #61 RubyKaigi2018予習
 
The Art of Collaboration
The Art of CollaborationThe Art of Collaboration
The Art of Collaboration
 
楽しく学ぶ?API
楽しく学ぶ?API楽しく学ぶ?API
楽しく学ぶ?API
 
VueとdockerとAWSとチームとアイマスと私
VueとdockerとAWSとチームとアイマスと私VueとdockerとAWSとチームとアイマスと私
VueとdockerとAWSとチームとアイマスと私
 
アイマスハッカソン2017
アイマスハッカソン2017アイマスハッカソン2017
アイマスハッカソン2017
 
Sinatraで触れる生SQL
Sinatraで触れる生SQLSinatraで触れる生SQL
Sinatraで触れる生SQL
 
Railsフロントエンドの modernizeにおける一事例 ~decaffeinateからES2015移行まで~
Railsフロントエンドの modernizeにおける一事例 ~decaffeinateからES2015移行まで~Railsフロントエンドの modernizeにおける一事例 ~decaffeinateからES2015移行まで~
Railsフロントエンドの modernizeにおける一事例 ~decaffeinateからES2015移行まで~
 
最近のRailsフロントエンド開発の紹介
最近のRailsフロントエンド開発の紹介最近のRailsフロントエンド開発の紹介
最近のRailsフロントエンド開発の紹介
 
たたかうFFI
たたかうFFIたたかうFFI
たたかうFFI
 
mastodon API
mastodon APImastodon API
mastodon API
 
TH@NK YOU for SMILE!!とミリオンボーダーbot
TH@NK YOU for SMILE!!とミリオンボーダーbotTH@NK YOU for SMILE!!とミリオンボーダーbot
TH@NK YOU for SMILE!!とミリオンボーダーbot
 
Paperclip
PaperclipPaperclip
Paperclip
 
reading suture
reading suturereading suture
reading suture
 
趣味から始めるWebスクレイピング
趣味から始めるWebスクレイピング趣味から始めるWebスクレイピング
趣味から始めるWebスクレイピング
 
Osoji to-ban bot
Osoji to-ban botOsoji to-ban bot
Osoji to-ban bot
 
Why do I make bots
Why do I make botsWhy do I make bots
Why do I make bots
 
アイマス駆動開発 #shinjukurb
アイマス駆動開発 #shinjukurbアイマス駆動開発 #shinjukurb
アイマス駆動開発 #shinjukurb
 
Heroku Buttonの紹介
Heroku Buttonの紹介Heroku Buttonの紹介
Heroku Buttonの紹介
 
Hubotで遊ぶ
Hubotで遊ぶHubotで遊ぶ
Hubotで遊ぶ
 

BELIEVE MY DRE@M!!とミリオンボーダーbot