🎥 今回の参考動画はこちら ▼
1. Googleの最新画像生成AI「Nano Banana Pro」とは?
「Nano Banana Pro」は、動画で紹介されていたGoogleの最新画像生成AIの名称で、その中核を担うのがGemini APIの画像モデルファミリーです。特に、最先端の機能を持つgemini-3-pro-image-preview(動画でのNano Banana Pro)と、高速・高コスパなgemini-2.5-flash-image(動画でのNano Banana)が主力となります。
これらのモデルは、単にテキストから画像を生成するだけでなく、以下のような驚異的な機能を備えています。
- キャラクター一貫性: 複数の画像を参照し、同一人物やキャラクターを異なるシーンで一貫して描画できます。
- 高精度なテキストレンダリング: ロゴやポスターデザインにおいて、プロンプトで指定したテキストを正確に画像内に埋め込むことができます。
- 複数画像のブレンド: 最大14枚の参照画像を組み合わせ、全く新しい構図の画像を生成する高度な合成能力を持ちます。
- リサーチ機能: Google検索と連携し、リアルタイムの情報を基にしたインフォグラフィックやチャートを生成できます。
- 高解像度出力: 最大で4K解像度の高品質な画像を生成可能です。
本記事では、これらの強力な機能をPythonを使って実際に動かしながら、その使い方をステップバイステップで解説していきます。
2. 必要な準備(環境構築・インストール)
実装を始める前に、Python環境とGemini APIを利用するための準備を整えましょう。
2.1. Python SDKのインストール
まず、Gemini APIをPythonから操作するための公式ライブラリをインストールします。ターミナルで以下のコマンドを実行してください。
pip install -q -U google-genai pillow
2.2. APIキーの取得と設定
次に、Gemini APIを利用するためのAPIキーが必要です。Google AI StudioにアクセスしてAPIキーを取得してください。
取得したAPIキーは、プログラム内で安全に利用するために環境変数として設定するのが推奨されます。以下のコードでAPIクライアントをセットアップします。
from google import genai
import os
# Google AI Studioで取得したAPIキーを設定
# 環境変数 'GOOGLE_API_KEY' に設定することを推奨します
api_key = os.getenv("GOOGLE_API_KEY")
if not api_key:
api_key = "YOUR_API_KEY"
# ライブラリは内部的に環境変数 GOOGLE_API_KEY を参照します
if api_key == "YOUR_API_KEY":
print("警告: 'YOUR_API_KEY' を実際のAPIキーに置き換えるか、環境変数 'GOOGLE_API_KEY' を設定してください。")
else:
os.environ['GOOGLE_API_KEY'] = api_key
print("Gemini APIのセットアップが完了しました。")
# 公式ドキュメントの構文に準拠してクライアントを初期化
client = genai.Client()
これで、Gemini APIを呼び出す準備が整いました💡
3. 【基本編】テキストから画像を生成する (Text-to-Image)
まずは最も基本的な使い方である、テキストプロンプトから画像を生成する方法です。ここでは高速・低コストなgemini-2.5-flash-imageモデルを使用します。
from PIL import Image
import io
# このコードを実行する前に、前のステップで 'client' が初期化されている必要があります。
try:
# 使用するモデル名
model_name = 'gemini-2.5-flash-image'
# 画像生成のプロンプト
prompt = "A hyper-realistic photo of a croissant blooming like a flower, surrounded by daisies on a cafe table."
# 画像生成を実行
print(f"'{model_name}' を使用して画像を生成中...")
response = client.models.generate_content(
model=model_name,
contents=[prompt]
)
# 生成された画像を保存
image_saved = False
for part in response.parts:
if part.inline_data:
image_data = part.inline_data.data
image = Image.open(io.BytesIO(image_data))
image.save("croissant_flower.png")
print("画像が croissant_flower.png として保存されました。")
image_saved = True
break
if not image_saved:
print("応答に画像データが含まれていませんでした。")
except Exception as e:
print(f"エラーが発生しました: {e}")
このコードのポイントは、client.models.generate_contentメソッドにプロンプトを渡すだけで、レスポンスから画像データを直接取得できる点です。非常にシンプルですね。
4. 【応用編1】複数画像をブレンドしキャラクターの一貫性を保つ
Nano Banana Pro (gemini-3-pro-image-preview) の真骨頂は、複数の参照画像から要素を抽出し、一貫性のある新しい画像を生成する能力にあります。動画で紹介されていた、複数の人物写真から一枚の集合写真を作る例を再現してみましょう。
ここでは、person1.pngからperson5.pngまでの5枚の人物の顔写真が用意されていると仮定します。
from google.genai import types
from PIL import Image
import io
# このコードを実行する前に、前のステップで 'client' が初期化されている必要があります。
try:
# より高度なモデルを選択
model_name = 'gemini-3-pro-image-preview'
prompt = "An office group photo of these people, they are making funny faces."
# 複数の画像ファイルを読み込む
image_paths = ['person1.png', 'person2.png', 'person3.png', 'person4.png', 'person5.png']
image_parts = [Image.open(p) for p in image_paths]
# プロンプトと画像のリストを作成
contents = [prompt] + image_parts
# 画像生成を実行
print(f"'{model_name}' を使用して集合写真を生成中...")
response = client.models.generate_content(
model=model_name,
contents=contents,
config=types.GenerateContentConfig(
response_modalities=['TEXT', 'IMAGE'],
image_config=types.ImageConfig(
aspect_ratio="5:4",
image_size="2K"
),
)
)
# 画像を保存
image_saved = False
for part in response.parts:
if part.inline_data:
image_data = part.inline_data.data
image = Image.open(io.BytesIO(image_data))
image.save("office_group_photo.png")
print("集合写真が office_group_photo.png として保存されました。")
image_saved = True
break
if not image_saved:
print("応答に画像データが含まれていませんでした。")
except FileNotFoundError as e:
print(f"エラー: 画像ファイルが見つかりません ({e.filename})。")
except Exception as e:
print(f"エラーが発生しました: {e}")
このコードでは、プロンプトのテキストに加えて、PIL.Imageオブジェクトのリストをcontentsに渡しています。これにより、モデルは各画像の特徴(この場合は顔)を認識し、それらを維持したまま新しいシーンを生成します。
5. 【応用編2】画像認識とリサーチによるインフォグラフィック生成
次に、動画でデモされていた、画像から場所を特定し、インフォグラフィックを生成する機能です。これはgemini-3-pro-image-previewのGoogle検索連携機能を使うことで実現できます。
ここでは広州タワーの画像をアップロードし、旅行者向けのインフォグラフィックを作成するよう依頼します。
from google.genai import types
from PIL import Image
import io
# このコードを実行する前に、前のステップで 'client' が初期化されている必要があります。
try:
# 高度なモデルを選択
model_name = 'gemini-3-pro-image-preview'
# 画像をアップロード
canton_tower_image = Image.open("canton_tower.jpg")
prompt = "Transform this into a travel infographic. Identify the location and key features."
# 画像とプロンプトでコンテンツを生成
print(f"'{model_name}' とGoogle検索を連携してインフォグラフィックを生成中...")
response = client.models.generate_content(
model=model_name,
contents=[prompt, canton_tower_image],
tools=[{"google_search": {}}], # Google検索ツールを有効化
config=types.GenerateContentConfig(
response_modalities=['TEXT', 'IMAGE'],
image_config=types.ImageConfig(
aspect_ratio="9:16"
)
)
)
# 生成されたインフォグラフィックを保存
image_saved = False
for part in response.parts:
if part.text:
print(f"モデルからのテキスト応答: {part.text}")
if part.inline_data:
image_data = part.inline_data.data
image = Image.open(io.BytesIO(image_data))
image.save("canton_tower_infographic.png")
print("インフォグラフィックが canton_tower_infographic.png として保存されました。")
image_saved = True
if not image_saved:
print("応答に画像データが含まれていませんでした。")
except FileNotFoundError:
print("エラー: 'canton_tower.jpg' が見つかりません。")
except Exception as e:
print(f"エラーが発生しました: {e}")
リクエストにtools=[{"google_search": {}}]を指定することで、モデルは画像の内容を認識し、それが「広州タワー」であることをGoogle検索で特定します。そして、その情報を基にして高さ、各フロアの情報、周辺施設などを盛り込んだインフォグラフィックを自動で生成してくれるのです。これは非常に強力な機能ですね🚀
6. まとめ
本記事では、Googleの最新画像生成AI「Nano Banana Pro」(Gemini API)の多彩な機能を、Pythonコードと共に解説しました。単なるText-to-Imageに留まらず、複数画像からの合成、外部情報との連携、高精度なテキストレンダリングなど、その能力は多岐にわたります。
特に、gemini-3-pro-image-previewが持つ「思考モード」や高度な推論能力は、クリエイティブな作業や専門的なアセット制作において、これまでの画像生成AIとは一線を画すポテンシャルを秘めています。ぜひ、この記事のコードを参考に、Gemini APIの画像生成機能をあなたのプロジェクトにも取り入れてみてください。
この記事の自動化に使われた技術と思考法は、
すべて以下のアカデミーでインストールできます。