ForgeVision Engineer Blog

フォージビジョン エンジニア ブログ

JAWS SONIC 2020 / MIDNIGHT JAWS 2020 配信振り返り その1

こんにちわ、クラウドインテグレーション事業部 山口です。

ForgeVision Advent Calendar 4日目の記事です。

JAWS SONIC / MIGNIGHT JAWS 2020の配信班を担当してきましたので、振り返りを含めて書いていきます。

オンラインイベント配信って敷居が高いんでしょ?

配信に関する記事や情報は検索すればたくさん出てきますし、ハードルは高くありません。

Zoom、StreamYardなどのサービスを利用すれば細かい知識もなく2〜3時間程度あれば配信できるレベルです。

オンラインイベントとして開催する場合、配信自体よりもどうやってイベントを回していくかという準備が重要になります。

振り返り返り記事は配信班として事前準備やイベントを上手く進めるために必要だったことにフォーカスして書いています。

この振り返り記事がオンラインイベント配信に関わる皆さんの役に立てれば嬉しいです。

JAWS SONIC 2020 & MIDNIGHT JAWS 2020とは

JAWS-UG各支部が集まって24時間以上ぶっつづけでセッションを続けるというぶっ飛んだイベントです。

日中は1枠20分でセッションがひたすら続き、夜中はMIDNIGHT JAWSになり、参加型イベントが開催されます。(されました)

いわゆるフェスのノリでJAWS-UG各支部でセッションのバトンを渡してイベントを楽しもうという方が分かりやすいかも知れません。

なお、Zoomの最大会議時間は24時間なのでZoomで配信しようとしても間に合わないという、運営サイドは過酷なイベントになります。

次回は36時間を目指すとかいう噂もありますが、噂で終わる可能性が非常に高いのではないかと思っています。

jawssonic2020.jaws-ug.jp

なぜ配信班に参加したか?

JAWS-UGの配信の多くは、アマゾン ウェブ サービス ジャパン コミュニティマネージャの沼口さんが配信を担当されています。その際、利用しているのが Amazon WorkSpaces です。

フォージビジョンはAmazon WorkSpacesの環境構築などの実績もあり、その実績をもとにJAWS-UG千葉でAmazon WorkSpacesのハンズオンや登壇をしたことがありました。

その流れで「配信 -> Amazon WorkSpaces -> 山口」という流れで声がかかったという感じです。

JAWS SONIC 面白そうだから何か協力したいなと思っていたところだったので二つ返事でOKを返したのが配信班に参加するきっかけです。

弊社AWSエンジニアのコバケンと、遊びでOBSからYouTube配信をしていたこともあったので、なんとなく出来るだろうという変な自信もありました。

このときは、24時間配信を過酷さを軽く見ていたのでした。

配信班は何をするの?

配信班がやることは文字とおり配信に係る全てです。それだけだとイメージがつかないのでリストにしてみます。

  • 配信用バックエンドの設計&構築
  • ストリーミング動画再生用フロントエンドの設計&構築
  • 登壇者への案内作成
  • 配信当日の説明&誘導
  • セッション時間管理(タイムキーパー)
  • セッション間の動画切替
  • 録画セッションのエンコードチェック&再エンコード
  • アーカイブ動画の切り出し
  • アーカイブ動画の公開

各タスクの重要度はすべて同じですが、ボリューム的に重たいのが「バックエンドおよびフロントエンド設計&構築」と「アーカイブ動画の切り出し&公開」です。

準備期間

配信班の発足が 8/6 でJAWS SONIC 2020 開催日が 9/13 です。全体のスケジュールはこんな感じで進行してました。

f:id:kinunori:20201203234920p:plain

1回あたり2〜3時間程度のMTGを行い、タスク・アクションアイテム・課題を明確にして突貫で進めていきます。消化しきれない課題は捨てていくしかありません。

目標は高くでも足元を見ながら着実に品質を保って登壇者と参加者の方々に満足してもらえる配信を実現していく、まさにプロジェクト管理そのものです。

1つ異なるところは仕事ではなくコミュニティ(ボランティア)というところです。ただ、「やりたい」という強いモチベーションをもって参加している人たちなので、あまり関係ないですね。

配信バックエンドの構成

配信のバックエンドはAWS SAMURAI 2019 の JAWS-UG札幌 三浦さん(@miu_crescent)が設計しました。

f:id:kinunori:20201204000030p:plain

  • 登壇者はZoomでセッションを行う
  • Amazon WorkSpacesはZoomの画面をOBSでキャプチャしてMediaLiveへRMTPストリームを送信
  • MediaLiveはRMTPストリームをアーカイブしS3へ保管
  • MediaLiveはRMTPストリームをActive/Backupに複製しAmazon Interactive Video Service (Amazon IVS)へ送信
  • ShifterにデプロイされたフロントエンドがIVSのクライアントライブラリでストリーム動画を再生

2020年9月時点では、Amazon IVSはActive/Backupが無かったため、2つ用意して常時配信しています。

そのため、ShifterにもActive用、Backup用のページを2つ用意しています。

配信フロントエンドの構成

配信フロントエンドは、弊社AWSエンジニアの菊池ジョーさん(@fvkikuchi)が設計&開発しています。

f:id:kinunori:20201204001126p:plain f:id:kinunori:20201204001146p:plain

JAWS SONIC 2020 で採用したAmazon IVSはタイムドメタデータを用いることで配信者と視聴者間のコミュニケーションを実現できるという特徴があります。

今回はタイムドメタデータを活用して、視聴者へのアンケートを取得できるように作り込みを行いました。

  • Amazon IVSからアンケート開始のメタデータを発行してJavaScriptライブラリでアンケート画面を表示
  • ブラウザよりアンケートをクリックすると、DynamoDBへアンケート回答をPUT
  • DynamoDBへのPUTはCognito IDプールの ゲストユーザー (未認証) としてエンドポイントへのアクセスを許可
  • Amazon IVSからアンケート終了のメタデータを発行してJavaScriptライブラリでアンケート結果を表示
  • アンケート結果はDynamoDBから集計結果をGETしてパイチャートで表示

配信フロントエンドのソースコードは https://github.com/jaws-sonic-2020/ivs-broadcast で公開しています。

オンラインの登壇では一方的な配信になり、視聴者からのフィードバックをリアルタイムに把握しずらい(Twitterなど見る余裕がない場面もあります)ため、双方向のやりとりを活性化する仕組みとしてAmazon IVSのタイムドメタデータを利用したアンケートを用意しました。

次回、改善したい点があるとすれば、動画を全画面で再生しているとアンケート画面が見えず、視聴者が気づきにくいため、注意を引くような仕組みを取り入れるというところです。

事前準備、そしてリハーサルへ

その2で公開予定です。