公式企画「Virtual ISUCON Live」にVirtual YouTuberとして参加しました! #isucon
はじめましての人がほとんどだと思います、情報系VTuberのこみっとちゃんですっ。
今回はVirtual YouTuberとしてこちらのISUCON特別企画に参加しました。「ブログを書くまでがISUCON」ということで参加エントリを書きますっ。
こみっとちゃんって誰?
今年6月にYouTubeにて初めて動画を投稿した、生まれたてホヤホヤの情報系VTuberです。中の人は特に隠してなくて、本業Webアプリケーションエンジニアの id:stefafafan です。
www.youtube.com
VTuberはじめた経緯は、
#VTuberになった理由
— こみっとちゃん // 24 (土) 11:00- #ISUCON Vtuber企画 (@e83c516) 2021年7月5日
- プログラマとしてテキスト以外のアウトプット方法を模索してみたかった (真面目)
- パパの会社にVのひといなそうだったから
- おもしろそうだったから
idである id:e83c516 の由来はこちらです。
github.com
ISUCONとは?
まず最初にISUCON*1とはIikanjini Speed Up Contestの略称で、Web系のエンジニアが最大3人のチームとなって与えられたWebアプリケーションを高速化して点数を競うコンテストです。毎年開催していて、今年も8月に予選を控えています。
私もVTuberでない別名義で今年の予選出場する予定です。
ISUCON × Virtual YouTuber?
7月2日、ISUCON公式よりこういったエントリが突如公開されました。
isucon.net
Virtual YouTuberの晴栄リコさんと糟屋もふさんと組んでくれるVTuber募集中ということでものすごくニッチだなと記事読んで思いましたが、こういう企画に飛び込む「のっていき力」は絶対に大事だと思って即座に当日ISUCON公式のTwitterにDMしました。19:35にこの募集ツイートを見て、19:52にDMを送ったので17分で決意して申し込んだのはかなり早かったんじゃないでしょうか??
(こちらはISUCONとは関係のない、のっていきについての良いスライドです)
speakerdeck.com
後に聞きましたが私が選ばれたのは晴栄リコさんと糟屋もふさんが相談して選んでくれたとのことで本当にありがたいです(お二人とは初対面でした)。
配信までの日々
無事出演側として採用されたあとはSlackや専用のDiscordサーバに誘われました。運営の941さんやrosylillyさんをはじめ関係者各位と挨拶をしましたが、GitHubアカウントを教えたら一発で身バレしてしまって面白かったです(白目)。ま、そういうこともあるよねっ!
晴栄リコさんと糟屋もふさんとはその後新しく立てたDiscordサーバで実際にボイスチャットを経てチームビルディング的な雑談をしました。5時間の配信でご一緒するのに雑談すらできない関係だとつらそうですからね。
そこから7月末の配信までちょっと時間がありましたが、面倒見の良いrosylillyさんが事前講習の資料をもとに実際に私達Virtual YouTuber3人に丁寧にISUCONの倒し方を教えていただきました。途中orisanoさんも合流し、Golangの話題やMySQLのGenerated Columnの便利さを伝えてくれました。この資料をただ一人でモクモクと読むときと比べて100倍は頭に入ったので本当にありがたかった!
speakerdeck.com
この資料の話を聞いたあとにちょくちょく3人で素振りをしてたのですが、その時も時間ある時にrosylillyさんやorisanoさんがやってきて、「ここはこうしたほうがいいよ!」とアドバイスくれました。こういうのがなかったら本配信では10分の1の点数しか出せなくてとてもつまらないものになってたと思うので助かり度が高かった。配信もそうですが、シンプルに一人のエンジニアとして嬉しかったですね。
そういえばVirtual YouTuber募集エントリでは
主な利用言語はRubyの予定です
ISUCON Virtual YouTuber企画 協力者募集のお知らせ : ISUCON公式Blog
とありますが、素振りを経たあと他メンバーと相談してGolangでいくことにしました。Rubyの習熟度は自分は低く晴栄リコさんもRailsでない素のRubyは経験が浅いとのことだったので、じゃあ型もあるGolangでいきましょうとなりました。(多分これは私達にとっては正解だったと思う)。
糟屋もふさんは最初からインフラ担当ということで便利なスクリプト群を準備していただき、私と晴栄リコさんは配信までにGolangを触る練習や改善していく流れなどを見直していました。作戦は以下のような感じでした。
1. とにかくわからないものはどうせ配信中に終わらないので手をつけない(ISUCON 10本戦問題の場合はWeb Pushの実装)
2. 手当り次第直していかずに、alpで遅いエンドポイントを調べて順番につぶしていく (MySQLのスローログは見ても良いけど、alpだけでも遅いエンドポイントわかるのでrosylillyさん方式ということでそんなに見ない) (もちろん怪しいクエリあったらEXPLAINとかしてみるけども)
3. 落ち着く。前日はちゃんと寝る
ちなみにVirtual YouTuber歴が浅い自分はそもそもモデルが動くWindows環境には開発環境が整ってなかったのでそこを整えるところからやっていて結構ドキドキしていました。Windows 10 + VMagicMirror + OBS + Windows Terminal + WSL2 + Ubuntuみたいな感じで最終的にやっていました。vrmモデルあればVMagicMirrorはめちゃくちゃ便利です。あとOBS。YouTubeでの生配信はすでに何度かやってるのでそのあたりの不安は少なめでどちらかというとISUCON的な作業を生配信したことがなくてドキドキという感じでした。
WSL2導入メモについてはパパがブログに書いてます。
stefafafan.hatenablog.com
~そして本配信へ~
当日は私達3名とも朝8時に起きてて最高に偉かったです。これだけで +10000点してほしかった。
配信についてはとりあえず作業しつつ見てほしいのですが(実は運営視点の動画はまだみてないので明日ゆっくり見たい)、
www.youtube.com
シンプルに視聴者数が予想以上だったのと最終的な評判もTwitterでみていてとてもよくてめちゃ嬉しかったです。点数としてはインフラ周りの変更がとても効いていて、アプリケーション側の変更があまり効いてなくて悔しいですが、次回以降には活かせそうな気がします。「予選よりも難しいであろう去年の本戦問題を」「短い準備期間で初対面のメンバーと3人で」「常時100人近くの人の前で配信しながら」やったことを考えると、来月の予選はものすごい落ち着いてやっていける気がします。
今回の問題の環境構築や解説で sora_h さんや yosuke_furukawa さんにも感謝しますし、YouTubeのサムネイルでも使わしてもらってるサムネイルだとかとにかく関わっている人は他にもいたと思いますが本当にありがとうございました。
本配信を経ての振り返り
振り返りまで詳細に書いてたらすごい長い記事になりそうなので次回に向けたTRYだけ書いておくと、
- 時間配分に余裕を持つ
- 例えば早い段階で分析ができてる状態にしたいし、最後の数分で新たな変更は入れたくない。YouTubeのコメントでも書かれてますがこれが本当の試合だったらこわい
- Golangでいくならすらすら書いていけるように素振りをもっとやる
- YouTubeに配信しながらこういうことをやるとCPUとメモリ使用率がすごいことになるので、開発用マシンと配信用マシンをわける
- ツイートもしましたが途中でWSL2とChromeなどが無尽蔵にメモリを使っていてパソコンが重かった……晴栄リコさんと糟屋もふさんは配信用PCはわけてるようだったので参考になった。
- 同じような問題を一人で全部解けるようにしておく
- 糟屋もふさんのスクリプト群いくつかチラ見して自分用にパク…改良したいなと思う
とにかく面白かったですね。面白かった!来年もまた同じメンツでバーチャルなISUCONやりたいね。まずは来月のリアルISUCONをがんばるぞっ