Seedance 2.0 API — Coming SoonGet early access
Nano Banana 2 APIの使い方:コード例付き完全チュートリアル(2026年版)
チュートリアル

Nano Banana 2 APIの使い方:コード例付き完全チュートリアル(2026年版)

EvoLink Team
EvoLink Team
Product Team
2026年2月27日
11 分

TL;DR

  • Nano Banana 2(gemini-3.1-flash-image-preview)は2026年2月26日にリリース — Proレベルの品質をFlashスピードで実現
  • 有料APIキーが必要。画像生成の無料枠はゼロ
  • Google価格:$0.101/画像(2K)、$0.150/画像(4K)。EvoLinkは約20%安い$0.0806(2K)を提供
  • 3つのアクセス方法:Google AI Studio(ノーコード)、Gemini API(Python/Node.js)、または統合ゲートウェイ経由
  • このチュートリアルで10分以内に画像生成を開始できます

What Is Nano Banana 2

Nano Banana 2とは?

Nano Banana 2は、Gemini 3.1 Flash Imageをベースに構築されたGoogleの最新画像生成モデルです。2026年2月26日、Nano Banana 2はGeminiアプリのFast、Thinking、Proモード全体でNano Banana Proに代わるデフォルトの画像モデルとなりました。

Nano Banana Pro(gemini-3-pro-image-preview)と混同しないでください。これは最高の忠実度に最適化された別のモデルです。NB2はスピードとコストのバランスを重視 — Proに近い品質で、大幅に高速です。
主要スペック(出典:Googleブログ):
  • モデルIDgemini-3.1-flash-image-preview
  • 解像度:512pxから4K、4:1、1:4、8:1、1:8を含むネイティブアスペクト比
  • 被写体の一貫性:1回の生成で最大5キャラクター + 14オブジェクト
  • テキストレンダリング:画像内の多言語テキストが改善
  • 思考レベル:複雑なプロンプト用のMinimal(デフォルト)対High/Dynamic
  • AI識別:SynthID + C2PA Content Credentials
NB2とProの詳細比較については、詳細比較記事をご覧ください。

前提条件:開始前に必要なもの

ここで多くの開発者がつまずきます。Redditでの第1位の不満は、理由を理解せずにクォータエラーに遭遇することです。

答えは簡単です:画像生成には有料APIキーが必要です。例外はありません。

無料キーで試すと、次のエラーが表示されます:

"Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0"

オプションA:Google Cloud課金

  1. Google AI Studioにアクセス
  2. Get API KeyCreate API keyをクリック
  3. Google Cloud Console → Billingで課金アカウントをリンク
  4. プロジェクトでGemini APIを有効化
  5. これでキーが画像生成に使用できます

オプションB:サードパーティゲートウェイ

Google Cloud課金設定をスキップしたい場合、EvoLinkのようなゲートウェイは、より簡単なオンボーディングで同じモデルにルーティングします — サインアップ、キー取得、クレジット追加、生成開始。

方法1:Google AI Studio(ノーコード)

コードを書かずにテストする最速の方法:

  1. AI Studioを開く
  2. モデルドロップダウンからgemini-3.1-flash-image-previewを選択
  3. プロンプトを入力:「日差しの中の草原にいるフォトリアリスティックなゴールデンレトリバーの子犬」
  4. Runをクリック
Google AI Studio interface showing Nano Banana 2 model selection
長所:即座のフィードバック、プロンプトの反復が簡単、課金設定が必要
短所:自動化不可、バッチ処理なし、プロダクションには不向き

方法2:Gemini API(Python)

プロダクション対応のコード。Google AI Studioから直接APIキーを使用します。

インストール

pip install google-generativeai pillow

基本的な画像生成

import google.generativeai as genai
import base64
from PIL import Image
from io import BytesIO

# APIキーを設定
genai.configure(api_key="YOUR_GOOGLE_API_KEY")

# モデルを初期化
model = genai.GenerativeModel("gemini-3.1-flash-image-preview")

# 画像を生成
response = model.generate_content(
    "A serene Japanese zen garden with cherry blossoms",
    generation_config={
        "response_modalities": ["image"],
        "temperature": 1.0
    }
)

# 画像を保存
if response.candidates[0].content.parts:
    image_data = response.candidates[0].content.parts[0].inline_data.data
    image = Image.open(BytesIO(base64.b64decode(image_data)))
    image.save("zen_garden.png")
    print("画像を保存しました: zen_garden.png")

高度な設定

response = model.generate_content(
    "Ultra-detailed cyberpunk cityscape at night, neon lights, rain",
    generation_config={
        "response_modalities": ["image"],
        "temperature": 1.2,           # 創造性(0.0-2.0)
        "top_p": 0.95,                # 多様性制御
        "top_k": 40,                  # サンプリング幅
        "candidate_count": 1,         # 生成する画像数
        "max_output_tokens": 8192     # 4K画像の場合
    }
)

エラーハンドリング

import time

def generate_with_retry(prompt, max_retries=3):
    for attempt in range(max_retries):
        try:
            response = model.generate_content(
                prompt,
                generation_config={"response_modalities": ["image"]}
            )
            return response
        except Exception as e:
            if "429" in str(e):  # レート制限
                wait_time = 2 ** attempt
                print(f"レート制限。{wait_time}秒待機中...")
                time.sleep(wait_time)
            elif "quota" in str(e).lower():
                print("クォータ超過。有料APIキーを確認してください。")
                break
            else:
                print(f"エラー: {e}")
                break
    return None

方法3:Gemini API(Node.js)

JavaScriptプロジェクト向け。

インストール

npm install @google/generative-ai

基本的な実装

import { GoogleGenerativeAI } from "@google/generative-ai";
import fs from "fs";

const genAI = new GoogleGenerativeAI("YOUR_GOOGLE_API_KEY");

async function generateImage(prompt) {
  const model = genAI.getGenerativeModel({
    model: "gemini-3.1-flash-image-preview"
  });

  const result = await model.generateContent({
    contents: [{ role: "user", parts: [{ text: prompt }] }],
    generationConfig: {
      responseModalities: ["image"],
      temperature: 1.0
    }
  });

  const response = await result.response;
  const imageData = response.candidates[0].content.parts[0].inlineData.data;

  // Base64をバッファに変換して保存
  const buffer = Buffer.from(imageData, "base64");
  fs.writeFileSync("output.png", buffer);

  console.log("画像を保存しました: output.png");
}

generateImage("A majestic mountain landscape at sunset");

複数画像のバッチ処理

async function batchGenerate(prompts) {
  const model = genAI.getGenerativeModel({
    model: "gemini-3.1-flash-image-preview"
  });

  for (let i = 0; i < prompts.length; i++) {
    try {
      const result = await model.generateContent({
        contents: [{ role: "user", parts: [{ text: prompts[i] }] }],
        generationConfig: { responseModalities: ["image"] }
      });

      const imageData = result.response.candidates[0].content.parts[0].inlineData.data;
      fs.writeFileSync(`image_${i + 1}.png`, Buffer.from(imageData, "base64"));

      console.log(`画像 ${i + 1}/${prompts.length} 完了`);

      // レート制限を避けるため
      await new Promise(resolve => setTimeout(resolve, 1000));
    } catch (error) {
      console.error(`プロンプト ${i + 1} でエラー:`, error.message);
    }
  }
}

const prompts = [
  "A futuristic robot in a neon city",
  "An ancient temple in a misty forest",
  "A colorful abstract geometric pattern"
];

batchGenerate(prompts);

OpenAI SDKを既に使用している場合、コード構造を変更せずに画像を生成できます — ベースURLを変更するだけです。

Python(OpenAI SDK)

pip install openai
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_EVOLINK_API_KEY",
    base_url="https://api.evolink.ai/v1",
)

response = client.chat.completions.create(
    model="gemini-3.1-flash-image-preview",
    messages=[
        {
            "role": "user",
            "content": "A photorealistic golden retriever puppy sitting in a sunlit meadow",
        }
    ],
)

print(response.choices[0].message.content)

Node.js(OpenAI SDK)

npm install openai
const OpenAI = require("openai");

const client = new OpenAI({
  apiKey: "YOUR_EVOLINK_API_KEY",
  baseURL: "https://api.evolink.ai/v1",
});

async function generateImage() {
  const response = await client.chat.completions.create({
    model: "gemini-3.1-flash-image-preview",
    messages: [
      {
        role: "user",
        content:
          "A photorealistic golden retriever puppy sitting in a sunlit meadow",
      },
    ],
  });

  console.log(response.choices[0].message.content);
}

generateImage();

なぜゲートウェイを使うのか?1つのAPIキーで複数のモデル(NB2、Pro、GPT-4o Image、Seedream)にアクセス。Google Cloud課金の設定不要。同じモデル、同じ出力。


プロバイダー2K画像4K画像最低チャージ課金設定
Google$0.101$0.150なしGoogle Cloud必須
EvoLink$0.0806$0.120$5クレジットカード
節約例
  • 1,000枚の2K画像:Google $101 vs EvoLink $80.60($20.40節約
  • 1,000枚の4K画像:Google $150 vs EvoLink $120($30節約
EvoLinkは使用量ベースの割引も提供 — 月間$500以上で追加5-15%オフ。

プロンプトのベストプラクティス

効果的なプロンプトの構造

[被写体] + [スタイル] + [照明] + [構図] + [詳細]
悪い:「犬」
良い:「フォトリアリスティックなゴールデンレトリバー、ゴールデンアワーの照明、浅い被写界深度、草原の背景、柔らかな焦点」

品質を向上させるキーワード

  • スタイル:photorealistic、cinematic、oil painting、watercolor、anime、3D render
  • 照明:golden hour、dramatic lighting、soft diffused light、neon glow、backlit
  • 構図:close-up、wide angle、aerial view、symmetrical、rule of thirds
  • 詳細:highly detailed、ultra sharp、 8K resolution、intricate textures

避けるべきこと

  • 曖昧な用語(「良い」「素敵な」「美しい」)
  • 過度に複雑なシーン(5キャラクター + 14オブジェクトの制限)
  • 矛盾する指示(「明るいが暗い」)
  • 著作権のあるキャラクター名(代わりに説明を使用)

トラブルシューティング

エラー:「Quota exceeded」

原因:無料APIキーまたは課金が有効でない
解決策
  1. Google Cloud Consoleで課金が有効か確認
  2. Gemini APIがプロジェクトで有効か確認
  3. またはEvoLinkのような有料ゲートウェイに切り替え

エラー:「429 Too Many Requests」

原因:レート制限超過
解決策
import time

def generate_with_backoff(prompt, max_retries=5):
    for i in range(max_retries):
        try:
            return model.generate_content(prompt)
        except Exception as e:
            if "429" in str(e):
                wait = (2 ** i) + random.uniform(0, 1)
                time.sleep(wait)
            else:
                raise

画像が期待と異なる

解決策
  1. temperatureを調整(低い = より予測可能、高い = より創造的)
  2. プロンプトに詳細を追加
  3. 否定的なプロンプトを使用(「blurry, low quality, distortedなし」)
  4. 複数のバリエーションを生成して最良のものを選択

画像が保存されない

Pythonの確認
import os
print(os.getcwd())  # 現在のディレクトリを確認
Node.jsの確認
import path from "path";
console.log(process.cwd());

よくある質問

Q:Nano Banana 2とNano Banana Proのどちらを使うべきですか?
A:デフォルトでNB2を使用。より高速で約50%安価。最高の忠実度または正確なテキストレンダリング(94%の精度)が必要な場合のみProを使用。NB2とProの比較をご覧ください。
Q:レート制限は?

A:Googleのレート制限は課金ティアによって異なり、完全には文書化されていません。429エラーに対して指数バックオフを実装してください。

Q:NB2で画像を編集できますか?

A:はい。マルチターン会話 — 画像を生成し、フォローアップメッセージで編集を説明します。

Q:サポートされている解像度は?

A:512px、1K、2K、4K。アスペクト比:1:1、16:9、9:16、4:3、3:4、4:1、1:4、8:1、1:8。

Q:画像に透かしは入りますか?

A:SynthID(不可視)+ C2PA Content Credentials。視覚的には見えませんが、検証ツールで検出可能です。

Q:ProからNB2に切り替える方法は?
A:モデルをgemini-3-pro-image-previewからgemini-3.1-flash-image-previewに変更。APIインターフェースは同一で、他のコード変更は不要です。

生成を開始

3つのステップ:

  1. 有料APIキーを取得(Google AI Studioまたはevolink.ai/signup
  2. 上記のコードをコピー
  3. 実行

AIコストを89%削減する準備はできましたか?

今すぐEvoLinkを始めて、インテリジェントなAPIルーティングの力を体験してください。