こんにちは。 6月から7月にかけて、サイバーエージェントの就業型インターンシップ「CA Tech JOB」に参加した早川 仁来(にらい)です。 普段は大学院修士1年として、ゲームとAIを組み合わせた研究やLLMのバイアスに関する研究に取り組んでいます。
今回のインターンでは極AI基盤チームに配属され、性質の異なる2つの技術ミッションに取り組みました。
- 社内の生成クリエイティブ評価基盤の性能改善とアーキテクチャ刷新
- 分散トレースを整備して計測結果の解釈と改善を重ね、主要エンドポイントの p50 レイテンシを最大128倍高速化
- 縦画面広告のクリエイティブを対象とした広告シーン分割アプリの新規開発
- 人間をシーン分割の評価として使い、Coding Agent が自律的に改善ループを回して精度を高める仕組みの構築
この2つのミッションを一貫して支えたのが、Coding Agent を開発ワークフローに組み込んだ AI Native な開発プロセスです。 2ヶ月間で作成およびマージした PR は累計600本に達しました。
1. 生成クリエイティブ評価基盤のレイテンシ改善
初期実装の経緯と拡張に伴う性能低下
対象となったのは、極AI基盤チーム内で生成されたクリエイティブの評価やレビューを支える社内 Web アプリケーションです。
このプロダクトは、AI ツールを活用したフルバイブコーディングによって、1人の手でゼロから迅速に立ち上げられた経緯がありました。 初期のプロトタイプ構築は速かった一方、機能拡張が進むにつれてデータ規模の拡大とともにパフォーマンスの低下が表面化していました。
日々の業務で画面の操作やデータ取得に数秒以上待たされる状態は、社内ユーザーの作業効率を低下させます。 そのため、コードのリファクタリングを行ってレスポンス時間を短縮し、業務効率を最適化することがミッションとなりました。
分散トレースの整備とボトルネックの特定
推測による場当たり的な修正をやめ、OpenTelemetry と Cloud Trace による分散トレースを整備しました。
処理ごとの消費時間を可視化し、計測結果を解釈して仮説を立て、改善して再度測り直す手順を繰り返しました。 最終的なベンチマーク計測では、主要エンドポイントの p50 レイテンシを最大128倍高速化できました。
このプロセスの中で特定して解消した主なボトルネックは以下の通りです。
PostgreSQL RLS の InitPlan 化
マルチテナント分離のために PostgreSQL の Row Level Security(RLS)を使用していましたが、実行計画を調査したところ、1行スキャンするごとにサブクエリが再評価される SubPlan ループが発生していました。
ポリシーの条件式を、クエリ実行開始時に1度だけ評価される InitPlan の形に書き換えることで、大量データスキャン時に発生していた RLS の評価オーバーヘッドを極小化しました。
外部 IdP への同期通信排除とローカル署名検証への移行
API のレスポンスに時間がかかっていた箇所のトレースを拡大すると、DB クエリ自体は数ミリ秒で完了しているにもかかわらず、外部 IdP に対するトークン失効確認の同期 HTTP 通信がリクエストごとに発生し、数十から数百ミリ秒を占有していることが判明しました。
このアプリの立ち上げ初期に、エージェントが「ログアウト後のトークンを確実に失効させる安全な修正」として、リクエストごとに外部 IdP へ同期問い合わせを行う設定を追加していた経緯がありました。 エージェントの提案をそのまま採用した結果、全リクエストに外部ネットワーク I/O が乗る構造になっていたのです。
そこで、毎リクエストで外部 IdP を同期的に呼び出すのをやめ、IdP の公開鍵を用いたローカル環境での JWT 署名検証を基本としつつ、即時失効が必要なセッション管理は自前 DB 側で担保する設計へ再構築しました。 これにより、セキュリティ要件を満たしたまま外部通信のオーバーヘッドをゼロに抑えました。
このほかにも、Node.js の setInterval に大きな数値を渡したことで 32bit 符号付き整数がオーバーフローし 1ms 間隔で発火していたタイマーバグの解消など、分散トレースを手がかりに大小様々なボトルネックの潰し込みを行いました。
2. 縦画面広告のクリエイティブを対象とした広告シーン分割アプリの開発
もう1つのミッションが、縦画面広告のクリエイティブを対象としたシーン境界の自動検出アプリの開発です。
縦画面広告の分析意義と検出の難しさ
TikTok や Instagram Reels、YouTube Shorts などで配信される縦画面広告は、短い尺の中に複数の短いシーンを組み合わせて作られていることが大半です。
動画をシーン単位で高精度に分割できると、「どのパターンの冒頭シーンが最もユーザーを惹きつけたか」といった要素別の勝ちパターン分析や、効果の高かったシーンアセットの組み合わせ直しや再活用が容易になります。
しかし、縦画面広告はテンポが速く、激しいテロップの動きやモーショングラフィックスが含まれるため、単純なフレーム差分だけでは誤検出が多発します。
人間を評価として用いる自律改善ループ
この課題に対して、人間が手作業でアルゴリズムをチューニングし続けるのではなく、人間をシーン分割の評価として使い、Coding Agent に自律的な改善ループを回させる仕組みを構築しました。
- レビュー環境の提供:ローカルで動画とシーン分割結果を目視確認し、判定ラベルを付与できるレビュー画面を用意
- 改善事項のフィードバック:人間が与えた判定(過剰分割やテロップによる誤検知などのレビュー結果)を改善事項として Agent に連携
- Agent による自律的なコード修正:Agent がその改善事項を受け取り、自律的にコードや閾値を修正してローカルテストを実行し、精度を向上
人間が手作業で動画を解析するツールを作るのではなく、人間が評価を与えるだけで Agent がアルゴリズムを自律的に改善していくループそのものを設計しました。 これにより、着手から3日ほどで、手動レビューにおける主要な誤検知を解消した実用的な分割プログラムを作成できました。
3. Coding Agent を前提とした開発環境の整備
運用基盤の性能改善でも、新規アプリの立ち上げでも、2ヶ月で600本の PR を生み出せた背景には、AI エージェントの速度を引き出すための開発環境づくりがありました。
観測性データの入力による原因特定の効率化
AI に的確な修正を行わせるには、プロンプトでの推測ではなく、実行時の事実を渡すことが有効です。
分散トレースのスパン情報、実行計画、失敗したテストログやエラーのスタックトレースといった客観的な観測データをそのまま AI に入力することで、AI は迷うことなくボトルネックの原因にアプローチできるようになりました。
CI とプレビュー環境の高速化
AI のコード生成が速くても、CI の完了待ちや手動確認が滞っていては開発速度はスケールしません。
- CI 実行時間の短縮:PR では変更差分に応じた関連テストのみを実行し、カバレッジ測定は 4-way matrix で並列実行して集約しました。DB CI の不要なジョブ依存関係(needs)を解消し、PR blocker の時間を14分12秒から3分54秒へ73%短縮しました。
- 専用 DB を含む Preview QA 環境の構築:PR 作成時に Cloud Run の専用プレビュー環境を自動デプロイし、実際の動作を即座に確認できる体制を構築しました。
AI の出力速度に合わせて開発環境を整え、人間が確認すべき判断に集中できるようにしたことで、600本の PR を安全にマージできました。
4. インターンを通じて得た学びと組織の魅力
大規模生成の失敗と小規模検証の重要性
インターン序盤、「既存の API アーキテクチャをリソース指向に完全刷新しよう」と意気込み、バイブコーディングで一気に巨大な変更を行おうとしたことがありました。 しかし、現状の制約や目指すべきゴールとのすり合わせを挟まないまま生成を繰り返した結果、実用に耐えない大量のコードを生み出してしまいました。
AI を使えば大量のコードを一瞬で生成できます。 だからこそ、推測や勢いで大風呂敷を広げるのではなく、トレースなどの事実やチームとのすり合わせを起点にし、小さく実験と確認を繰り返して方向性が正しいかを確かめ続ける必要があります。
少し強い言葉を使うと、AI の有無にかかわらず、小さくサイクルを回してチームの方向性や事実とズレていないかを確認しながら進めることこそがエンジニアリングの本質だと実感しました。 今回のインターンでも、分散トレースという事実やチームの方向性と向き合い、1つひとつの改善がレイテンシ削減に寄与しているかを小さく確かめながら進めたからこそ、128倍という成果に繋がりました。
極AI基盤チームの開発文化と支援体制
配属された極AI基盤チームは、AI Native 化への意識とスピード感が高く、AI を単なる便利ツールではなく開発体制や意思決定プロセスそのものに組み込んでいく姿勢に満ちていました。
何より、インターン生という立場でありながら、最新の AI をほぼ無制限に活用できる開発環境を提供していただき、さらに本番稼働中のコア評価基盤のアーキテクチャ刷新や新規アプリの開発、そして600本もの PR マージに至るまで、大きな裁量と信頼を持って任せてくれるカルチャーには驚かされました。 コストや利用枠を気にせず全力で検証に取り組める環境が用意されていた点に、サイバーエージェントの AI 開発に対する本気度を強く実感しました。
また、オフィスの環境はもちろん、渋谷で幾度もご飯に連れて行っていただきましたが総じてどれも美味しく、そのご飯を通じて他チームのエンジニアの方々や他のインターン生とも気軽に交流でき、技術やプロダクトについて刺激的な議論を交わせたことは素晴らしい思い出です。
重要タスクを信頼して任せてくださったトレーナーの小林拓磨さん、メンターの吉原創さん、そして温かくサポートしてくださったチームの皆様に心より感謝申し上げます。
5. おわりに
サイバーエージェントの CA Tech JOB は、高い技術力と大きな裁量を持って課題解決に挑めるインターンシップです。 技術で大きなインパクトを残したい学生の皆さんに、心からおすすめします。
最後までお読みいただき、ありがとうございました。
