CEL を活用した ABEMA のコンテンツ選定

1.1K Views

January 18, 25

スライド概要

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

2025 January 18th CEL を活用した ABEMA のコンテンツ選定 株式会社サイバーエージェント 坂田 淳樹 AbemaTV, Inc. All Rights Reserved 1

2.

Profile 坂田 淳樹 (さかた あつき) バックエンドエンジニア 2023 年新卒 株式会社サイバーエージェント ABEMA のコンテンツ推薦をメインに従事 よく使う技術: Go, Google Cloud, Kubernetes 福岡県北九州市 出身 AbemaTV, Inc. All Rights Reserved 2

3.

INDEX 1. CEL とは 2. ABEMA での活用例 AbemaTV, Inc. All Rights Reserved 3

4.

CEL とは AbemaTV, Inc. All Rights Reserved 4

5.

CEL とは Google が開発した軽量で高速な式評価言語。 user 1 { “age”: 30, “address”: “fukuoka” } user 2 { “age”: 40, “address”: “tokyo” } user 3 { “age”: 25, “address”: “osaka” } user 4 { “age”: 35, “address”: “fukuoka” } age >= 30 && address == “fukuoka” user 1 { “age”: 30, “address”: “fukuoka” } user 4 { “age”: 35, “address”: “fukuoka” } AbemaTV, Inc. All Rights Reserved 5

6.

CEL の活用例 セキュリティとアクセス制御 Kubernetes での活用 イベント処理とフィルタリング IAM や Firestore ルールでの認可条件 カスタムリソース定義でのバリデーション メッセージやイベントを条件に基づいて効 やアクセス制御。 ロジックやポリシーチェック。 率的に評価・フィルタリング。 AbemaTV, Inc. All Rights Reserved 6

7.

CEL の活用例 【ABEMA のコンテンツ選定の課題感】 コンテンツは手動で設定されていた。 または要件ごとに都度開発が必要だった。 イベント処理とフィルタリング メッセージやイベントを条件に基づいて効 CEL を活用したフィルタリングによって コンテンツ選定が柔軟になると考えた。 率的に評価・フィルタリング。 AbemaTV, Inc. All Rights Reserved 7

8.

CEL の特徴 シンプルで直感的な構文 高速な評価エンジン 式評価が速いため大量のデータに対応可能 。 読み書きしやすい。 例 contentType == “series” && genreID == “animation” 型安全性 静的型チェックにより実行前にエラーを検出 。 豊富な機能セット 比較演算、リスト・マップ操作、正規表現、カスタム関 数をサポート。 AbemaTV, Inc. All Rights Reserved 8

9.

CEL の処理プロセス 1. 構文解析 (Parse) 抽象構文木 (AST) を生成。 2. 型チェック (Check) 型安全性を確認し、実行前にエラーを排除。 3. 評価 (Evaluate) ref: https://codelabs.developers.google.com/codelabs/cel-go?hl=ja#1 型チェック済みの AST を元に評価を実行。 AbemaTV, Inc. All Rights Reserved 9

10.

ABEMA での活用例 AbemaTV, Inc. All Rights Reserved 10

11.

用語の説明 コンテンツ : 番組(例: シリーズ、シーズン、エピソード) モジュール : 何らかの条件を満たすコンテンツの集合-ァ ホーム面 視聴面 テレビ番組ランキング ユーザーが 再生中のコンテンツ 放送中 AbemaTV, Inc. All Rights Reserved

12.

システムの概要 1. コンテンツの全キャッシュ すべてのコンテンツをアプリケーション側に事前キャッシュし、即時アクセスを可能 に。 2. CEL 式の管理画面入稿 管理者が条件を CEL 式として記述し、即座に適用。 CEL 式とソート順を指定し、コンパイルエラーを検出可能 に。 3. 動的評価 リクエスト時に CEL 式を評価し、コンテンツを表示。 AbemaTV, Inc. All Rights Reserved 12

13.

CEL 式の入稿例 1. コンテンツの型定義 cel.NewEnv( cel.Variable("contentType", cel.StringType), cel.Variable("seriesID", cel.StringType), cel.Variable("genreID", cel.StringType), cel.Variable("startAt", cel.IntType), cel.Variable("endAt", cel.IntType), ) あるシリーズのエピソード一覧 contentType == “episode” && seriesID == “シリーズID” ソート順: エピソード No. 昇順 AbemaTV, Inc. All Rights Reserved 13

14.

CEL 式の入稿例 2. コンテンツの型定義 cel.NewEnv( cel.Variable("contentType", cel.StringType), cel.Variable("seriesID", cel.StringType), cel.Variable("genreID", cel.StringType), cel.Variable("startAt", cel.IntType), cel.Variable("endAt", cel.IntType), ) アニメランキング contentType == “series” && genreID == “animation” ソート順: 視聴数 降順 AbemaTV, Inc. All Rights Reserved 14

15.

CEL 式の入稿例 3. コンテンツの型定義 cel.NewEnv( cel.Variable("contentType", cel.StringType), cel.Variable("seriesID", cel.StringType), cel.Variable("genreID", cel.StringType), cel.Variable("startAt", cel.IntType), cel.Variable("endAt", cel.IntType), ) 放送中 contentType == “slot” && startAt <= now() && now() < endAt ソート順: 再生開始日時 昇順 ※ now() の部分を現在時刻にリプレイスして評価しています。 AbemaTV, Inc. All Rights Reserved 15

16.

導入の利点 運用負荷軽減 柔軟性向上 パフォーマンスを維持 ビジネス側で直接運用が可能。 開発なしに条件を動的に更新できる。 CEL の高速な式評価。 AbemaTV, Inc. All Rights Reserved 16

17.

AbemaTV, Inc. All Rights Reserved