オフラインコンテンツのオンライン化を実現する為に考える事をまとめてみた 〜AWS のアーキテクチャを添えて〜
こんにちは、大前です。
たまには、ご時世を意識した記事を書いてみたいと思います。
本記事の背景
コンテンツのオンライン化が求められる情勢
昨今の COVID-19 に関する情勢から、学校教育や音楽イベントなど、オフラインの場で提供されるコンテンツがオンラインにシフトしていくような話をよく耳にするかと思います。
上で挙げた「学校教育」というキーワードにフォーカスを当てると、COVID-19 をきっかけとして、AWS を活用して教育コンテンツのオンライン化を行った事例がAWS Media Blog で紹介されていたりします。
Jordan Develops e-Learning Platform for 2 Million Students with AWS
Providing Remote Learning for Millions of Israel Students Through Live Stream
「オンライン化」とは簡単に言うけれども
とはいえ、コンテンツのオンライン化が求められている事は十二分に理解していても、うまく進められていないケースが多かったりするのではないでしょうか。
元から、ある程度オンラインでコンテンツを配信する為の知見やリソースを持っているのであればうまく進められるでしょうが、「これからはオンラインでコンテンツ配信の時代!うまく進めてくれ!」なんて突然言われて対応できる方は多くないはずです。
本記事のターゲット
コンテンツをオンライン化する為の方法は色々考えられるかもしれませんが、今回は「AWS を使ってオフラインのコンテンツをオンラインで動画配信する」事を考えてみましょう。
学校教育を例にあげると、以下の様な事を達成したいと仮定します。
- 学校教育
- 現状(オフライン) ... 学校に生徒を集め、授業を行う。
- オンライン化されたイメージ ... インターネット経由で授業の動画を配信。生徒は自身の端末(PC、スマートフォン等)でそれらを視聴。
本記事は、「AWS とかを使えばコンテンツをオンラインで提供出来るかもしれないけど、どこから手をつければ良いのか、何を考えれば良いのか。。。」な方を意識して執筆していきます。
これからオフラインコンテンツのオンライン化を進めようと考えている人にとって、少しでも道標になる様な記事になれば幸いです。
オフラインのコンテンツをオンラインに変換する為には
コンテンツのオンライン化を進める為には、まずオンライン化に伴って必要となる要素を整理する事が大切です。
既に持っている要素であれば使い回しが効きますし、持っていない要素であれば何らかの方法で用意する必要があります。
オンライン化に伴って必要となる要素を抽出しよう
今回は「学校教育」を例に挙げ、オンライン化する際にどういった要素が必要となるのか見ていきましょう。
オフラインの世界
学校教育におけるコンテンツ は「授業」となります。
オフラインで「授業」を提供する際に必要な要素をざっくり抽出してみると、こんな感じになるかと思います。
- 授業を行う人
- 先生
- 授業を受ける人
- 生徒
- 授業を行う場
- 学校や教室
先生と生徒が教室に集まり、先生がその場で授業を実施する、といったイメージです。
細かい突っ込みどころは色々あるでしょうが、上の 3つがオフラインで学校教育のコンテンツ(授業)を提供する為に必要な要素と考えられます。
オンライン化
では、授業をオンラインの動画配信として提供する場合、どんな要素が必要になってくるでしょうか。
- 授業を行う人
- 先生
- 授業の録画
- 動画の配信基盤
- 動画を保存するストレージ
- 動画を配信するネットワーク基盤
- 動画を視聴する為のアプリケーション
- 授業を受ける人
- 生徒
ここでは、「先生が事前に録画した授業の動画を配信し、生徒は Web アプリケーション等で動画を視聴する」というイメージで要素を抽出してみました。
太字で示した部分がオンライン化する事で増える要素です。逆に、オンラインでコンテンツを提供する訳ですから、物理的な要素(学校や教室)は不要となります。
実際には細かい話が色々あるかと思いますが、基本的にはこの太字で示した部分を満たす要素を全て用意する事で、オンライン化が実現出来る事になります。
極端な例かもしれませんが、オフラインで提供しているコンテンツをオンラインで提供しようとした場合には、この様に少なからず必要な要素が増えるはずです。
「オフラインのコンテンツをオンライン化したいけど何をすれば良いのかさっぱりわからない。。」な方でも、まずは上記の様にオンライン化に伴って必要となる要素を整理する事が大切だと思います。
各要素をどうやって実現するかについては、その後で考えれば良い話です。結果的に、AWS が不要となるケースもあるかもしれません。
AWS で出来る事、出来ない事
オンライン化を実現する為に必要な要素がわかったら、次はそれらを実現する方法を考えていきます。
また、ここではオンライン化必要な要素のうち、AWS がカバー出来る範囲についても記載してみたいと思います。
オフラインで提供していたコンテンツをオンラインでの動画配信に移行しようとする際には、以下 3つの要素が必要となる事が多いです。
- 撮影、録画
- 動画の配信基盤
- 動画を視聴する為のアプリケーション
一方で、AWS としては主に以下の範囲をカバーする事が出来ます。
- 動画の配信基盤
- 動画の視聴する為のアプリケーションをホストする環境
上記より、以下要素については AWS ではカバー出来ない為、他の手段を検討・用意する必要があります。
- 撮影、録画
- ビデオカメラ等を用意して撮影を行い、配信基盤にアップロードを行う必要があります
- 最近はスマートフォン等でも十分良い画質で撮影が出来たり、動画を簡単に配信基盤に転送出来るソフトウェアなんかもあったりするので、必要以上にコストをかけなくて良いケースもあるかもしれません
- 動画の視聴する為のアプリケーション
- AWS ではアプリケーションをホストするサーバなどは用意出来ますが、その上で動作するアプリケーションについては自前で作成する必要があります(アプリケーション作成を手助けするサービス等はあったりしますが)
AWS は数多くのサービスを提供していますが、上記の様に、AWS を使うだけでコンテンツのオンライン化が完結するわけではありません。
あくまで、コンテンツのオンライン化を実現する為の1つのパーツとして考えましょう。
Video On Demand とライブ配信の選択
Video on Demand とライブ配信
動画配信のタイプとしては、Video on Demand(以下 VoD) とライブ配信という 2つが存在します。
それぞれ広く意味を含んだ言葉で定義が難しいのですが、ざっくり以下のイメージを持ってもらえれば大丈夫です。
- VoD ... 事前に作成、保存された動画コンテンツをユーザが任意のタイミングで視聴する形式
- 例:事前に録画済みの講義動画を配信
- Live ... リアルタイムで撮影/生成、配信されている動画コンテンツをユーザがリアルタイムで視聴する形式
- 例:授業などをライブ配信
Youtube に投稿されている動画など、過去の動画を好きな時に何度も視聴できるのが VoD、スポーツ中継の様にその瞬間しか視聴できないものがライブ配信だと思ってもらえれば良いかもしれません。
AWS のドキュメントなどにおいても、基本的に VoD/Live といった分類で語られる事が多いです。
VoD とライブ配信、どちらを選択するか
オンラインで動画配信を行う際に検討すべき事のひとつとして、「VoD とライブ配信、どちらにしようか?」というものがあります。
例えば、先ほど例に挙げた「授業」であっても、VoD、ライブ配信、両方のパターンが考えられます。
基本的には「配信するコンテンツの価値をどうしたいか」等、コンテンツの提供者がどうしたいかに依る部分である為、一般的にどちらが良いというものはありません。
ただ、もしこれから初めてオフラインのコンテンツをオンラインで動画配信しようと考えている場合には、VoD から始めることを推奨 したいと思います。
個人的な見解ではありますが、主な理由としては以下が考えられます。
- ライブ配信と比較して、シンプルな構成で始めやすい(物理機材やインフラ環境を含め)
- 監視や障害発生時の運用など、ライブ配信よりも考慮する事が少なくて済む事が多い
AWS で動画配信を行う際の基本構成
先述した様に、コンテンツのオンライン化を実現する為には AWS だけを使えば良いというわけではありません。
ですが、動画の配信基盤(インフラ)については AWS は様々な機能を提供しているので、惜しみなく活用していきましょう。
ここでは、AWS で動画配信を行う際の基本的な構成を 4つほど紹介してみたいと思います。
【VoD】CloudFront + S3
「AWS が本当によくわかっていない」「とりあえずオンラインでコンテンツが提供できれば良い」という場合には、まずはこの構成を試してみましょう。
Amazon S3(以下 S3) は AWS が提供するストレージサービスで、動画コンテンツの保管などに使用する事ができます。
Amazon CloudFront(以下 CloudFront) は AWS が提供する CDN サービスで、コンテンツの提供元(ここでは S3)にアクセスが集中する事を防いでくれる(=負荷を下げてくれる)など、様々なメリットがあります。
また、CloudFront や S3 というのは AWS でも使用される事の多いメジャーなサービスである為、何か困ってもググれば大抵の事は解決します。情報量の多さは大切です。
弊社でも、様々なブログを書いていますので、よければご参照ください。
【VoD】CloudFront + S3 + MediaConvert + Lambda
少し動画配信に詳しい方であれば、「ストリーミング形式で配信したい」となる事もあるかと思います。
そんな時には、上記の構成にAWS Elemental MediaConvert(以下MediaConvert) と AWS Lambda を追加した下記の様な構成が考えられます。
細かい説明は省きますが、MediaConvert は動画変換を実行してくれるサービスである為、AWS にアップロードするファイルは MP4 等の形式であっても、AWS 側で自動的にストリーミング形式に変換され、そのまま配信する事が可能だったりします。
詳細については、弊社ブログ等をご参照ください。
【ライブ配信】CloudFront + MediaStore + MediaLive
ここからは、Live 配信のアーキテクチャの紹介になります。
一般に、ライブ配信を行う為にはサーバー上で様々な設定等を実施する必要があったりするのですが、AWS では AWS MediaServices という動画配信を行う際に役立つサービス群が提供されている為、それらを活用する事ができます。(上で出てきた MediaConvert もこのうちの1つです)
この MediaServices を使ってライブ配信を行う構成で最もシンプルなものが、以下に示した AWS Elemental Live と AWS Elemental MediaStore を使用した構成となります。
最終的な配信部分に関しては、VoD と同様に CloudFront を使用します。
MediaServices についても、弊社ブログに様々な記事がありますので、よければご参照ください。
【ライブ配信】CloudFront + MediaPackage + MediaLive
もう1つ、AWS Elemental MediaPackage(以下 MediaPackage) を使った構成を紹介します。
構成的には、ひとつ上の構成の MediaStore が MediaPackage に置き換わった形になります。
MediaStore と MediaPackage の違いについては下記ブログで少し言及しているので参照いただければと思いますが、一般に、動画配信に関する複雑な要件(広告挿入、DRMなど)がある場合は MediaPackage が使われる場合が多いです。
オンラインコンテンツの保護
ここまでで、「よし!オンラインでコンテンツを提供する為に必要な事が分かってきたぞ!」となって頂けたらそれはとても嬉しい事ですが、オンラインでコンテンツを提供する場合、必要に応じて コンテンツの保護 をしっかりと行う必要があります。
例えば、特定の生徒のみに授業の動画を配信したいのに、それが全生徒、ましてや世界中に広まってしまったら大変ですよね。
この様に、オフラインでは起こり得ない事がオンラインでコンテンツを配信する際には起こり得る為、しっかりと対策と行う必要があります。
コンテンツの保護については下記ブログに色々と書いていますので、是非ご一読ください。
おわりに
オフラインのコンテンツをオンライン上で動画配信しようとした際のポイントなどについて、色々と書いてみました。
冒頭でも記載しましたが、あくまで「AWS を使えばコンテンツをオンラインで提供出来るんだろうけどどこから手をつければ良いのか。。。」な方をターゲットとして記事になりますので、細かい話や難しい話はなるべく記載しておりません。
この記事が少しでも、そういった方がコンテンツのオンライン化に向けた一歩を進める為の手助けになれば幸いです。
以上、AWS 事業本部の大前でした。
参考
- AWS Media Blog
- Jordan Develops e-Learning Platform for 2 Million Students with AWS
- Providing Remote Learning for Millions of Israel Students Through Live Stream
- Amazon S3
- Amazon CloudFront
- S3 – 特集カテゴリー
- AWS Elemental MediaConvert
- AWS MediaServices
- Media Services – 特集カテゴリー
- AWS Elemental Live
- AWS Elemental MediaStore
- AWS Elemental MediaPackage