ホロライブ通知BOTを作成したキッカケや技術とか

雑記

gifなので強制再生です。美味しかったけど無くなってしまって辛い。

 

 

というわけで色々書いていきたいわけですが、気分転換がてら「私がホロライブYoutube登録・再生数通知BOTを作ったキッカケ」についてなぐり書きしていこうかと思います。構成は特に考えていません。

ホロライブ通知BOTって?

単刀直入に言うとコイツです。

ちょっとしたことがキッカケで生まれた私の大事なBOTです。

  • 動画再生数キリ番通知
  • 動画再生数ミリオンカウントダウン通知
  • チャンネル登録者数通知

などをやってくれるBOTですね。詳しくは後で話しますが、実装機能は意図的に絞り込んでいます。

そしてもう一つDiscord版の通知BOTも開発しました。

 

この画面は全通知まとめて見れる私専用のデバッグチャンネルです。うへへ。
利用者向けはタレント毎にチャンネルを分け、欲しい通知だけ得れるようにしていますね。

Discord版では、

  • 配信開始通知
  • 配信BAN通知
  • ホロライブ関係のニュース通知

などなど。

興味がある方は覗いてみてくださいね。コミュニティ機能は全部切ってます。

Join the Hololive Notice Server Discord Server!
Check out the Hololive Notice Server community on Discord - hang out with 229 other members and enjoy free voice and text chat.

ここからはBOT開発のキッカケから色々話していきます。

ホロ通知BOTを開発したキッカケ

ここで突然の肉テロ

ノンストップストーリー

まさにこれです。ノンストップストーリーでテンションぶち上げた結果、寝るにねれず自分に出来る推し事を考えることに。

その結果浮かんだのが通知BOTです。ヒントというより答えですが、先駆者様「にじさんじYouTube登録者数通知bot」のホロライブ版を作りたいということで、ノンストップストーリーが終わった翌日から開発し始めて1/27くらいに試作品完成。そのままTwitterのBOTを公開。今に至ります。

爆速で開発しなければならなかった理由

  • BOTを開発し始めたのが1/24
  • BOTを初公開したのが1/27

それではこちらのBOTツイートを見てみましょう。

推しの10万人達成に何が何でも間に合わせたかった。これが急いだ理由です。

BOTを完全自動化したあとの予期せぬトラブルやバグを早く見つけ出して潰したかったので速攻で開発・公開しました。

 

BOT開発の歴史

アマチュアの成長雑記。ほとんどツイート掘り起こし+コメントです。

初回リリース前

仕事スルーした模様(納期に余裕があったようです)

ホロ特化のytrankingは結局作りませんでした。

 

発表したのは稼働翌日です。

そしてホロライブYoutube登録・再生数通知BOTが誕生しました。

このときのBOTの仕様と現在のBOTの仕様を比較してみましょう。

初回版 最新版
チャンネル登録者数チェック 300秒ごと 10秒ごと
チャンネル登録者数予告チェック 未実装 10秒ごと
動画再生数チェック 1日5回。決まった時間にチェック 60~300秒ごとにチェック
動画ミリオン予告通知 未実装 60~300秒ごとにチェック

だいぶ強くなりましたね。

初回リリース後:クォータ増量に挑戦

この時点でのYoutubeのデータ取得は全てYouTube Data APIを使っていました。そのためYouTube Data APIのクォータ制限に悩まされていて増量申請することに。

実際は問題なかった模様。

初回リリース後はどれくらいの頻度で動画やチャンネルをチェックすればいいのかわからなかったので、頻繁にAPIリミット超過してBOTが止まってました。

こんな事を言っていたのが懐かしいですね。

今はだいぶ最適化しているので1万クォータあれば全動画1日7~8回くらいチェックできるんじゃないでしょうか。

ここからは審査待ちで2ヶ月くらい待たされたのを覚えています。

1/30~ 新機能開発

ベビースターラーメンを食べました

 

今では一番需要があるんじゃないかと勝手に思っている機能。初板は実装されてなかったのです。

多分数時間くらいで作成。

爆速でバグった模様

バグりながらもなんとか直せてたみたいですね。エライ

2/5 とっても嬉しい瞬間

嬉しくないわけがなかろう?

私自身にもフォロワーが多いとはいえず、認知させるのに困っていた中での引用リツイートは嬉しい限りでした(フォロワー倍増しました)。

2/5 クォータピンチ

なんでこうなってたのかはもう覚えていませんが、後日クォータ増量通らなかったらそりゃあもう焦っていたでしょうね。

 

ここからしばらくクォータ増量待ちで開発放置。

そしてバグを特定せず放置した結果↓

ついに通常稼働でクォータ上限に張り付くように。

現在は解消済みで使用クォータが急激に増えないようにしています。

3/16 近況報告

このときはまだフォロワー300人でした。懐かしいですね。

 

 

天津焼きそば久々に食べたいですね

3/19 ついに…

忘れた頃にYouTube API Quotaからのメールが…と思って開いてみるとクォータ増量承認メールが!

もうウッキウキですね。サル山に住めそうです。

3/20~ BOT改修開始

クォータ増量ですごく張り切っていたのを覚えています。

この日を境にBOTがものすごく強化されたのです。

ですがまだ最新版と比べるとチェック頻度が遅いですね。私のBOTはcronを使って実行してるのですが、プログラムは全くいじらず単純にcronでのチェック頻度を上げただけだったので、とりあえず適当にチェック頻度を上げたという感じですね。

クォータ増量申請に伴うBOT強化をしたのが3/20。

すいちゃんのとんでもない3D前夜祭が3/21。3D前夜祭の数時間後に「天球、彗星は夜を跨いで」が90万再生いったので嬉しかったのを覚えています。

3/22 新機能開発

この日当たりからとあることがキッカケで新機能の開発に当たります。

実はBOTはテスト環境を作っておらず、常に本番環境で開発しています。開発の仕事したことないですが、多分やっちゃいけないことでしょうね。ハイ。

ただし、cronでBOTを動かしてるので、BOTを動かしつつも動きを制御できるほか、デバッグ用のREST APIを用意すれば本番環境であっても処理を独立させられるので、そこまで困ってはいません。

そのため以下のような力技もBOTを一切止めずにできますね

多少パフォーマンスを犠牲にしますが、全然許容できるのでcron便利です。

 

そして開発完了。ミリオンカウントダウン機能を作成しました。

3D前夜祭直後に天球が90万再生に到達し、「後少しでミリオンだ!」ということをより多くの人に認知させたかったのがキッカケです。

ミリオン近づくとワクワクしますし、RT・引用RTで「みんな見て!」って推しを宣伝できるので結構役立ってるんじゃないかなぁと思ってます。

 

3/24 定期

バグ定期

これもバグ

 

レンタルサーバーの仕様は盲点でした。

バグを直すついでにチャンネルチェック頻度が最新版と同じ仕様になりました。

3/28 天球ミリオン達成の日

 

ミリオン通知を本番環境でテストできるほどミリオン動画がなかったので気が気でありませんでした。

この瞬間驚きのあまり心臓を止めました。上手く動いて本当に良かったです。すいちゃん本人も見守り配信枠をゲリラでとってくれていたので推しがとにかくめでたい一日でした。

4/11~4/12

配信中の枠も再生数をチェックできるようにしたいな~ということで、ついでにやりたいことを書き出し。

 

翌日実装。この時点でTwitter版BOTの新規開発はほとんど終わったことになります。

ホロスタホロIDもどんどん成長してほしかったのでホロスタ・ホロIDもTwitterで通知するように改良。RT・引用RTで宣伝して広める材料になってたら嬉しいな。

 

 

4/25 Discord版開発へ

TwitterBOTにやると機能載せ過ぎで使い物にならなくなる…ということでDiscrod版の開発に着手。

webhookで簡単に突っ込めるということで1日でぶっこみ試作。こちらはまた今度機会があればなぐり書きます。

6/2 フォロワー4桁へ

BOT運営から4ヶ月半。ついにフォロワー1000人。嬉しかったです。今後も毎秒使ってください。

 

BOT開発・運営の歴史というかツイートの垂れ流しはこんな感じでしょうか。今思うと結構長く開発してますね。我ながらよくやったものです。

よくやったので王将に行こうと思います

実装機能の選定の話

実はうちのBOT。実装機能を意図的に絞り込んでいます。

ホロライブ関連のBOTいえばほかに以下のBOTがありますよね。

こちらの「ホロライブ いろいろ通知bot」さんは、

  • チャンネル登録者数通知
  • ホロジュール変更通知
  • Twitter各種通知

がありますが、この中のうち「ホロジュール変更通知・Twitter各種通知」は意図的に実装していません。今後も実装予定はありません。

理由は以下の3つ。

  • Twitter BOTはYoutubeで活動するホロライバーのYoutubeのデータのみに絞り込んでツイート数を減らしている
  • 機能が多すぎるとツイートし過ぎてしまい、最初は便利だと思っていたBOTがうざくなってフォロー解除してしまう
  • 私のBOTはホロの数字に特化したBOTなので需要が異なる

簡単に言うと2つのBOTで需要が分かれており、Twitter各種通知とホロジュール変更通知が知りたい方は「ホロライブ いろいろ通知bot」、チャンネル登録者数や動画再生数などの数字データを知りたい方は私の「ホロライブYoutube登録・再生数通知BOT」をフォローしているということになります。

現に機能が重複しているチャンネル登録者数のツイートに関しては、フォロワー数に大きな差があるにも関わらず、ほとんどのツイートにおいてリツイートやいいねの量におかしな差があります。

通知設定できる程度にツイート数が多くならない機能しか実装していない&フォロワーターゲットを結構狙って絞り込んでいるため差があるのでしょう(通知速度の差や数字の心理的な影響もあるかもしれませんが)。

 

ホロライブ いろいろ通知bot」も私のBOTにはない機能があり、便利な人には便利だと思いますので覗いてみるといいかもしれませんね。

 

Discord版はチャンネル機能で通知量を制御&推しの通知だけ取得させることができるので機能を少し増やしていますが、こちらはまた別の機会にお話しましょう。

BOTがリプライを送らない・DMを受け付けない理由

リプライを送らない理由は2つ。

  • リプライを送ると通知が行く可能性がある
  • BOTは命令されたことを淡々とこなす無感情ロボットだと思っている

2つ目はただの性癖です。自分の手で生み出したBOT、いわゆる自作プログラムに感情があるのが解釈違いなので、手動のお知らせツイートも含めて感情をこめずにツイートしてます。

感情があるツイートはこちらのアカウントでやります↓

もう一つDMについてですが、理由は一つ。開発時やプロフィール更新するとき以外はBOTアカウントをTwitterクライアントで開かないので気づけないのです。そのためDMも受け付けないようにしています。何か伝えたいことあったらエリゼリ(@eli_eli_san)さんにお願いしますm(_ _)m

美味しいご飯も大歓迎です

Amazonほしい物リストを一緒に編集しましょう

BOTの運営費は?

ConoHa WING リザーブド1GBプラン1650円/月です。バチクソかかっているわけではありません。それでも年間2万弱近くかかるので安くはないですけどね。赤スパ2回分。

同スペックのVPSに移行したら月880円にできる見込みなので、暇見て移行したいなぁと思っているこの頃。流石にまとまった時間がほしいのでまだ着手できてません。

これを二食我慢したら3ヶ月分のサーバー代を賄えますね。

YouTube関連の開発で気をつけておきたいこと

ツール開発を頑張っている・BOT作りたいと思っている方向けに殆どの方がスルーしてやってしまいそうな利用規約周り+αのお話もしていきます。

ライセンス周り

YouTube Data APIで取得したデータは30日以上保持しない

利用規約ではYouTube Data APIで取得した生データを30日以上保持してはいけません。なおかつ、保持しているデータはできる限り最新のものを維持する必要があります。ただし、チャンネル所有者に個別に許可をとった場合は、許可をとったチャンネルのみ30日以上のデータ保持が認められます(加工した場合はこの限りではありませんが、別の規約が関わってきます)。

私は個別に許可をとっていないので30日の制約が適用されます。というより生データは直近分さえあれば十分ですので3日分しか保存してません。ユーチュラみたいに30日チャートみたいなものを公開していませんしね。

 

ここで一つ疑問があるかも知れません。それが私のBOTのツイートです。私のBOTはツイ消しをしていないので最新ではない過去のデータも公開されています。

過去のデータを公開しっぱなしにしてるけどこれアウトじゃないの?と思うかも知れませんが規約上セーフです。

利用規約[4-f]に「APIクライアントは時間が正確に提示された場合は過去のデータを表示できます」とあります。ツイートには分単位の正確なタイムスタンプがあるため、過去のデータを提示しても大丈夫というわけです。

通知が近づいた動画のチェック頻度は自動的に1分毎になるため、ほぼほぼ最新のデータを即通知しているので規約は遵守できているはずです。

 

Discord版もちゃんとタイムスタンプを仕込んでいます。

期間関係は結構シビアで条項も規約の中で一番長いので、わからないことがあればYouTubeに直接質問するか規約を読んでおいてください。

商業利用は超厳しい

YouTube Data APIは基本的に非営利利用に限定されますが、以下の用途は認められるようです。

  • YouTubeコンテンツがメインではないサイトでの広告掲載

これ以外は個別にYouTubeの許可が必要になります。

例えば以下のようなことはYouTubeに直接許可をもらわないと規約違反になります。

  • 作成したサービス・ツールを売り込み
  • 視聴料金の徴収
  • 再生する動画に独自の広告を重ねる(YouTubeに出稿した広告がYouTubeプレイヤー経由で再生されるのはOK)

ただしあくまでYouTube外部での商用利用に限定した話ですので、外部サイトでは収益源を作らずにYouTube活動を支援する目的なら話は変わるかも知れません。

こちらについて私は興味がないので詳しくないですが、興味がある方は頑張って調べてください。

プロジェクトを大量に作って使い回さない

規約違反ですし普通にバレて止められますので止めましょう。1万クォータで足りないなら割当ページから増量申請を行いましょう。

使用目的にもよりますが、10~20万クォータくらいなら長くて1~2ヶ月くらいで増量してもらえると思います。

 

男飯

独自のAPIサーバーを公開してはいけないかもしれない(グレーかブラックかも)

3.3 Accepting on Behalf of Others. If you are using the YouTube API Services on behalf of someone else (such as your employer), you represent and warrant that you have authority to bind that person or entity to the Agreement and by accepting the Agreement, you are doing so on behalf of that person or entity (and all references to “you” in the Agreement refers to that person or entity).

英語苦手なのでGoogle翻訳任せで解釈しますが、YouTube APIサービスを利用して取得した生データをそのまま他者に利用させてはいけないと解釈できる気がします。

つまり、

  • YouTube Data APIで取得したデータをキャッシュし、独自のAPIサーバーを構築する

という行為がグレーかもしれません。少なくとも以下の機能を実装した場合はおそらくアウトです。

IDを指定して動画情報やチャンネル情報の生データを取得する

他の方のYouTube Data APIを使用してAPIのクォータ制限を回避する行為とも解釈でき、それを助長させてしまうことになるため結構危険かもしれません。不安ならYouTubeに直接問い合わせましょう。

同一ページで2動画以上同時再生してはいけない

こちらはYouTube Data APIではなく、YouTube IFrame Player APIの規約に引っかかります。同一ページで2画面以上の再生を認めていません。

直近で言うと複窓ツールで有名だったHoloToolsとN窓ですね。これらサービスに限らずここ数ヶ月一斉摘発してるようですのでほかのツールも軒並み規約違反通知を受けているでしょう。

考えられる理由は下記の通り。

  • 再生数の嵩増しが容易(自動再生でなくても嵩増しは簡単)
  • 悪意がなくても利用ユーザーによる価値のない再生数の嵩増しが起きる(広告配信の質が落ちる)
  • 一人が同時に複数動画再生するのでサーバー負荷がかかる

流行病の影響でYouTubeがパンクしていることもあり、この機会に規約違反者を一斉摘発して利用者を減らしてYouTubeの負荷を下げたのでしょう。

流行病かどうかに関わらずYouTube外部での同時再生は認められていないので気をつけてください。

おわりに

何も考えずにただただなぐり書きしましたが、たまにはこういうのもいいですね。脳みそ空っぽにして書けます。

また仕事でスランプに陥ったら更新するとしましょう。

 

ここで一つ宣伝。

ほっともっとチキンバスケット

唐揚げ10個入って590円です。コスパ最強で結構美味しいので食ってみてください。

コメント

タイトルとURLをコピーしました