Upgrade to Pro — share decks privately, control downloads, hide ads and more …

サーバーレスで作る、動画データ管理基盤

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 サーバーレスで作る、動画データ管理基盤

WinTicket スポーツ映像テック事業部で開発する「動画データ管理基盤 (DAM)」の話。競輪 WINLIVE / ABEMA × ボクシングなどスポーツ中継の映像から ML/CV モデル開発を支えるため、AWS MediaLake OSS をベースにサーバーレスで構築しています。GUI でパイプラインを組み立てる仕組み、Lambda としてカスタムノードを追加できる拡張性、CVAT アノテーションの自動連携、TwelveLabs Marengo + OpenSearch によるセマンティック検索などを実装。「動画の管理・整理・検索といった汎用化できる工程は基盤に任せ、ML/CV エンジニアは本来のモデル開発に集中できる」という思想で設計しています。CA DATA NIGHT #9 (2026-05-21) 登壇資料。

Avatar for Keigo Ibaraki

Keigo Ibaraki

May 21, 2026

More Decks by Keigo Ibaraki

Other Decks in Programming

Transcript

  1. 茨木 啓瑚(いばらき けいご) CyberAgent / WinTicket バックエンド + 基盤 DAM

    (= MediaLake) 開発担当 AWS Community Builders / AI Engineer (2026〜) 自己紹介 CA DATA NIGHT #9 / 2026-05-21 2
  2. TODAY'S AGENDA 1 なぜ「動画データ管理基盤」が要るのか 2 何が、どう溜まるのか 3 アーキ — AWS

    MediaLake OSS と拡張 4 Pipeline 設計の自由さ 5 アノテーション / 学習データ検索 6 これから — 移譲できる世界線へ CA DATA NIGHT #9 / 2026-05-21 4
  3. SECTION 01 / 06 1 なぜ「動画データ管理基盤」が要るのか 2 何が、どう溜まるのか 3 アーキ

    — AWS MediaLake OSS と拡張 4 Pipeline 設計の自由さ 5 アノテーション / 学習データ検索 6 これから — 移譲できる世界線へ CA DATA NIGHT #9 / 2026-05-21
  4. WinTicket 独自のデータとクリエイティブで、新しいスポーツ中継映像を作る WINLIVE(競輪) — 選手の体力(HP)などを ML モデルでリアル タイム可視化 ABEMA ×

    ボクシング — パンチ数などをリアルタイム表示 映像解析・低遅延伝送・CG 描画・配信基盤を ABEMA 連携で他競技へ展開中 スポーツ映像テック事業部 CA DATA NIGHT #9 / 2026-05-21 6
  5. スポーツ映像から AI モデルを作る — その土台が DAM WINLIVE 競輪などの スポーツライブ配信 ▶

    大量のスポーツ映像 試合・レースの 映像が日々たまる ▶ CV / ML モデル開発 選手検出・ トラッキング など DAM は、この「映像 → モデル開発」を支えるデータ基盤 なぜ DAM を作ったか CA DATA NIGHT #9 / 2026-05-21 7
  6. 映像が「ある」だけでは、良いモデルは作れない 1 大量で良質な映像 質の良い映像が、条件を満たして大 量に 2 快適に探索できる 集めた映像を、ストレスなく見て回 れる 3

    集約して検索できる 学習させたいシーンを、ピンポイン トで取り出す DAM はこの 3 つをまとめて引き受ける 良いモデル開発に必要な 3 つ CA DATA NIGHT #9 / 2026-05-21 8
  7. 動画が、あちこちに散らばっていた ローカル PC Google Drive 個人 EC2 命名もバラバラ、所在は個人の頭の中にしかない DAM を作る前、何が起きていたか

    keirin_0510.mp4 編集済み_final2.mp4 IMG_4821.mp4 競輪5月/ (フォルダ) race_data_v3.mp4 untitled.mp4 /home/user/videos/ batch_03.mp4 tmp_clip.mp4 CA DATA NIGHT #9 / 2026-05-21 9
  8. SECTION 02 / 06 2 何が、どう溜まるのか 1 なぜ「動画データ管理基盤」が要るのか 3 アーキ

    — AWS MediaLake OSS と拡張 4 Pipeline 設計の自由さ 5 アノテーション / 学習データ検索 6 これから — 移譲できる世界線へ CA DATA NIGHT #9 / 2026-05-21
  9. 大きく 4 種類のデータが DAM にそろう 元動画 mp4 本体 メタデータ CSV

    で柔軟に 実行履歴 Pipeline 履歴 副産物 サムネ / proxy / クリップ 「データの箱」に何が溜まる? CA DATA NIGHT #9 / 2026-05-21 13
  10. 撮影日 / 競技 / レース ID などの軸 を、アセットごとに DAM で確認

    CSV で柔軟に持てるので、スポーツ に応じて軸を後から足せる メタデータ — アセットごとに DAM で確認 CA DATA NIGHT #9 / 2026-05-21 15
  11. 「整然と置く」じゃなく「DAM が整理する」 Before 「整然と置いてください」 置き方のルールを守ってもらう 命名規則・ディレクトリ階層を統一 守られないと破綻 After 「S3 のどこでも

    OK」 S3 の 適当な階層に置けば良い DAM が Collection で整理する 置き手の認知負荷ゼロ 置き方の発想を 1 回ひっくり返す CA DATA NIGHT #9 / 2026-05-21 18
  12. 入口は 2 つ、Asset になれば扱いは同じ 自動 Connectors + EventBridge S3 の各所に置くと

    upload を 検知 手動 Ingest Connector に無い動画も UI か ら ▶ Asset になる 入口がどちらでも 同じ Asset に ▶ Collection で整理 条件に合う Asset を 自動でまとめる DAM に溜まる入口は 2 つ CA DATA NIGHT #9 / 2026-05-21 19
  13. SECTION 03 / 06 3 アーキ — AWS MediaLake OSS

    と拡張 1 なぜ「動画データ管理基盤」が要るのか 2 何が、どう溜まるのか 4 Pipeline 設計の自由さ 5 アノテーション / 学習データ検索 6 これから — 移譲できる世界線へ CA DATA NIGHT #9 / 2026-05-21
  14. 動画が入り、処理され、検索できるまで 入口 API Gateway Cognito CloudFront ▶ 取込 EventBridge Lambda

    ▶ パイプライン Step Functions MediaConvert ▶ 保管 S3 DynamoDB ▶ 検索 OpenSearch EC2 / RDS は不使用 — すべてサーバーレス系のマネージドサービス アーキはぜんぶサーバーレスの 5 ブロック CA DATA NIGHT #9 / 2026-05-21 21
  15. AWS 公式リファレンス「Guidance for Media Lake on AWS」がベース 1 メディアを S3

    にアップロードして処理を開始 2 Lambda・SQS・EventBridge がイベントを連携 3 セマンティック / キーワード検索とフィルタ 4 メタデータ・類似度で関連アセットをグルーピング 5 proxy・サムネなど派生アセットを生成 6 技術 / ユーザー定義メタデータを抽出 7 デフォルト / カスタムパイプラインで分析・変換 8 REST API・イベントで外部システムと連携 9 Lambda・EventBridge がカスタム処理を実行 10 S3・API Gateway・OpenSearch 等が基盤を構成 ベースは AWS Solutions Library の OSS CA DATA NIGHT #9 / 2026-05-21 22
  16. コアはそのまま、足りないところだけ足す MediaLake OSS の素 そのまま使う Connectors / EventBridge 連携 Step

    Functions パイプライン基盤 OpenSearch 検索 Asset / Collection の基本機能 WinTicket 拡張 拡張ポイントだけ自社実装 手動入稿 (Ingest) スポーツ向け カスタム Pipeline ノード CVAT アノテーション連携 Collection メタデータ管理 メタデータ CSV のスキーマ自由化 クロスアカウント VPC Peering / PrivateLink WinTicket は拡張ポイントだけ自社実装した CA DATA NIGHT #9 / 2026-05-21 23
  17. Model 開発に近づける機能が標準で豊富だった MediaLake アノテ連携 (CVAT 等): 組み込みやすい Semantic Search: 標準対応

    Pipeline ノード化: 標準対応 AWS との統合: 公式 OSS / ネイティブ 他の映像管理 OSS / SaaS アノテ連携: 自作が多い Semantic Search: 自作 or オプション Pipeline ノード化: 限定的 AWS との統合: 別途要構築 なぜ MediaLake OSS を選んだか CA DATA NIGHT #9 / 2026-05-21 24
  18. AWS 公式 OSS を選んだ理由は 3 つ AWS 公式 OSS AWS

    が公式に公開する OSS。信頼 性が高く、メンテナンスも続く 拡張ポイントを備える 拡張点が設計されていて、コアを フォーク改造せずに機能を足せる サーバーレス構成 EC2 / RDS レスで運用負荷が低 く、他スポーツへの横展開もしや すい 結果 — コアに手を入れないから、upstream の更新に乗り続けられる 公式 OSS だから upstream に乗り続けられる CA DATA NIGHT #9 / 2026-05-21 25
  19. SECTION 04 / 06 4 Pipeline 設計の自由さ 1 なぜ「動画データ管理基盤」が要るのか 2

    何が、どう溜まるのか 3 アーキ — AWS MediaLake OSS と拡張 5 アノテーション / 学習データ検索 6 これから — 移譲できる世界線へ CA DATA NIGHT #9 / 2026-05-21
  20. この 3 つを、このあと具体で見ていく 1 GUI でノードを自由に組み、パイプラインを作れる コードを書かずに、編集画面で並べてつなぐ 2 成果物を実行履歴としてアセットに残せる 出力は実行単位で分かれ、同じ

    Asset に積み上がっていく 3 カスタムノードを Lambda 1 つで追加できる 推論コードを Lambda にすれば、そのままノードになる Pipeline 設計の「自由」は 3 つ CA DATA NIGHT #9 / 2026-05-21 27
  21. パイプラインの作成・編集・デプロイまで DAM の UI で完結 動画の処理パイプラインを作成・編 集・デプロイまで DAM の UI

    上で完 結 デフォルトに加えて、自分でカスタ ムのパイプラインも足していける DAM の UI でパイプラインを組める CA DATA NIGHT #9 / 2026-05-21 28 1 2 3 GUI で組み立てる
  22. 裏側は Step Functions、各処理がノードとして抽象化 設計思想 動画に対する処理を ノードとして表現 ノードを 並べて組み立てる 視覚的に Pipeline

    を構築 技術スタック Step Functions で State Machine 定義 各 State = Lambda ノード DAM UI で GUI 編集できる Pipeline = ノードの組み合わせ CA DATA NIGHT #9 / 2026-05-21 29 1 2 3 GUI で組み立てる
  23. 右の Available Nodes から選んでキャンバスに配置する 右の Available Nodes から使いたい ノードを選び、キャンバスに並べて つなぐ

    コードを書かずに、GUI でパイプラ インを組み立てられる ノードを選んで、並べて、つなぐ CA DATA NIGHT #9 / 2026-05-21 30 1 2 3 GUI で組み立てる
  24. 自動トリガ系 — upload をきっかけに自動で動く 1 S3 に動画を upload するだけで EventBridge

    → MediaConvert が自動起動 2 置いた瞬間に、サムネなどの副 産物が揃う 置くだけでサムネが揃う CA DATA NIGHT #9 / 2026-05-21 31 1 2 3 GUI で組み立てる
  25. TwelveLabs の埋め込みを生成し OpenSearch に保存するカスタム例 1 TwelveLabs Marengo を Bedrock 経由で呼び、埋め込み

    を生成 2 生成した埋め込みを OpenSearch に保存 動画を埋め込み化して OpenSearch へ CA DATA NIGHT #9 / 2026-05-21 32 1 2 3 GUI で組み立てる
  26. 手動トリガ系 — タイムコードでシーンを抜き出す 1 タイムコード(開始 / 終了)を 指定して、その区間を切り出し 2 長尺動画から特定シーンだけ

    — 学習データや配信用クリップに 使う 指定区間をクリップに切り出す CA DATA NIGHT #9 / 2026-05-21 33 1 2 3 GUI で組み立てる
  27. 出力先は実行メタデータから動的に決まる 実行ごと pipeline-executions/{id}/ クリップ / フレーム / CVAT 連携 実行のたびに新しい場所へ

    後から比較・追跡できる master 最新だけが正 サムネ / proxy 実行のたびに上書き 最新の 1 つで十分なもの 成果物の置き方は 2 パターン CA DATA NIGHT #9 / 2026-05-21 34 1 2 3 実行履歴で管理・蓄積
  28. 同じパイプラインでも成果物が実行ベースで残る Asset(元動画) に、パイプラインを回すたびに 実行 ID 単位で成果物が残る 1 pipeline-executions/exec-001/ clips/ frames/

    cvat/ 1 回目の実行結果 2 pipeline-executions/exec-002/ clips/ frames/ cvat/ 2 回目の実行結果 実行ごとに別フォルダで残るから、後から実行同士を比較・追跡できる アセットに実行履歴が積み上がる 3 pipeline-executions/exec-003/ … 実行するたびに積み上がっていく CA DATA NIGHT #9 / 2026-05-21 35 1 2 3 実行履歴で管理・蓄積
  29. 推論コードを Lambda 関数にすれば、そのまま UI に並ぶ Lambda 関数として実装 def handler(event, context):

    # event からノード固有の入力を受け取る result = run_custom_logic(event) return {"output": result, "metadata": {...}} handler を 1 つ書くだけ 入出力の型はノード種別ごとに合わせる ▶ 登録 Available Nodes に追加される 他のノードと同列に並んで GUI で組める ノードの実体は Lambda 関数 1 つ CA DATA NIGHT #9 / 2026-05-21 36 1 2 3 カスタムノード追加
  30. 既存パイプラインに 1 ノード足すだけで実験できる 新しい AI 機能を試したいとき 既存 Pipeline いま動いてるノード列 新ノード

    試したい AI 機能を Lambda として実装 追加 差し込み GUI で位置を選んで挿入 即実行 既存を壊さず新フロー を試行 CA DATA NIGHT #9 / 2026-05-21 37 1 2 3 カスタムノード追加
  31. SECTION 05 / 06 5 アノテーション / 学習データ検索 1 なぜ「動画データ管理基盤」が要るのか

    2 何が、どう溜まるのか 3 アーキ — AWS MediaLake OSS と拡張 4 Pipeline 設計の自由さ 6 これから — 移譲できる世界線へ CA DATA NIGHT #9 / 2026-05-21
  32. 良い ML モデルは、良い学習データから 溜めた動画も、そのままでは学習に使えない。学習データに変える工程が、この 2 つ。 前半 アノテーション 動画に正解ラベルを付けて学習データにする —

    モデルの精度を左右する工程 検索が速いほど、アノテーションも速く回る 前半 — アノテーション 後半 学習データ検索 狙ったシーンの動画を自然言語で見つけ、アノテ対象を素早く集める CA DATA NIGHT #9 / 2026-05-21 39
  33. 溜めた動画にラベルを付けて、初めて学習に使えるデータになる ML モデルの多くは教師あり学習。正解ラベルの付いたデータが、学習の前提になる。 溜めた動画 ラベル無し ▶ アノテーション 正解ラベルを付与 ▶ 学習データ

    ラベル付き ▶ ML モデル 学習に使う ここから、そのアノテーションを支える DAM の仕組みの話に入る 学習データは、アノテーションから生まれる CA DATA NIGHT #9 / 2026-05-21 40 1 2 アノテーション
  34. Computer Vision Annotation Tool — 動画にラベルを付ける OSS のツール Computer Vision

    Annotation Tool の略 矩形・ポリゴン・キーポイントなど、用 途に応じたラベルを付けられる OSS として公開され、誰でも利用できる WinTicket のアノテーション基盤として 採用 実際の CVAT 画面 — 競輪映像のフレームに選手を矩形でラベリング CVAT — 画像・動画アノテーションの OSS ツール CA DATA NIGHT #9 / 2026-05-21 41 1 2 アノテーション
  35. OSS の CVAT を、専用 AWS アカウントの EC2 にセルフホスト CVAT は

    EC2 にセルフホストして運用し ている DAM 本体とは 別の AWS アカウント に 分離している 専用の AWS アカウント EC2 インスタンス CVAT OSS をセルフホスト アノテーションは CVAT を使う CA DATA NIGHT #9 / 2026-05-21 42 1 2 アノテーション
  36. IAM ロールとリソースポリシーで AWS アカウントを跨ぐ DAM アカウント Lambda / S3 /

    DynamoDB ⟷ IAM ロール + Resource Policy cross-account access の橋渡し ⟷ CVAT アカウント EC2 セルフホスト + アノテ DB クロスアカウント連携の工夫 CA DATA NIGHT #9 / 2026-05-21 43 1 2 アノテーション
  37. パイプラインのノードの 1 つとして CVAT 連携が動く 1 Asset 選択 DAM UI

    で動画を選ぶ ▶ 2 Pipeline 起動 CVAT 連携ノードを実行 ▶ 3 CVAT Task 登録 cross-account で 自動登録 Pipeline ノードとして組み込み CA DATA NIGHT #9 / 2026-05-21 44 1 2 アノテーション
  38. 手動トリガ系 — 連番画像に切り出して CVAT へ 1 動画を選んでノードを起動 → 連 番画像に切り出し

    → CVAT に Task 自動登録 2 アノテ作業の入口が、画面 1 操 作で済む 選ぶだけで CVAT に登録される CA DATA NIGHT #9 / 2026-05-21 45 1 2 アノテーション
  39. 手作業での準備 → 画面 1 操作で起動 Before CV エンジニアが個人で準備していた 動画データの格納場所を確認するところか ら

    CVAT に手で取り込み、タスクを設定 アノテ開始までに手間がかかる After DAM UI から CVAT ノードを起動 メタデータと動画が そのまま渡る アノテーターはタスクを開くだけ 起動コストがほぼゼロに ラベリング起動コストが下がる CA DATA NIGHT #9 / 2026-05-21 46 1 2 アノテーション
  40. Bedrock 経由で Marengo を呼んで、OpenSearch で vector 検索 自然言語 クエリ 「ゴール直前」

    ▶ AWS Bedrock TwelveLabs Marengo で embedding ▶ OpenSearch knn vector 検索 (クリップ単位) ▶ 関連シーン visual / audio / transcript 別 Semantic Search は Bedrock × OpenSearch で動く CA DATA NIGHT #9 / 2026-05-21 50 1 2 学習データ検索
  41. メタ付け・整理・検索を Agent に寄せていく MetaDataAgent で CSV メタデータを自動付与 動画を勝手に Collection にまとめてくれる

    Agent 自然言語で「あのシーン探して」→ Agent が探して持ってくる CV エンジニアの 試行回数を構造的に増やす 発見性は、人ではなく Agent に渡す CA DATA NIGHT #9 / 2026-05-21 51 1 2 学習データ検索
  42. SECTION 06 / 06 6 これから — 移譲できる世界線へ 1 なぜ「動画データ管理基盤」が要るのか

    2 何が、どう溜まるのか 3 アーキ — AWS MediaLake OSS と拡張 4 Pipeline 設計の自由さ 5 アノテーション / 学習データ検索 CA DATA NIGHT #9 / 2026-05-21
  43. 土台ができた、というところまで来ています DAM の現在地 取り込み 完了 Connectors / Ingest 整理 完了

    Collections Pipeline 完了 ノード化 + 拡張性 検索 立ち上げ中 Semantic Search 本格運用 Agent これから 自動メタデータ / 自動検索 CA DATA NIGHT #9 / 2026-05-21 53
  44. 例:CVAT 連携 — 動画選択から Task 登録までを 1 操作に BEFORE 手作業ベース

    動画ファイルをローカルに集める 連番フレームに切り出し CVAT 画面で Task を作成 フレームを個別にアップロード AFTER(DAM) DAM UI で 1 操作 Asset から動画を選ぶ CVAT 連携パイプラインを起動 連番画像化 → CVAT Task 登録まで自動 アノテーション起動コストが構造的に下がる(という狙いで作っている) 道半ば — でもここが効いてきた CA DATA NIGHT #9 / 2026-05-21 54
  45. DAM 周辺の拡張ロードマップ 次にやること 検索 UI 磨き CV エンジニア以 外にも触っても らう

    CVAT 動線深 化 起動自動化 + 品 質チェック Model 管理接 続 学習データとモ デルのリネージ MetaDataAgent メタデータ自動付 与 構想 Collection Agent 動画を勝手にま とめる Agent 構想 CA DATA NIGHT #9 / 2026-05-21 55
  46. 専門性は専門に、汎用化できるところは基盤と Agent に 汎用化 → 基盤 / Agent 移譲できる仕事 動画の管理・配置

    メタデータの付与 Collection への整理 アノテ起動・学習データ検索 専門性 → CV/ML エンジニア 専門性が必要な仕事 ML モデルのアーキ設計 評価指標の設計 学習データの品質判断 モデルの本番展開判断 移譲できる世界線へ CA DATA NIGHT #9 / 2026-05-21 56