◉GEMINI LABEN
●CLI — Gemini CLI の nightly(10月2日)で、チャット記録を追記専用にして履歴の窓幅を絞る修正が入りました。長い会話の重さに効く変更です●12/31 — 導入価格の終了まで残り89日。3.8 / 3.7 / 3.6 Flash は入力 $0.75→$1.50、出力 $3.75→$7.50 になります●ACP — MCP ツールの許可要求が、どのサーバーからのものか表示されないという報告(#29595)が出ています。許可の読み方が論点です●NEW — 3月に増えた Docs・Sheets・Slides・Drive の Gemini 機能、半年後に残したものと外したもの●WINDOWS — Windows で GIT_CONFIG_GLOBAL=NUL が固定され、Git が失敗するという報告(#29614)があります。Windows で CLI を使う方は要確認です●LITE — gemini-3.1-flash-lite は2027年5月7日に停止予定で、後継は gemini-3.5-flash-lite です。急ぎではありませんが、移行表を作っておく題材です●CLI — Gemini CLI の nightly(10月2日)で、チャット記録を追記専用にして履歴の窓幅を絞る修正が入りました。長い会話の重さに効く変更です●12/31 — 導入価格の終了まで残り89日。3.8 / 3.7 / 3.6 Flash は入力 $0.75→$1.50、出力 $3.75→$7.50 になります●ACP — MCP ツールの許可要求が、どのサーバーからのものか表示されないという報告(#29595)が出ています。許可の読み方が論点です●NEW — 3月に増えた Docs・Sheets・Slides・Drive の Gemini 機能、半年後に残したものと外したもの●WINDOWS — Windows で GIT_CONFIG_GLOBAL=NUL が固定され、Git が失敗するという報告(#29614)があります。Windows で CLI を使う方は要確認です●LITE — gemini-3.1-flash-lite は2027年5月7日に停止予定で、後継は gemini-3.5-flash-lite です。急ぎではありませんが、移行表を作っておく題材です
記事一覧/API / SDK
◈ API / SDK/2026-07-05中級

Nano Banana 2 Lite で大量画像生成のコストを設計する — 実測で使い分けを決める

最速・最安の画像モデル Nano Banana 2 Lite を大量生成の現場に組み込むコスト設計メモです。1枚あたりコストを式で持つ考え方、品質モデルと組み合わせる二層構成、静かなリトライにしない失敗の扱い、移行と廃止スケジュールの見方まで実測を交えて書きます。

Gemini API244Nano Banana画像生成12コスト設計14バッチ処理9

壁紙アプリ向けに背景画像を数百枚まとめて作ろうとしたとき、最初にぶつかるのは品質ではなく、生成が終わらないことと、月末に届く請求の金額でした。一枚一枚は数秒でも、数百枚を高品質モデルで回すと、時間もコストも想像より膨らみます。今回 Gemini ファミリーに加わった Nano Banana 2 Lite は、この「大量に、速く、安く」という現場の要求にちょうど噛み合うモデルです。最速かつ最も低コストな Gemini 画像モデルとして提供が始まりました。

ただ、安いモデルに全部を寄せればいいという話ではありません。速くて安いモデルには、その速さと引き換えに苦手な領域があります。ここでは、私自身が個人開発で画像を量産するときに使っている、コストを測って使い分けを決めるための型を紹介します。

1枚あたりコストを、推測ではなく式で持つ

大量生成のコスト設計でいちばん危ういのは、「たぶんこれくらい」という感覚で本番を回すことです。まず 1 枚あたりのコストを、次の要素に分解して式で持ちます。生成 1 回のモデル料金、失敗して作り直した分の再生成率、そして採用されずに捨てた分の歩留まりです。

捨てた画像にもコストはかかっています。ここを見落とすと、実効コストが見積もりの倍近くになることがあります。式にするとこうなります。

実効コスト/採用1枚 = モデル1回コスト × (1 + 再生成率) ÷ 採用率
 
例)モデル1回 = 仮に X 円、再生成率 = 8%、採用率 = 70% のとき
    実効コスト = X × 1.08 ÷ 0.70 ≒ X × 1.54
 
つまり「1枚 X 円」と思っていたものが、
採用ベースでは約1.5倍かかっている、と読む。

ここで大事なのは、X の絶対値を私が断定することではありません。モデルの料金は改定されますし、あなたのプロンプトや解像度でも変わります。やるべきは、最初の 50 枚を実際に生成して、再生成率と採用率という二つの実測値を自分の手で取ることです。この二つが分かれば、あとは枚数を掛けるだけで月次のコストが読めるようになります。

実測が効くのは、生成コストだけを見ていると判断を誤りやすいからです。私の壁紙アプリは App Store と Google Play の両方で配信していて、収益は主に AdMob の広告に支えられています。画像一枚あたりの生成コストがいくら安くても、その画像がユーザーに刺さらず継続率が上がらなければ、広告収益では回収できません。だからコストは常に、採用した画像がアプリ内でどれだけ使われたか、という後段の指標とセットで見るようにしています。安いモデルで大量に出せること自体が目的ではなく、採用に足る候補を安く得るための手段だと捉えると、Lite の使いどころが自然に定まります。

安いモデルと品質モデルの二層で受ける

Nano Banana 2 Lite の速さと安さは、大量の「たたき台」を作る工程で最も効きます。一方で、最終的に前面に出す一枚や、細部の破綻が許されない画像は、上位の品質モデルに任せたほうが結局は安くつくことがあります。作り直しが減るからです。

そこで私が採っているのは、Lite で候補を大量に出し、そこから選んだものだけを品質モデルで仕上げる、あるいはそのまま採用する二層構成です。次のコードは、Lite で候補群を生成し、簡単なスコアで足切りしてから、通過したものだけを次工程に渡す骨格です。

import os
from google import genai
 
client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])
 
LITE_MODEL = "nano-banana-2-lite"   # 大量の候補生成に使う最速・最安モデル
 
def generate_candidates(prompt: str, n: int) -> list[bytes]:
    """Lite モデルで候補画像を n 枚生成して返す。"""
    images = []
    for i in range(n):
        resp = client.models.generate_images(
            model=LITE_MODEL,
            prompt=prompt,
            config={"number_of_images": 1},
        )
        images.append(resp.generated_images[0].image.image_bytes)
    return images
 
def keep_or_drop(image_bytes: bytes) -> bool:
    """採用/不採用の最小判定。まずは解像度とファイルサイズの下限だけで足切り。"""
    # 極端に小さい出力(生成崩れの兆候)を弾く一次フィルタ
    return len(image_bytes) > 40_000  # 実データを見て閾値を調整する
 
def run_batch(prompt: str, want: int) -> list[bytes]:
    kept, attempts = [], 0
    while len(kept) < want and attempts < want * 3:  # 無限ループの上限を必ず置く
        for img in generate_candidates(prompt, want - len(kept)):
            attempts += 1
            if keep_or_drop(img):
                kept.append(img)
    return kept

attempts < want * 3 の上限は必ず置きます。プロンプトが難しくて採用率が極端に低いとき、上限がないとバッチが延々と回り続け、時間もコストも青天井になります。上限に達したら止めて、プロンプト側を見直す合図とみなします。

失敗の扱いを、静かなリトライにしない

大量生成では、一時的なエラーや空応答が一定の割合で必ず出ます。ここで安易に無制限リトライを入れると、障害時にリトライが雪崩を打って請求だけが膨らむ事故になります。リトライは回数の上限と待ち時間を持たせ、失敗した入力は捨てずに記録します。

失敗の種類やりがちな対処推奨する扱い
一時的なレート制限即時に無限リトライ指数バックオフで最大3回まで
空応答・生成崩れ気づかず採用足切りフィルタで弾き、再生成は1回だけ
プロンプト起因の低採用率枚数を増やして力技バッチを止めてプロンプトを直す
途中中断最初からやり直し採用済みを保存し、続きから再開

途中中断からの再開は、大量生成では効果が大きい設計です。300 枚のうち 250 枚まで採用できていたのに、残り 50 枚のエラーで全部を捨てて最初からやり直すのは、時間もコストも無駄になります。採用済みを逐次保存しておけば、続きだけを埋められます。

移行と廃止のスケジュールも一緒に見ておく

画像モデルは入れ替わりが速い領域です。実際、一部の画像生成モデルには提供終了の予定が告知されています。いま最安だからと一つのモデル名をコードに直書きしてしまうと、廃止のたびに全体を触ることになります。モデル名は設定値として一箇所にまとめ、切り替えを一行で済ませられるようにしておくと、次の改定や新モデル登場のときに慌てずに済みます。

私の場合は、モデル名と 1 回コストの仮値を小さな設定ファイルに置き、月初にその値と実測の採用率だけを更新する運用にしています。これだけで、生成の本数を変えたときの月次コストが即座に読めるようになりました。

使い分けの起点をどこに置くか

Nano Banana 2 Lite は、大量の候補を速く安く出す工程の主役です。前面に出す一枚や破綻の許されない画像は品質モデルへ、その手前のたたき台は Lite へ、という切り分けを最初に決めておくと、コストと品質のどちらも取りこぼしにくくなります。

次の一歩としては、いま高品質モデルだけで回している生成のうち、最終採用まで見られていない「候補出し」の工程を一つ選び、そこだけを Lite に置き換えて、50 枚で再生成率と採用率を測ってみるのがよいと思います。その二つの数字が手元にあれば、どこまで Lite に寄せてよいかを、感覚ではなく実測で決められます。

実装の役に立てば嬉しいです。最後までお読みいただきありがとうございました。

シェア

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

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

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

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

◈ API / SDK2026-07-05
Nano Banana 2 Lite で大量画像生成のコストを二段に分ける — 一次生成と本番レンダを切り離した設計メモ
Nano Banana 2 Lite を一次生成に、標準の Nano Banana 2 を採用後の本番レンダに回す二段構成のコスト設計メモです。一次生成・採用判定・本番レンダの三工程への分割、最小の Python ルーター実装、Lite に寄せすぎない線引きを共有します。
◈ API / SDK2026-09-12
10月2日に止まる gemini-2.5-flash-image の移行先は、公式表のままでは動きません
gemini-2.5-flash-image の停止は2026年10月2日です。ところが公式の推奨移行先として書かれている gemini-3.1-flash-image-preview は6月25日に停止済みでした。移行先を最後まで辿るスクリプトを書いて表の全行を検査し、同じ構造の行が11件あることを確かめた記録です。
◈ API / SDK2026-08-18
Gemini 3.7 Flash と 3.1 Pro の使い分けを、速さではなくやり直しのコストで決める
新しい Flash が出るたびにモデル選定をやり直す作業を、判断基準ごと組み替えました。出力の誤りを機械で拾えるかどうかで振り分ける方法と、導入価格が切れる12月31日をまたいだ費用の出し方をまとめています。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます