GEMINI LABEN
VIDEO — 9月1日、エージェント型の動画理解が 3.7 Flash・3.6 Flash・3.5 Flash-Lite に届きました。モデルが動画のタイムラインを自分で辿りますTOKENS — 必要なときだけ字幕・フレーム・音声を取りに行く方式で、長尺では従来処理に比べて最大88%のトークン削減とされていますSCOPE — 対応は Interactions API と GenerateContent API の両方です。長い動画を扱う見積もりは、この変更で前提が変わりますMUSIC — 9月3日、Lyria 3.5 がパブリックプレビューへ。フルレングスの楽曲生成に対応し、44.1kHz ステレオを出力しますCONTROL — Lyria 3.5 はテキストと画像を入力に取り、音楽的な一貫性、自然なボーカル、尺と構成の細かい制御が改善されましたROBOTICS — gemini-robotics-er-2-streaming-preview は Live API 上のリアルタイム配信向けで、物理動作に対するブロッキング挙動つきの function calling に対応しますVIDEO — 9月1日、エージェント型の動画理解が 3.7 Flash・3.6 Flash・3.5 Flash-Lite に届きました。モデルが動画のタイムラインを自分で辿りますTOKENS — 必要なときだけ字幕・フレーム・音声を取りに行く方式で、長尺では従来処理に比べて最大88%のトークン削減とされていますSCOPE — 対応は Interactions API と GenerateContent API の両方です。長い動画を扱う見積もりは、この変更で前提が変わりますMUSIC — 9月3日、Lyria 3.5 がパブリックプレビューへ。フルレングスの楽曲生成に対応し、44.1kHz ステレオを出力しますCONTROL — Lyria 3.5 はテキストと画像を入力に取り、音楽的な一貫性、自然なボーカル、尺と構成の細かい制御が改善されましたROBOTICS — gemini-robotics-er-2-streaming-preview は Live API 上のリアルタイム配信向けで、物理動作に対するブロッキング挙動つきの function calling に対応します
記事一覧/API / SDK
API / SDK/2026-08-22中級

メディエーショングループが20を超えたとき、設定の抜けをどう見つけるか

広告メディエーションのグループが増えると、設定の抜けや型のずれが静かに溜まります。設定を1枚の表に正規化して機械でずれを確定させ、判断が必要なセルだけを Gemini に渡す分担にした手順をまとめました。

gemini115gemini-api286admob5structured-output26個人開発114

プレミアム記事

iOS 側のメディエーション拡張で Liftoff・InMobi・Unity Ads を足したとき、対象になったのは4アプリ分、20を超えるグループでした。管理画面を1つずつ開いて、同じネットワークが同じ形で入っているかを目で確かめていきます。10 グループ目あたりで、自分がどこまで確認したのか分からなくなりました。

翌週になって気づいたのが、あるグループにだけ1ネットワークが入っていなかったことです。収益の数字はほんの少し低いだけで、異常として目に入るような落ち方はしていませんでした。設定の抜けというのは、そういう静かな形で現れます。

この経験から、点検の手順を作り直しました。結論から書くと、抜けの検出は機械の仕事で、Gemini に渡すのは「その状態が意図的かどうか」の判断だけという分担に落ち着いています。

「おかしいところを教えて」では、抜けは出てきません

最初に試したのは、素直な方法でした。20 グループ分の設定をまとめてテキストにして、Gemini に「不整合があれば指摘してください」と投げます。

返ってきたのは、eCPM の桁が明らかに違うセルや、命名規則から外れたグループ名でした。どれも指摘としては正しいのですが、私が一番見つけたかった「あるグループにだけネットワークが入っていない」は出てきませんでした

理由を考えて、腑に落ちました。存在するものの異常は、テキストの中に手がかりが残ります。一方で欠落は、その場所に何も書かれていないという形でしか存在しません。20 行のリストを読んで「19 行目に他の行にはある要素が無い」と気づくには、まず全行の要素を集めて集合を作り、行ごとに差分を取るという操作が要ります。それは言語で読み取る作業ではなく、集合演算です。

言語モデルに苦手なことをさせて精度を嘆くより、集合演算は集合演算として書いてしまう方が早い。そう考えて、渡す前の形を変えることにしました。

まず、設定を1枚の表に正規化します

管理画面のエクスポートでも、スクリーンショットから起こした手書きの JSON でも構いません。大事なのは「グループ × ネットワーク」のマトリクスに変換できる形に揃えることです。

# groups: 管理画面から起こした設定。実運用ではエクスポートを読み込みます
groups = [
    {"group": "RWD-iOS-Wallpaper-JP", "app": "wallpaper", "sources": [
        {"network": "admob_bidding", "type": "bidding"},
        {"network": "applovin",      "type": "bidding"},
        {"network": "liftoff",       "type": "bidding"},
        {"network": "inmobi",        "type": "bidding"},
        {"network": "unity",         "type": "waterfall", "ecpm": 4.2}]},
    {"group": "RWD-iOS-Wallpaper-US", "app": "wallpaper", "sources": [
        {"network": "admob_bidding", "type": "bidding"},
        {"network": "applovin",      "type": "bidding"},
        {"network": "liftoff",       "type": "bidding"},
        {"network": "unity",         "type": "waterfall", "ecpm": 4.2}]},
    {"group": "RWD-iOS-Ukiyoe-JP", "app": "ukiyoe", "sources": [
        {"network": "admob_bidding", "type": "bidding"},
        {"network": "applovin",      "type": "bidding"},
        {"network": "liftoff",       "type": "bidding"},
        {"network": "inmobi",        "type": "bidding"},
        {"network": "unity",         "type": "waterfall", "ecpm": 0.42}]},
    {"group": "RWD-iOS-Healing-JP", "app": "healing", "sources": [
        {"network": "admob_bidding", "type": "bidding"},
        {"network": "applovin",      "type": "waterfall", "ecpm": 3.9},
        {"network": "liftoff",       "type": "bidding"},
        {"network": "inmobi",        "type": "bidding"},
        {"network": "unity",         "type": "waterfall", "ecpm": 4.2}]},
]
 
 
def build_matrix(groups):
    """グループ × ネットワークの二次元表を作ります。
    未設定のセルは None になり、これが後で「欠落」の候補になります。"""
    networks = sorted({s["network"] for g in groups for s in g["sources"]})
    matrix = {}
    for g in groups:
        by_net = {s["network"]: s for s in g["sources"]}
        matrix[g["group"]] = {n: by_net.get(n) for n in networks}
    return networks, matrix
 
 
networks, matrix = build_matrix(groups)
for name, row in matrix.items():
    print(name, {n: (row[n]["type"] if row[n] else "-") for n in networks})

手元で実行すると、次のように並びます。

RWD-iOS-Wallpaper-JP {'admob_bidding': 'bidding', 'applovin': 'bidding', 'inmobi': 'bidding', 'liftoff': 'bidding', 'unity': 'waterfall'}
RWD-iOS-Wallpaper-US {'admob_bidding': 'bidding', 'applovin': 'bidding', 'inmobi': '-', 'liftoff': 'bidding', 'unity': 'waterfall'}
RWD-iOS-Ukiyoe-JP    {'admob_bidding': 'bidding', 'applovin': 'bidding', 'inmobi': 'bidding', 'liftoff': 'bidding', 'unity': 'waterfall'}
RWD-iOS-Healing-JP   {'admob_bidding': 'bidding', 'applovin': 'waterfall', 'inmobi': 'bidding', 'liftoff': 'bidding', 'unity': 'waterfall'}

- が1つ見えます。この段階で既に、目視では10 グループ目で見失ったものが視界に入っています。表にするというだけの操作ですが、点検の性質がここで変わります。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
設定表のような「抜け」を含むデータを、機械で確定させる部分と言語モデルに任せる部分に切り分けられるようになります
広告ネットワークの設定漏れを、収益が下がってから気づくのではなく公開前の数分の点検で拾えるようになります
responseSchema で受け取った判定をそのまま差分レポートに変換する実装を、自分のプロジェクトへ移せるようになります
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

API / SDK2026-08-23
アプリに載せる AI 機能を、実行時呼び出しから配布前の一括処理に寄せました
アプリに Gemini を組み込むとき、実行時に呼ぶか配布前に呼び終えるかで呼び出し回数の増え方が変わります。素材数に比例させる設計へ切り替えた判断基準と、冪等な一括処理の実装をまとめました。
API / SDK2026-07-13
responseSchema で $ref が使えず詰まったら — responseJsonSchema で再帰スキーマを本番で扱う
Gemini の responseSchema は OpenAPI サブセットで $ref/$defs が使えず、共有定義も再帰も表現できません。responseJsonSchema へ移行し、多言語フィールドの再利用とカテゴリ木の再帰を本番で扱う実装をまとめました。
API / SDK2026-06-26
Gemini 3.1 Flash Image で日本語テキスト入り画像を安定生成する ― OCR検証ゲート付きパイプライン
プレビュー停止後の GA 版 gemini-3.1-flash-image で、画像内の日本語テキストが崩れる問題に向き合います。生成→OCR検証→再生成/合成フォールバックの二段構えを、動くコードと無人運用のリトライ設計まで含めて記録しました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます