株式会社アクア

Contentful+Muxによる動画の管理とストリーミング配信

2021年11月17日 肥塚 遼

技術動向

こんにちは。2020年度入社の肥塚です。

導入

アクアのウェブサイトリニューアルにあたり、主に実装を担当してきました。そろそろリリースできる、という頃合いになってきたとき、主に運用面の観点から、サイト全体のブラッシュアップを行うことになりました。

トップページでは、ページ上部に張社長のメッセージ動画(通称 社長動画)が配置してあります。当初、Youtubeに社長動画をアップロードし、そのiframeを埋め込むことで動画を表示していたのですが、以下のような不満がありました。

  • 社長動画をContentfulで管理できない点

    サイトのコンテンツ管理システムであるContentfulを使用せず、Youtubeで管理しているので、社長動画を管理しづらいことが悩みでした。Contentfulでも動画を管理できないことはありませんが、無料で使用する場合は50MBまでのアセットしかアップロードできないようです・・・

  • サイトのパフォーマンス低下

    Youtubeのiframeを埋め込んだトップページにアクセスすると、Youtubeサーバーとの通信が発生し、そのトラフィックが大きく、サイトのパフォーマンスが低下するようでした。特にスマホで閲覧したとき、Googleが提唱するWeb vitalsへの影響が大きいようでした。

ソリューション

以上の問題を解決するために、Contentfulと、Muxというサービスを組み合わせる方法を用いました。

Muxは、アメリカの同名のソフトウェア会社が運営する、APIベースの動画配信サービスです。

Mux公式サイト

Contentfulのウェブアプリ上でMuxが提供するアプリを使うと、Contentful経由でMuxに映像をアップロードできるのですが、以下のようなメリットがあります。

  • 動画のサイズを気にすることなく、Contentfulで動画を管理できる

    ContentfulからMuxに動画をアップロードしたとき、Contetnfulが保持するのはJSONデータなので、Contentfulのアセットのサイズ制限にひっかかることはありません。また、Muxの存在を意識することなく、アップロードした動画をContentfulのウェブアプリで再生、管理等できます。

  • 動画をMuxからストリーム配信できる

    他のコンテンツと同様、Muxにアップロードした動画のデータをGraphQLで取得できるので、Video.js等のプレイヤーをクライアント側で用意してやれば、動画を再生できます。npm等でインストールして使用すれば、第三者のサーバーとの通信が発生することもありません。

以下のリンクは、このソリューションのガイドです。

Integrate with Contentful

結果

ガイドの手順を踏むと、他のコンテンツと同様、社長動画をContentfulで管理し、配信できるようになりました。

ストリーミング配信している社長動画は、Video.jsで実装したプレイヤーで再生しています。 第三者とのサーバーとの通信が発生しないので、ある程度のパフォーマンス向上が見込めます。

Contentful+Muxによる動画の管理と配信-Contentful上の社長動画

注意

実装するにあたり、上記のガイドに従えばよいのですが、Contentfulのコンテンツモデルにおいて、Muxにアップロードする動画に対応するプロパティの型は、JSONでなくてはならないことに注意しましょう。

Contentful+Muxによる動画の管理と配信-Contentfulの項目追加(JSON)

おわりに

MuxはAPIベースななので、他システムとの連携が容易です。

今回は、動画をストリーム配信する目的で使用しましたが、ライブ動画のリアルタイム配信も可能なサービスです。 従量課金制なので、特にスモールスタートのビジネスには利用しやすくなっています。

日本ではあまり知られていないサービスですが、有用なサービスと思います。

関連トピックス