◉GEMINI LABEN
●ARGON — gemini-4-argon が 10/13 に GA。複雑なコーディング・エージェント・数学・科学向けです●DEEP RES — deep-research-pro-preview-12-2025 は 10/23 に停止、残り6日。移行先は deep-research-preview-04-2026●NANO — gemini-nano-banana-2.1 が GA(10/06)。gemini-3.1-flash-image は非推奨で停止日は未発表です●MCP — ツール結果が 8.5万トークンに膨らんだ事例を、ADK で 310 トークンに包んで抑えた報告が出ています●FLASH — gemini-3.7-flash と 3.5-flash は新しい Flash モデルに自動で回されます(10/08)●NEW — クラッシュ報告を毎回ゼロから読ませない — 既知バグ早見表を先に grep し…●ARGON — gemini-4-argon が 10/13 に GA。複雑なコーディング・エージェント・数学・科学向けです●DEEP RES — deep-research-pro-preview-12-2025 は 10/23 に停止、残り6日。移行先は deep-research-preview-04-2026●NANO — gemini-nano-banana-2.1 が GA(10/06)。gemini-3.1-flash-image は非推奨で停止日は未発表です●MCP — ツール結果が 8.5万トークンに膨らんだ事例を、ADK で 310 トークンに包んで抑えた報告が出ています●FLASH — gemini-3.7-flash と 3.5-flash は新しい Flash モデルに自動で回されます(10/08)●NEW — クラッシュ報告を毎回ゼロから読ませない — 既知バグ早見表を先に grep し…
記事一覧/API / SDK
◈ API / SDK/2026-05-18上級

壁紙アプリの色違いバリエーションを Nano Banana 2 で組み直した実装メモ — Imagen 4 停止後の移行と、解像度で変わる採算

壁紙アプリの色違いバリエーション生成を gemini-3.1-flash-image(Nano Banana 2)へ引き直した実装記録です。Imagen 4 停止後の移行先、Interactions API での呼び出し、解像度別の実価格で引いた二段構えの設計、停止済みモデル ID の検出までをまとめました。

gemini-api288nano-banana-2gemini-3-1-flash-imageimage-generation8wallpaper-appindie-dev23コスト設計14

✦ プレミアム記事

九月の夜、公式の廃止表を上から順に読み直しておりました。Imagen の節まで来たところで手が止まりました。imagen-4.0-generate-001 の行が灰色に沈んでいて、停止日は 2026 年 8 月 17 日。そのページを開いた日から見て、すでにひと月以上前のことでした。

壁紙アプリの派生バリエーション生成は、ベース画像を渡して色違いを返してもらうだけの処理です。設計そのものは何も古びていません。古びていたのは、その処理を誰に頼むかという一点でした。

この記事は、色違いバリエーションのパイプラインを現行のモデルへ引き直したときの実装記録です。モデル ID・呼び出しの形・単価は、2026 年 9 月 20 日時点の公式ページで一つずつ確かめ直しております。最初にお伝えしたいのは、移行で本当に手が入ったのは呼び出しコードではなく、採算の前提のほうだったということです。

いま画像を返してくれるモデルは三つです

廃止表(Last updated 2026-09-17 UTC)と価格表を突き合わせると、2026 年 9 月時点で画像を出せる現行モデルは三つに整理できます。Imagen 系はすべて停止済みで、推奨の移行先は gemini-3.1-flash-image です。

モデル ID通称位置づけStandard の画像出力単価停止日
gemini-3.1-flash-imageNano Banana 2主力。4K まで出せて世界知識と文字描画が安定1K $0.067 / 2K $0.101 / 4K $0.151発表なし
gemini-3.1-flash-lite-imageNano Banana 2 Lite最速・最安。1K 中心で数を捌く用途1K $0.0336発表なし
gemini-3-pro-imageNano Banana Pro難しい構図・厳密な指示追従1K/2K $0.134 / 4K $0.24発表なし
gemini-2.5-flash-imageNano Banana(旧)初代。移行対象1 枚 $0.0392026-10-02
imagen-4.0-generate-001 ほかImagen 4停止済み—2026-08-17(停止済み)

ここで一つ、表をそのまま信じると事故になる箇所があります。廃止表の gemini-2.5-flash-image の行は、推奨の移行先を gemini-3.1-flash-image-preview と書いています。ところがその preview 自身が同じページの上の節で 2026 年 6 月 25 日に停止済みと記載されています。価格表の警告文のほうは「Gemini 3.1 Flash Image または Gemini 3.1 Flash Lite Image へ」と書いており、実務上はこちらが正解です。表の「推奨の移行先」列は、同じページの停止日と突き合わせてから写しています。 移行先として preview を書き写してしまうと、動かないエンドポイントへ向かって移行することになります。

Imagen 4 の停止は 2026 年 6 月 15 日のリリースノートで予告され、8 月 17 日に実行されました。私は以前、新規コンテンツのシード生成は Imagen 4、ユーザー文脈に合わせた派生は Gemini の画像モデル、という二本立てで運用しておりました。いまはシード生成も派生も Nano Banana 系に寄せています。二本立てをやめて困ったのは品質ではなく、「どちらに投げたかでプロンプトの書き方を変えていた」分岐が要らなくなって、コードが短くなったことくらいでした。

呼び出しの形が変わりました — Interactions API

現行の画像生成ガイドのサンプルは、generate_content ではなく Interactions API で書かれています。返ってくるのも candidates[0].content.parts を舐める形ではなく、interaction.output_image という 1 か所です。base64 で入り、base64 で返ります。

import base64
import os
from google import genai
 
client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])
 
MODEL_PREVIEW = "gemini-3.1-flash-lite-image"   # 候補出し(安い・速い)
MODEL_FINAL = "gemini-3.1-flash-image"          # 採用分の作り直し(高解像度)
 
 
def encode(path: str) -> str:
    with open(path, "rb") as f:
        return base64.b64encode(f.read()).decode("utf-8")
 
 
def generate_preview(base_image_path: str, instruction: str):
    """ベース画像 + 指示文を渡して、候補を 1 枚返してもらう"""
    interaction = client.interactions.create(
        model=MODEL_PREVIEW,
        input=[
            {"type": "text", "text": instruction},
            {
                "type": "image",
                "data": encode(base_image_path),
                "mime_type": "image/png",
            },
        ],
        response_format={
            "type": "image",
            "mime_type": "image/png",
            "aspect_ratio": "9:16",   # 壁紙なので縦
            "image_size": "1K",       # 候補は 1K で十分
        },
    )
    image = interaction.output_image
    if image is None:
        return None, interaction.id
    return base64.b64decode(image.data), interaction.id

採用された 1 枚だけを高解像度で作り直すときは、previous_interaction_id を渡すとやりとりの続きとして扱われます。プロンプトを一から組み直さずに「解像度だけ上げる」指示が通るのは、二段構えを組むうえで効きます。

def upscale_adopted(previous_id: str, image_size: str = "2K"):
    """候補として選ばれた 1 枚を、配信用の解像度で作り直す"""
    interaction = client.interactions.create(
        model=MODEL_FINAL,
        input="この構図と色をそのまま保ったまま、配信用の解像度で描き直してください。被写体・色相・明度は変更しないでください。",
        previous_interaction_id=previous_id,
        response_format={
            "type": "image",
            "mime_type": "image/png",
            "aspect_ratio": "9:16",
            "image_size": image_size,
        },
    )
    image = interaction.output_image
    return base64.b64decode(image.data) if image else None

もう一つ、以前の実装から落とした要素があります。temperature と top_p、top_k は 2026 年 7 月 21 日に非推奨となりました。停止日はまだ発表されていませんが、揺らぎの量をパラメータで調整する前提は、もう置けません。

多様性はサンプリングではなく、プロンプトの側で明示的に分岐させて作ります。候補 3 枚なら、指示文も 3 通り用意します。

VARIATION_PROMPTS = {
    "color": [
        "被写体と構図はそのままに、夕暮れの赤みがかった色調へ変えてください。",
        "被写体と構図はそのままに、青みの強い薄暮の色調へ変えてください。",
        "被写体と構図はそのままに、桃色に寄せたマジックアワーの色調へ変えてください。",
    ],
    "time": [
        "被写体はそのままに、月明かりの夜景へ変えてください。",
        "被写体はそのままに、夜明け前の薄明かりへ変えてください。",
        "被写体はそのままに、真昼の硬い光へ変えてください。",
    ],
}

パラメータで散らしていた頃は、同じ指示を 3 回投げて「違うものが返ってくること」を期待しておりました。いま思えば、期待を仕様にしていたのだと思います。指示を 3 通り書き分けるほうが、返ってこなかったときにどこを直せばよいかも明快です。

✦

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

この記事の続きを読む

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

この記事で得られること
✦Nano Banana 2 / 2 Lite / Pro と停止済みの Imagen 4 を、公式の廃止表と価格表から引いた一枚の比較表で整理できます
✦ベース画像から色違いを返すパイプラインを、Interactions API の現行の呼び出し方で動くコードとして組み直せます
✦解像度別の公開単価から採算を逆算し、候補は安いモデル・採用分だけ高解像度という二段構えで月額コストを 33% 下げる設計が持ち帰れます
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

◈ API / SDK2026-08-23
アプリに載せる AI 機能を、実行時呼び出しから配布前の一括処理に寄せました
アプリに Gemini を組み込むとき、実行時に呼ぶか配布前に呼び終えるかで呼び出し回数の増え方が変わります。素材数に比例させる設計へ切り替えた判断基準と、冪等な一括処理の実装をまとめました。
◈ API / SDK2026-06-23
Gemini 3.2 Pro の Function Calling を iOS/Android アプリに統合する実装パターン
Gemini 3.2 Pro の Function Calling を iOS/Android アプリに統合する実装ガイド。SwiftUI・Kotlin 両対応の動くコード例と、個人開発の壁紙アプリで実証した本番設計パターン(コスト・レイテンシ・段階ロールアウト・回帰テスト)を解説します。
◈ API / SDK2026-05-31
Gemini 2.5 Flash で App Store のキーワード欄を多言語最適化した1ヶ月の所感
App Store Connect の100文字キーワード欄を、40本の壁紙アプリ×複数ロケールで Gemini 2.5 Flash に下書きさせた1ヶ月の運用ログです。CJK の文字数、タイトル重複の排除、禁止語の落とし穴、ロケールごとの効きどころの違いまで、現場でつまずいた点を淡々と記録します。