サーバーレスやSaaS連携を駆使して、超短期間でシステムを構築
HTB三浦さんが「水曜どうでしょう祭」ライブ配信の裏側を語る
北海道テレビ放送(HTB)が10月4日から3日間にわたって開催した「水曜どうでしょう祭 FESTIVAL in SAPPORO 2019」では、会場に行けない藩士(註:水曜どうでしょうファンの呼称)のために、ステージイベントのオンライン配信やライブビューイングが行なわれた。JAWS FESTAでは昼の部のステージイベントライブ配信を担当した三浦 一樹さんが、ライブ配信システムの構築と運用の実態について語ってくれた。
1年間で敏腕エンジニアに変身できたのは、技術情報がオープンなAWSだから
藩士諸君には改めて説明するまでもないと思うが、水曜どうでしょう祭 FESTIVAL in SAPPORO 2019には大きく2つの見どころがある。ひとつは会場に並んだブースで、水曜どうでしょう関連の展示やグッズ販売などが行なわれること。そしてもうひとつの見どころが、ステージイベント。水曜どうでしょうの出演陣や制作陣が登壇し、過去作品のこぼれ話や公開間近の新作について語る。藩士からの投票を元に決められる「第3回どうでミー賞」の発表もあった。
イベントの会場となったのは、さっぽろばんけいスキー場。熱心な藩士が全国から駆けつけ大盛況だったようだが、もちろん現地まで行ける人ばかりではない。そこで用意されたのが、ステージイベントのライブビューイングだ。新作の先行上映も行なわれた最終日の夜の部のステージを、全国200館以上の劇場で楽しめるようにしたわけだ。今回の話は昼の部を有料でライブ配信するという案件だ。
「夜の部のステージはライブビューイングがあるけど、昼の部のステージは配信しないの? という単純な疑問がきっかけで、昼の部はオンラインでライブ配信することにしました。本イベントは入場料が必要な有料イベントなので、ライブ配信も有料で行なうことが前提でした」(三浦さん)
その経験を語ってくれたセッションのタイトルは、「サーバレス×フルマネージド×SaaS連携 3日間で使い捨て! 有料ライブ配信サービス構築」というもの。初めて見たときに思わず「タイトルなげーよ記事にするときに文字数使っちゃうじゃん」とPC画面に向かってツッコミを入れてしまった。同時に「あれ、三浦さんてそんなバリバリなAWSエンジニアだったっけ」という疑問も頭をよぎった。三浦さんと初めて会ったのは、約1年前。その頃の三浦さんを自身が振り返っている。
「2018年10月5日に『ec2にs3マウントできたー!』って投稿しているくらいですから、AWSの知識はほとんどゼロの状態からのスタートですね」(三浦さん)
基本のキともいえるEC2に触れてみただけ。しかもLinuxがよく分からないのでEC2は面白くなく、DBのたぐいも何に使うのかよくわからないという状態。そこから1年の猛勉強でスーパーエンジニアに育った、なんて奇跡は起こるはずもなく。先人の知恵を借りまくってのシステム構築だったようだ。
「システムの要となる部分はほとんど、Webで検索してコードをコピーしました。No-Codeというか、Low-Codeですね。検索のコツはキーワードに『site:dev.classmethod.jp {サービス名}』と入力することです」(三浦さん)
どうやらブログの会社ことクラスメソッドが公開している知見をフル活用した模様だ。
必要な要件を満たしつつ、使い捨てにできるシステムを実現
購入したけれどきちんと再生されなかったという事故を防ぐため、視聴希望者にはまずテスト動画を見てもらい、再生環境が整っていることを確認してもらう。大丈夫なら決済サービスのstripeを使って視聴料金をオンライン決済し、ライブ配信画面に進むという仕組みだ。認証には同じくSaaSのAuth0を使っており、ライブ画面で購入者か未購入者かを判別できるようになっている。購入済みのユーザーにはライブ映像を表示し、未購入者には購入ボタンを表示する。
「Auth0での認証とstripeでの決済を1つのLambdaで処理しようとしたら、詰め込みすぎたようでタイムアウトするようになってしまったので、タイムアウトを伸ばして乗り切りました。また、そのままではiOS端末で動作しなかったので、iOS向けに同じような仕組みを作りました」(三浦さん)
また、不正コピー防止のため、DRMも組み込んだ。DRM関連の部分だけは難しかったので、NEXTSCAPEに依頼して作り込んでもらったとのこと。スクリーンショットを撮れないようにしたり、専用のプレイヤーでのみ再生可能にしたりと、放送局らしいこだわりを感じた。
「DRM以外と並んで構築時に懸念したのは、CloudFrontの上限にひっかからないかどうかということでした。上限緩和申請は出していましたが、申請が通るかどうか、イベントに間に合うかどうかわからなかったので、GCP Cloud Functionsで同じ機能を用意しました。結果的には上限緩和申請が通ったのでGCP側システムは作っただけで使っていません」(三浦さん)
動作チェックのため、社内に協力者を募って試用してもらった。そこで判明したのが、プリペイド系のクレジットカードの一部で決済に失敗するということ。これは仕様なので技術的には解決できない。結局Q&Aに記載した上で、決済前の画面にも注意喚起のメッセージを表示することにした。
「決済がうまくいかなかったり、購入したのに再生できなかったりというクレームが一番怖かったです。当日のクレーム対応用に、Auth0に貼り付けるだけでいいコードとその手順をまとめたマニュアルも用意しましたが、幸いにも使う機会はありませんでした」(三浦さん)
購入前の再生確認から、決済、本番のストリーミング配信、番組データのバックアップにDRMまで含んだ配信システム。旧来の手法で機器を用意してシステムを構築していたら、莫大な予算と時間が必要だっただろう。もちろん機器は資産化し、償却するために何かに使い続けなければならない。AWSだからこそ、そして特定のイベントに特化した最小限の要件で構築したからこそ短期間で準備でき、しかもそのイベントだけで使い捨てにできるコストを実現できたのだ。
NW-JAWSに参加したりなどしつつ約1ヵ月で構築という早さ
「ほぼコピペ」と三浦さんは言うが、このシステムを構築するのにほぼ1ヵ月しかかからなかったというのは本当に驚きだ。メンバーは三浦さんやデザイナーを含めて全部で5名。クラスメソッドからAWSやAuth0のコンサルティングを受けていたとはいえ、DRM部分以外は自分たちの手で組んでいる。しかも三浦さんは、その間に何件もの出張をこなしたという。
「クラスメソッドさんは内製を手伝ってもらうということでご協力して頂いたんですが、本当にコンサルティングだけでコードは一切くれないんですよ(笑)。でも、こういう権威あるパートナーがいると社内での申請も通りやすいので、いろいろな面で協力していただいたなと感謝しています。自分たちの手で作るのはもちろん疲れるけど、疲労よりも本番環境に流すサービスを作る喜びの方が勝っていました」(三浦さん)
三浦さんたちの努力がライブ配信サービスとして結実したからこそ、札幌に行けなかった藩士も昼の部のステージを楽しむことができた。その功績は社内でも高く評価され、局長賞を受賞したとのこと。
「今回いろいろな知見を得たので、それを活かしてHTBの各サービスのID統合や横断的なレコメンドなど、既存のオンラインサービス改善にも取り組んでいきたいと思っています」(三浦さん)とのことで、今後も楽しみだ。
週刊アスキーの最新情報を購読しよう