横断/運用基盤 / メディアパイプライン
横断/運用基盤 / メディアパイプライン
概要
fincs サービスにおけるメディア(動画・画像・PDF 等)の保存・変換・配信のための横断基盤。講師がアップロードしたファイルを安全に保存し、会員の環境に応じて最適な形式・経路で配信する仕組み。
主な構成要素:
- 大容量ファイルのアップロード: 動画ファイル等のマルチパートアップロード対応
- ストリーミング配信形式への変換: アップロード動画を HLS 形式に変換し、複数ビットレートでの配信に対応
- ライブ配信からアーカイブへの自動移行: ライブ配信終了後、録画ファイルを検出してアーカイブ動画コンテンツとして公開
- 2 系統ストレージの併用: 信頼性向上のため複数のクラウドストレージにファイルを保持し、片方で問題があれば内部的にもう一方の配信経路へ切り替える
- 画像処理(ブラウザ側): アップロード前にブラウザで画像を圧縮・形式変換(HEIC → JPEG 等)。サーバー側は変換しない
- 署名付き URL 発行: アップロード・ダウンロード時に時限付きの安全な URL を発行
- CDN 経由の配信: 配信高速化と地理的最適化のため CDN を併用
- 整合性チェック: 2 系統ストレージ間のファイル整合性を定期的に確認し、不整合検知時に運営に通知
主な利用想定は、講師による動画・資料のアップロード、会員の動画受講、ライブ配信のアーカイブ生成、運営による整合性メンテナンスなど。
再生時の段階的フォールバック: 動画再生時、複数のストレージ・形式から最適なものを順次試す段階的フォールバック(4 段階)が走る。一方が障害でも他方から配信できる仕組み。詳細は dev 下段。
ライブ配信→アーカイブの遅延: ライブ配信終了から数分以内にアーカイブ生成が完了するのが標準。長時間生成されない場合(30 分超)は運営に自動通知。詳細は コンテンツ / ライブアーカイブ 参照。
HEIC 画像のブラウザ側変換: iPhone 等で撮影された HEIC 形式の画像をアップロードする際、ブラウザ側で自動的に JPEG に変換し(対応ブラウザではさらに WebP に圧縮)する処理が走る。サーバー側での画像変換は行わない方式。
MIME 検証・ウイルススキャンは未対応: アップロードされたファイルのマジックナンバーによる MIME 検証や、ウイルススキャンは現時点では提供していない。今後の改善対象。
利用シナリオ
シナリオ 1: 講師が動画をアップロードして配信形式に変換
講師がコンテンツ編集画面から動画ファイルをアップロード。大容量ファイルはマルチパートで分割送信され、効率的にアップロードされる。アップロード完了後、システム側で配信形式(HLS)への変換が走り、変換完了後に会員が再生できる状態となる。
シナリオ 2: ライブ配信終了後の自動アーカイブ生成
ライブ配信が終了すると、システムが録画ファイルを検出し、自動的にアーカイブ動画として公開状態へ昇格。30 分以上経過しても生成されない場合は運営に通知が飛ぶため、長時間放置されることはない。
シナリオ 3: HEIC 画像のプロフィール画像アップロード
iPhone で撮影した HEIC 形式の画像をプロフィール画像としてアップロード。ブラウザ側で自動的に JPEG 形式に変換され(対応ブラウザではさらに WebP に圧縮)、規定サイズ(300px 等)に圧縮された上でアップロードされる。
シナリオ 4: 会員の動画受講(配信経路の自動切替)
会員が動画を再生すると、複数のストレージ・形式から最適なものを順に試して配信。1 つの経路で問題が発生しても内部的に別経路へ切り替わるため、再生継続性が高い。
シナリオ 5: 整合性チェック
定期バッチで複数ストレージ間のファイル整合性を確認。差分が検出された場合は運営担当者に通知が飛び、必要に応じて手動補修。
よくある失敗ケース
- 配信形式への変換失敗: アップロード後に変換処理が失敗するケース。再生は元動画で代替されるか、運営側の手動補修対応となる
- HEIC 変換失敗: 一部のブラウザで HEIC 変換が動かないケース。代替手段の提示・案内が必要
- 整合性破綻: 2 系統ストレージのいずれかに欠損が出るケース。バッチ検知 → 運営対応
- 未対応のファイル形式: 想定外の MIME タイプのファイルがアップロードされた場合の挙動
利用可否(権限別)
メディアパイプラインは基盤機能のため、ユーザー権限軸での直接の操作は無い。コンテンツ機能側の権限軸は ../contents/ 各ページ参照。
| 操作 | 会員 | 講師 | 運営アドミン |
|---|---|---|---|
| 動画 / 画像 / 文書のアップロード | × | ○(自講座のみ) | ○ |
| HLS 変換完了通知の受信(webhook) | システム | システム | システム |
| Wasabi/S3 整合性チェック | × | × | ○(定期バッチに加え、運営アドミンによる即時チェックも可) |
機能詳細(ふるまい)
配信形式への変換完了の検知
- 外部の変換サービスで mp4 → 配信形式(HLS)への変換が完了すると、システムへ通知
- 通知受信時点で、コンテンツの保存先情報を変換後ファイルへ切替
- 会員は変換完了後から HLS 形式での配信を受けられる
ライブ配信からアーカイブへの自動移行
- ライブ配信終了後、システムが録画ファイルを検出
- 検出され次第、コンテンツが「アーカイブ動画」として昇格し受講可能になる
- 30 分以上経過しても生成されない場合は運営担当者に通知が飛ぶ
- 自動再試行は行わず、運営による手動補修対応
2 系統ストレージの併用
- 信頼性向上のため、複数のクラウドストレージにファイルを保持
- 受講時は最適な経路から順に試し、問題があれば内部的に次の経路へ切り替えて配信
- 1 つの経路で障害があっても別経路から配信継続可能
- CDN 経由で配信高速化
画像処理(ブラウザ側)
ブラウザ側でアップロード前に画像を最適化:
- プロフィール画像: 最大 300px に圧縮
- コンテンツ画像: 最大 1280px、WebP 形式に変換
- 章扉画像: 100px / 0.01MB に圧縮
- トーク用画像: 用途別圧縮
- プラン詳細用画像: 用途別圧縮
HEIC 形式の画像(iPhone 撮影など)はまず JPEG へ変換され、WebP 対応ブラウザではさらに WebP に圧縮される。WebP 未対応のブラウザでは JPEG のまま圧縮される。
整合性チェック(バッチ)
- 定期バッチで複数ストレージ間のファイルサイズ・チェックサムを突合
- 差分が検出された場合は運営担当者に通知
- 必要に応じて手動補修対応となる
未対応項目
- ファイルのマジックナンバー検査による MIME 検証
- ウイルススキャン
- サムネイル再生成専用経路
関連ドキュメント
- 関連 PSD:
../contents/— コンテンツ機能- 運営にお問い合わせください — 運営アドミンコンテンツ管理
- 横断/運用基盤 / バッチ運用 — バッチ運用