GEMINI LABEN
STUDIO — Android と iOS 向けに予定されていた AI Studio の単体アプリは中止され、アプリ構築機能が Gemini アプリへ直接組み込まれます。画像生成・動画生成・テキスト分析・コード支援も同じ場所に集まりますBENCH — Gemini 3.7 Flash は長期タスクのコーディング指標 DeepSWE で 49.0 パーセントから 65.3 パーセントへ上がり、同時にトークン単価は半分になりましたREACH — 3.7 Flash は Gemini API に加え、Android Studio、Google Antigravity、Gemini Enterprise Agent Platform、Gemini アプリの Spark から使えますAPI — サンプリング系の temperature・top_p・top_k が非推奨になりました。これらで出力の揺れを抑えていた実装は、再現性の担保をどこで取るか決め直す時期ですROBOTICS — gemini-robotics-er-1.6-preview は8月31日に停止します。残り9日です。後継は er-2-preview と er-2-streaming-preview で、テキスト・画像・動画・音声を入力に取りますASSISTANT — Android の Google アシスタントを Gemini へ置き換える作業は9月4日から始まります。残り13日です。App Actions や音声ショートカットを使うアプリは挙動の確認をSTUDIO — Android と iOS 向けに予定されていた AI Studio の単体アプリは中止され、アプリ構築機能が Gemini アプリへ直接組み込まれます。画像生成・動画生成・テキスト分析・コード支援も同じ場所に集まりますBENCH — Gemini 3.7 Flash は長期タスクのコーディング指標 DeepSWE で 49.0 パーセントから 65.3 パーセントへ上がり、同時にトークン単価は半分になりましたREACH — 3.7 Flash は Gemini API に加え、Android Studio、Google Antigravity、Gemini Enterprise Agent Platform、Gemini アプリの Spark から使えますAPI — サンプリング系の temperature・top_p・top_k が非推奨になりました。これらで出力の揺れを抑えていた実装は、再現性の担保をどこで取るか決め直す時期ですROBOTICS — gemini-robotics-er-1.6-preview は8月31日に停止します。残り9日です。後継は er-2-preview と er-2-streaming-preview で、テキスト・画像・動画・音声を入力に取りますASSISTANT — Android の Google アシスタントを Gemini へ置き換える作業は9月4日から始まります。残り13日です。App Actions や音声ショートカットを使うアプリは挙動の確認を
記事一覧/API / SDK
API / SDK/2026-08-22中級

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

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

gemini106gemini-api284admob5structured-output24個人開発104

プレミアム記事

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-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検証→再生成/合成フォールバックの二段構えを、動くコードと無人運用のリトライ設計まで含めて記録しました。
API / SDK2026-05-18
Gemini Vision で壁紙アプリの自動カテゴリ分類を実装した話
個人開発の壁紙アプリで Gemini Vision API を使い、画像の自動カテゴリ分類を実装した実体験です。精度改善のプロセスと、公式ドキュメントには載っていない落とし穴、GPT-4o Vision とのコスト比較までまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →