博多電光

blog.hkt.sh

TSG LIVE! を支える技術 その1 ~全体構成~

この記事ではTSGが定期的に行っているライブ放送を支える技術をご紹介いたします。

※この記事は TSG Advent Calendar 2019 の2日目の記事です。

TSG LIVE! とは

博多市が所属するサークルでは、近年「プログラミング生放送 TSG LIVE!」と称して、TSG部員がプログラミングを行う様子を実況解説付きの生放送で配信する企画を東大の学園祭で企画しています。つい先月も東京大学駒場祭に合わせて第4回の放送が行われました。アーカイブも配信されているのでぜひ合わせてご覧ください。

この企画の裏側では、見かけによらず非常に多くのコードやインフラが動いています。同じようなライブ放送を行うことを考えている方のために、また TSG LIVE! を支える技術を後輩に継承していくために、このライブを裏側で支える技術を数回に分けて詳細に解説していこうと思います。

TSG LIVE! の表側

まずは TSG LIVE! 自体にどのような機能があるか、順を追って解説していこうと思います。

f:id:hakatashi:20191203191749p:plain

これが TSG LIVE! の放送画面です。

サイドバーを除いた左側の画面が放送のメイン画面であり、実況者のPC画面が映されています。ここにあらかじめ用意したスライドやプレイヤーの画面などを映してライブを進行していきます。

右側のサイドバーには現在放送中のライブの情報がリアルタイムに表示されます。右上には TSG LIVE! のロゴと、現在のライブ全体の対戦状況が表示されています*1

中央辺りにあるのが現在の試合ステータスであり、現在放送中のライブで行われている対戦の様子がリアルタイムで更新され表示されます。その下にあるのが試合の残り時間を示すタイマーです。試合の経過に合わせて刻々と減っていきます。

一番右下にあるのがコメント欄です。ライブに対するコメントが流れていきます。このコメントは、

が全て合わせて表示されます。

画面左下には、試合の経過に応じて、重要な動きがあった場合に通知が表示されます。例えばコードゴルフ大会でプレイヤーからの提出があった場合などです。また同じ場所にプレイヤーのぼやきや戦略についてのコメントが表示されるプレイヤーコメントも表示されます。

f:id:hakatashi:20191203193040p:plain

この企画ではプレイヤーは別室に待機して対戦を行うのですが、ライブでは時折、プレイヤーがプレイしている様子が放送に映し出されます。この画面は実際にプレイヤーが対戦しながら表示しているデスクトップ画面をキャプチャーしたものであり、実況者がプレイヤーの一覧を眺めながら自由に切り替えられるようになっています。

f:id:hakatashi:20191203193549p:plain

また、今回の TSG LIVE! 4 では、オープニングトークで特別企画「たほいや」が行われました。この企画では視聴者がゲームに同時に参加することができ、「単語の意味」を放送中に登録でき、また管理画面で登録された意味をモデレーターがリアルタイムにモデレートできるようになっています。

f:id:hakatashi:20191203193947p:plain
たほいや」管理画面

なお、この放送は YouTube Live とニコニコ生放送の同時配信放送になっており、どちらからも同じ放送を視聴しコメントすることができるようになっています。

TSG LIVE! の全体構成

以上の仕様を満たすシステムを実現するために、多くのサービスを利用するとともに、専用ソフトの開発を行いました。全体の構成図をまとめてみると以下のようになります。

f:id:hakatashi:20191203194106p:plain
TSG LIVE! インフラ構成図

(draw.ioを使って書きました。初めて使ってみましたがなかなか悪くないです)

次回からはこの構成の各部のはたらきについて順を追って詳しく解説していきます。

*1:TSG LIVE! では「本郷チーム」と「駒場チーム」に分かれて戦うというコンセプトになっており、ライブ全体の累積得点で勝敗が決します