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

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分以内に画像生成を開始できます
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に代わるデフォルトの画像モデルとなりました。
gemini-3-pro-image-preview)と混同しないでください。これは最高の忠実度に最適化された別のモデルです。NB2はスピードとコストのバランスを重視 — Proに近い品質で、大幅に高速です。- モデルID:
gemini-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
前提条件:開始前に必要なもの
ここで多くの開発者がつまずきます。Redditでの第1位の不満は、理由を理解せずにクォータエラーに遭遇することです。
無料キーで試すと、次のエラーが表示されます:
"Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0"
オプションA:Google Cloud課金
- Google AI Studioにアクセス
- Get API Key → Create API keyをクリック
- Google Cloud Console → Billingで課金アカウントをリンク
- プロジェクトでGemini APIを有効化
- これでキーが画像生成に使用できます
オプションB:サードパーティゲートウェイ
方法1:Google AI Studio(ノーコード)
コードを書かずにテストする最速の方法:
- AI Studioを開く
- モデルドロップダウンから
gemini-3.1-flash-image-previewを選択 - プロンプトを入力:「日差しの中の草原にいるフォトリアリスティックなゴールデンレトリバーの子犬」
- Runをクリック
方法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);方法4:OpenAI互換ゲートウェイ経由(EvoLink)
OpenAI SDKを既に使用している場合、コード構造を変更せずに画像を生成できます — ベースURLを変更するだけです。
Python(OpenAI SDK)
pip install openaifrom 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 openaiconst 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課金の設定不要。同じモデル、同じ出力。
料金比較:Google vs EvoLink
| プロバイダー | 2K画像 | 4K画像 | 最低チャージ | 課金設定 |
|---|---|---|---|---|
| $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節約)
プロンプトのベストプラクティス
効果的なプロンプトの構造
[被写体] + [スタイル] + [照明] + [構図] + [詳細]
品質を向上させるキーワード
- スタイル: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」
- Google Cloud Consoleで課金が有効か確認
- Gemini APIがプロジェクトで有効か確認
- または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画像が期待と異なる
temperatureを調整(低い = より予測可能、高い = より創造的)- プロンプトに詳細を追加
- 否定的なプロンプトを使用(「blurry, low quality, distortedなし」)
- 複数のバリエーションを生成して最良のものを選択
画像が保存されない
import os
print(os.getcwd()) # 現在のディレクトリを確認import path from "path";
console.log(process.cwd());よくある質問
A:Googleのレート制限は課金ティアによって異なり、完全には文書化されていません。429エラーに対して指数バックオフを実装してください。
A:はい。マルチターン会話 — 画像を生成し、フォローアップメッセージで編集を説明します。
A:512px、1K、2K、4K。アスペクト比:1:1、16:9、9:16、4:3、3:4、4:1、1:4、8:1、1:8。
A:SynthID(不可視)+ C2PA Content Credentials。視覚的には見えませんが、検証ツールで検出可能です。
gemini-3-pro-image-previewからgemini-3.1-flash-image-previewに変更。APIインターフェースは同一で、他のコード変更は不要です。生成を開始
3つのステップ:
- 有料APIキーを取得(Google AI Studioまたはevolink.ai/signup)
- 上記のコードをコピー
- 実行


