メインコンテンツへスキップ
友田 陽大

国内大手放送事業者の番組制作を支援する社内AIプラットフォーム(マルチサービス基盤・認証ハブを構築)

5つのAIサービスをGoogle Workspace SSOで束ねる自作OIDC認証ハブ(BFF)、放送品質の音声合成、テロップ誤字をOCR×音声認識で照合する誤字検出パイプライン、生成AI考査支援を、GCP上にIaCで構築

クライアント

国内大手テレビ放送事業者向けの社内コンテンツ制作支援AIプラットフォーム(社名非開示・NDA) | ドメイン: 放送番組制作ワークフロー(原稿のAI音声ナレーション、テロップ字幕の誤字脱字自動検出、生成AIによるコンテンツ考査・審査支援、アップロード素材のマルウェア検査) | 形態: 社内向けマルチテナントSaaS(Google Workspace の SSO で全社員に提供) | アーキテクチャ: GCP上のマイクロサービス・モノレポ(共通BFF認証ハブ+複数のAIツールサービス)

私の役割

テクニカルアーキテクト 兼 フルスタック開発者。共通基盤(BFF認証ハブ・OIDCプロバイダ・バックチャネルログアウト・PII暗号化)の設計から、音声合成サービス(ElevenLabs / Google Chirp3)、テロップ誤字検出のML/OCRパイプライン(FastAPI + Python + Cloud Workflows)、生成AI考査支援(Gemini 2.5 / Vertex AI)、マルウェアスキャナ(ClamAV on Cloud Run)まで、フロントエンド・バックエンド・GCPインフラ(Terraform)・CI/CD・可観測性を横断して実装。各サービス共通のキャッシュ・認証・ロギング・Terraformモジュールを単一の規約に統一し、横展開可能なプラットフォームとして構築した。

課題(Situation & Task)

放送局の制作現場には、ナレーション収録・テロップ校正・考査(放送基準チェック)といった、専門性が高く属人化しがちな作業が多く存在します。これらをAIで支援する複数のツールを、(1) 社員が一度のログインで横断利用でき、(2) 放送事業者の内部統制・情報セキュリティ基準を満たし、(3) 各ツールを独立してデプロイ・改善でき、(4) GPU/LLM/音声合成といった重く高価なAI処理を本番品質で安定運用できる、という相反する要件を同時に満たす形で提供する必要がありました。単発のPoCではなく、全社の制作ワークフローに組み込まれる『止まらない社内プラットフォーム』を構築することが求められました。

放送事業者向けの社内AIプラットフォームには、エンタープライズ特有の難所が凝縮されていました。

  1. 複数AIツールの統合とSSO: 音声合成・テロップ誤字検出・生成AI考査・動画要約など、性質の異なるツールを別々に作ると認証・権限・運用がバラバラになります。Google Workspace の SSO を起点に、各ツールへ安全にシングルサインオンさせつつ、ツールごとに権限とデプロイを分離する『認証ハブ』が必要でした。

  2. 放送事業者グレードのセキュリティと内部統制: 社内システムとはいえ、認可バイパス・PII漏洩・なりすましは許されません。トークンの寿命・監査ログ・PII暗号化・WAF・MFA・最小権限IAM・鍵レスCI/CDまで、内部統制に耐える多層防御を前提条件として組み込む必要がありました。

  3. 重く高価なAI処理の本番運用: テロップ誤字検出はOCR(画像)と音声認識(字幕と発話の照合)を組み合わせた長時間ジョブで、LLM OCRは高精度だが高コスト・低速です。音声合成は放送品質(サンプリングレート・フェード・発音辞書)が要求されます。これらを、コストを抑えつつ完走・再開できる形で運用する設計が必須でした。

  4. 素材の安全な受け入れ(ゼロトラストな入口): 外部から持ち込まれる動画・画像素材には、プラットフォームに到達する前にマルウェア検査をかけ、クリーン/隔離に振り分ける必要がありました。検査は最大数GiBの大容量素材でもメモリを枯渇させず、再試行に対して冪等でなければなりません。

技術選定の理由(Rationale)

  • Next.js 16 / React 19(App Router・RSC)でBFFと各ツールUIを統一: 認証ハブ(BFF)は機微なロジックをサーバ側に閉じ込め、Edge Runtimeミドルウェアで IPホワイトリスト+セッション検証を実施。各ツールも同じ Next.js 規約に揃え、学習コストとレビュー負荷を最小化

  • 認証は『自作OIDCプロバイダ + per-tool 短命JWT』: Google Workspace SSO(NextAuth.js v5 / Identity Platform)を起点に、BFFがツールごとの audience に絞った短命トークン(アクセストークン10分・IDトークン1時間)を発行。PKCE S256 を必須化し、ツール間のなりすましと認可コード横取りを構造的に排除

  • 重いAI処理はジョブ+ワークフローへ分離: テロップ誤字検出は FastAPI(async)+ Cloud Run Jobs + Cloud Workflows で構成。OCRと音声認識を並列実行し、長時間ジョブをHTTPから切り離して進捗・再開・冪等性を担保。音声合成は ElevenLabs / Google Chirp3 の2系統をプロバイダ抽象の背後に置き、ダミーモードでAPIコストなしにテスト可能に

  • 生成AIの考査支援は Gemini 2.5 + グラウンディング: 放送基準・記者ハンドブック等の観点別プロンプトで原稿・台本・絵コンテのリスクを判定し、グラウンディング由来の引用を付与して根拠を追跡可能に。API キー方式と Vertex AI(GCPサービスアカウント)方式を抽象化し、統制とコストで切替

  • データはGCPマネージドに集約: Cloud SQL(PostgreSQL / MySQL)はIAM認証・TLS必須(ENCRYPTED_ONLY)・プライベートIPで運用、キャッシュは Memorystore(Redis)、リアルタイム進捗は Firestore、素材は Cloud Storage。専用VMを持たずマネージドに寄せ、運用負荷とコストを抑制

  • インフラは100% Terraform(IaC): VPC〜Cloud Run〜Cloud SQL〜Cloud Armor〜Secret Manager〜Identity Platform〜Workflows まで約71モジュールでコード化。stg/prod の state を分離し、Cloud Build は『コンテナイメージと最新env』、Terraform は『インフラ構成』と責務を分離してドリフトを防止

  • CI/CDは Workload Identity Federation(OIDC)で鍵レス: GitHub Actions からサービスアカウント鍵を発行せずにGCPへ認証。Cloud Build で stg/prod を出し分け、DBマイグレーションは専用ジョブに分離。CodeQL・依存更新も自動化

実施したこと(Action)

  • 【自作OIDC認証ハブ(BFF)】 Google Workspace SSO を起点に、BFFが各ツールへ audience を絞った短命JWT(アクセストークン10分・IDトークン1時間)を発行。認可フローは PKCE S256 を必須化し、ツールへのトークン受け渡しは URL ではなく自動 POST する HTMLフォーム+リダイレクト元オリジンの HMAC 署名で MITM を防止。デバイス単位のセッションIDに sidGenerationentitlementsVersion を持たせ、特定デバイスのみの失効と権限変更の検知を可能に

  • 【バックチャネルログアウトと権限同期】 ログアウト・権限変更を各ツールへ非同期配信する仕組みを実装。イベントは HMAC-SHA256 で署名し、指数バックオフ(1s/5s/30s)で最大3回リトライ、(eventId, toolId) の一意制約でリプレイと重複処理を排除。ツールを疎結合に保ちながら、全ツール横断のログアウトを確実に伝播

  • 【PII暗号化と監査ログ】 外部ユーザーのメール・電話・氏名は AES-256-GCM で暗号化保存し、検索は復号せずに HMAC-SHA-256 のトークンで部分一致。秘密値の比較は定数時間比較(timingSafeEqual)でタイミング攻撃を防止。セッションの作成・失効・更新は監査ログに記録し、内部統制の証跡を確保

  • 【テロップ誤字検出パイプライン】 動画から字幕(テロップ)を抽出し、ローカルOCRでテロップの『切り替わり』を検出してユニークなテロップ群だけにLLM OCRを適用(フレーム全量にLLMを当てない)。同時に音声認識で発話を文字起こしし、OCR結果と照合して誤字脱字・NGワード・固有名詞の不一致を検出。OCRと音声認識を Cloud Workflows で並列実行し、処理時間を約30%短縮(逐次18分→並列13分)

  • 【長時間ジョブの冪等・再開設計】 セグメント単位に グローバルテロップID = segment_index × stride + local_id を割り当て、並列処理しても後段マージでIDが安定・再実行で冪等に。進捗は Firestore のスナップショット購読+SSEでUIへ準リアルタイム配信し、resolve_monotonic_progress_percent で進捗の逆行を防止。アップロードは署名付きURLのチャンク並列(最大8並列)で大容量素材に対応

  • 【放送品質の音声合成】 ElevenLabs / Google Chirp3 の2系統TTSをプロバイダ抽象の背後に統一し、出力を MP3 44.1kHz/192kbps・FFmpegでフェード正規化。発音辞書・テキスト前処理(漢字変換・空白除去)に対応し、原稿は楽観ロック(version列)で同時編集の競合を検知。dummyMode で実APIを叩かずに合成系をテストし、利用ログ(音声ID・文字数・ステータス)を全件記録してコストを可観測化

  • 【素材のマルウェア検査(ゼロトラスト入口)】 アップロード素材は Eventarc/GCS イベント駆動で ClamAV(Cloud Run)に渡し、最大10GiBをストリーミング検査(バッファせずメモリ枯渇を回避)してクリーン/隔離バケットへ振り分け。GCS複合アップロードの中間チャンクは正規表現でスキップ、ゼロ長ファイル・アップロード中・削除済みは安全に無視。File.move の原子性で再試行に冪等、スキャン結果は OpenTelemetry で Cloud Monitoring に送出

  • 【IaC・セキュリティ・CI/CD】 GCP全体を約71のTerraformモジュールでコード化。Cloud Armor(OWASP CRS 3.3+適応型DDoS防御+レート制限)、Cloud SQL(IAM認証・TLS必須・プライベートIP)、Identity Platform(SMS MFA・reCAPTCHA Enterprise)、Secret Manager(最新版のみ参照)、最小権限のサービスアカウントで多層防御。CI/CD は Workload Identity Federation(OIDC)で鍵レス認証し、stg で WAF を全面有効化して本番前に誤検知を潰す運用に

本プラットフォームの設計思想は、『複数のAIツールを、単一の認証・運用規約のもとで、放送事業者の統制に耐える品質で束ねる』ことでした。

認証ハブによる疎結合な統合: 各ツールにログイン機能を実装させると、認証品質がツールごとにばらつき、権限変更やログアウトの伝播が破綻します。そこでBFFを唯一のアイデンティティプロバイダとし、ツールには audience を絞った短命JWTだけを渡す設計にしました。トークンの受け渡しは URL ではなく自動 POST フォーム+オリジンHMAC署名で行い、リダイレクト経由のトークン漏洩を排除。ログアウト・権限変更はバックチャネルで署名付き・リトライ付き・重複排除付きに配信するため、ツールは疎結合のまま全社横断のセッション制御に追従します。

重いAI処理を『完走・再開・冪等』にする: テロップ誤字検出は、OCR(画像)と音声認識(発話)という重い処理の組み合わせです。フレーム全量にLLM OCRを当てるとコストが破綻するため、ローカルOCRでテロップの切り替わりを検出し、ユニークなテロップ群にだけLLMを適用します。OCRと音声認識は相互依存がないため Cloud Workflows で並列化し、処理時間を約30%短縮。長時間ジョブはセグメント分割し、グローバルなテロップIDを決定的に採番することで、並列実行・部分再実行・再試行のいずれでも最終結果が一意に収束します。

統制を機能と同列で作り込む: PIIは保存時に暗号化し、検索はHMACトークンで復号せずに行います。秘密値の比較は定数時間比較、認可フローは PKCE 必須、トークンは短命、操作は監査ログに残す——これらを後付けではなく初期設計に組み込みました。インフラ側も、Cloud SQL は IAM認証・TLS必須・プライベートIP、入口は Cloud Armor、CI/CD は鍵レス(OIDC)と多層で固め、stg で WAF を全面有効化して本番に出す前に誤検知や設定ミスを洗い出す運用にしています。

マネージドへの集約でコストと運用を最適化: 専用VMやKubernetesを持たず、Cloud Run(サービス+ジョブ)・Cloud SQL・Memorystore・Firestore・Cloud Workflows といったマネージドに寄せました。本番リージョンは常時1インスタンスを温め、副リージョンはゼロスケールでDR用とする非対称構成、Artifact Registry のイメージ保持上限などで、平常時コストを抑えつつ障害時の回復性を確保しています。

技術選定の理由

  • 自作OIDCプロバイダ + per-tool 短命JWT(PKCE S256必須):複数AIツールを疎結合にSSO統合

  • バックチャネルログアウト(HMAC署名・リトライ・重複排除):全社横断のセッション制御を確実に伝播

  • Cloud Workflows でOCR×音声認識を並列化:テロップ誤字検出を約30%高速化

  • ハイブリッドOCR(ローカルで切替検出→LLMは差分のみ):LLMコストを抑えつつ精度を確保

  • Cloud SQL(IAM認証・TLS必須・プライベートIP)+ Cloud Armor + 鍵レスCI/CD:放送事業者グレードの多層防御

担当領域

  • プラットフォーム設計・BFF認証ハブ(OIDC / バックチャネルログアウト / PII暗号化)の実装
  • 音声合成サービス(ElevenLabs / Google Chirp3)のフロント・バックエンド実装
  • テロップ誤字検出パイプライン(FastAPI / Python / OCR / 音声認識 / Cloud Workflows)の実装
  • 生成AI考査支援(Gemini 2.5 / Vertex AI / グラウンディング)の実装
  • マルウェアスキャナ(ClamAV on Cloud Run / Eventarc)の実装
  • GCPインフラ構築・運用(Terraform / Cloud Run / Cloud SQL / Cloud Armor / Identity Platform)
  • CI/CD(Cloud Build / GitHub Actions / Workload Identity Federation)と可観測性の整備

使用技術

Next.js 16
React 19
TypeScript 5
NextAuth.js v5
Prisma
Tailwind CSS 4
Jest
Playwright
FastAPI
Python 3.12
SQLAlchemy (async)
uv
Ruff
Pyright
loguru
pytest
ElevenLabs
Google Cloud TTS (Chirp3)
Gemini 2.5
Vertex AI
PaddleOCR
Cloud Speech-to-Text
ClamAV
PostgreSQL
MySQL
GCP
Cloud Run
Cloud Run Jobs
Cloud SQL
Memorystore (Redis)
Cloud Storage
Firestore
Cloud Workflows
Cloud Tasks
Pub/Sub
Eventarc
Secret Manager
Cloud Armor
Identity Platform
Artifact Registry
Cloud Build
Terraform
Docker
GitHub Actions (OIDC/WIF)
OpenTelemetry
Cloud Logging
Cloud Monitoring

数字で見る成果

統合したAIサービス
5サービス共通BFF認証ハブ+音声合成・テロップ誤字検出・生成AI考査・マルウェア検査を単一SSOで統合
テロップ誤字検出の高速化
30%OCRと音声認識を Cloud Workflows で並列実行(逐次18分→並列13分)
アクセストークン有効期間
10分per-tool audience に絞った短命JWT。IDトークンは1時間・PKCE S256必須
Terraformモジュール
71個VPC・Cloud Run・Cloud SQL・Cloud Armor・Identity Platform までGCPを100%コード化(IaC)
PII暗号化
256bit (AES-GCM)メール・電話・氏名を暗号化保存し、検索はHMACトークンで復号せず実施
ストリーミング検査の上限
10GiBClamAVでバッファせず検査しメモリ枯渇を回避。再試行に冪等

成果

  • 性質の異なる5つのAIサービスを、Google Workspace SSO の一度のログインで横断利用できる社内プラットフォームとして統合。各ツールは独立してデプロイ・改善できる疎結合構成
  • 自作OIDC認証ハブ(BFF)で、ツールごとに audience を絞った短命JWT(アクセストークン10分)を発行。PKCE S256 を必須化し、URLにトークンを載せない自動POST+オリジンHMAC署名でなりすまし・横取りを構造的に排除
  • ログアウト・権限変更を、HMAC署名・指数バックオフ・重複排除付きのバックチャネルイベントで全ツールへ確実に伝播(疎結合のまま全社横断のセッション制御を実現)
  • PIIを AES-256-GCM で暗号化保存し、検索は復号せず HMAC トークンで実施。定数時間比較・監査ログとあわせ、放送事業者の内部統制要件に対応
  • テロップ字幕の誤字脱字を、OCR(画像)と音声認識(発話)のクロスチェックで自動検出。Cloud Workflows の並列実行で処理時間を約30%短縮(逐次18分→並列13分)
  • ハイブリッドOCR(ローカルでテロップ切り替わりを検出→LLM OCRは差分のみ)で、精度を保ちながらLLM呼び出しを最小化しコストを抑制
  • 長時間ジョブにグローバルなテロップIDを決定的採番し、並列処理・部分再実行・再試行のいずれでも結果が一意に収束する冪等・再開可能な設計を実装
  • 放送品質のAIナレーション(ElevenLabs / Google Chirp3 の2系統TTS・44.1kHz/192kbps・発音辞書)を、プロバイダ抽象とダミーモードで保守性高く構築
  • アップロード素材を ClamAV でストリーミング検査(最大10GiB・メモリ枯渇回避)し、クリーン/隔離へ原子的・冪等に振り分けるゼロトラストな入口を構築
  • GCP全体を約71のTerraformモジュールでIaC化。Cloud SQL(IAM認証・TLS必須・プライベートIP)・Cloud Armor(OWASP CRS 3.3)・Identity Platform(MFA)・最小権限IAMで多層防御し、CI/CD は Workload Identity Federation(OIDC)で鍵レス化

同様の課題、抱えていませんか?

あなたのビジネス課題も、最新の技術で解決できます。 まずは30分の無料技術相談から、状況をお聞かせください。

自社の課題もSaaS化できるか相談する

プロジェクト単位(請負)・技術顧問、どちらにも対応可能です

全ケーススタディを見る