Nano Banana Pro完全ガイド:動物写真のAI編集で失敗しないプロンプト設計術
Nano Banana Pro 完全ガイド:動物写真のAI編集・生成テクニック
はじめに
AI画像生成ツール Nano Banana Pro を使って動物写真を編集・生成するための実践ガイドです。TypeScriptでミニアプリを開発する際に、「思い通りの動物画像を生成する」ためのプロンプト設計の本質を解説します。
このガイドは、実際のプロダクト開発で遭遇した数々の失敗から学んだ、再現性の高いプロンプト設計手法をまとめたものです。
目次
- Nano Banana Proの基本理解
- 最大の課題:AIの予測不可能性
- プロンプト設計の5つの黄金原則
- TypeScript実装のベストプラクティス
- よくある失敗パターンと対策
- 2画像入力の活用テクニック
- 品質を上げる実践Tips
Nano Banana Proの基本理解
Nano Banana Proとは
画像生成AIをベースとしたツールで、既存の動物写真を編集・変換することに特化しています。
主な用途:
- 動物の毛色・模様の変更
- 背景の変更・削除
- ポーズや表情の微調整
- 品種特徴の強調・変更
- 2枚の動物写真の特徴を組み合わせ
他のAI画像生成ツールとの違い
| 特徴 | 一般的なAI画像生成 | Nano Banana Pro |
|------|------------------|-----------------|
| 入力 | テキストのみ | 動物写真 + テキスト |
| 制御性 | 低い(予測困難) | 高い(元写真をベースに編集) |
| 用途 | ゼロからの生成 | 既存写真の編集・変換 |
| 再現性 | 低い | 比較的高い |
なぜ難しいのか?
AI画像生成には本質的な課題があります:
❌ AIは「理解」していない
- プロンプトの言語的な意味を読み取るが、動物の生物学的特徴は理解しない
- 「この部分だけ変更」「この特徴は保持」という概念が曖昧
- 品種特有の特徴を正確に理解していない
❌ 確率的な生成プロセス
- 同じプロンプトでも毎回異なる結果
- 「ほぼ正しい」が実用では「完全に間違い」(例:足の数が5本)
✅ だからこそプロンプト設計が重要
最大の課題:AIの予測不可能性
実際に起きた失敗例
ケース1:意図しない部分まで変わる
やりたかったこと: 犬の毛色だけ変更したい
❌ 単純なプロンプト:
"change fur color to golden"
結果:
- 毛色は変わったが、目の色も変わった
- 耳の形が変形した
- 背景の色まで変わった
原因: AIは「毛色だけ変更」を理解できていない
ケース2:解剖学的に不自然な結果
やりたかったこと: 猫の表情を笑顔にしたい
❌ 単純なプロンプト:
"smiling cat"
結果:
- 足が5本になった
- 耳の位置がおかしい
- 尻尾が2本に増えた
- 人間のような笑顔(不気味)
原因: 「笑顔」の指示が曖昧で、AIが動物の解剖学を無視
ケース3:背景削除で動物まで消える
やりたかったこと: 背景だけ削除して白背景にしたい
❌ 単純なプロンプト:
"remove background"
結果:
- 動物の耳の一部が消えた
- 尻尾が半分透明になった
- 足が背景と同化して消えた
原因: 削除範囲が不明確で、「保持すべきもの」の指示がない
なぜこれらが起きるのか?
理由1: プロンプトの優先順位が曖昧
AIは複数の指示があると、どれを重視すべきか判断できません。
"golden retriever with blue eyes, realistic"
→ "golden retriever" と "blue eyes" が品種として矛盾する可能性をAIは理解できない
理由2: 否定形が弱い
「〜しない」より「〜する」の方が強く作用します。
"don't change eye color" < "preserve original eye color exactly"
理由3: 解剖学的知識の限界
人間なら当然わかる「常識」をAIは持っていません。
"add wings to cat"
→ 人間: ファンタジー的な表現
→ AI: 足の代わりに翼、6本足など、解剖学的に不自然な結果
プロンプト設計の5つの黄金原則
これらの原則に従うことで、AIの予測不可能性を最小化できます。
原則1️⃣: 明示的な指示(Explicit Instructions)
❌ 悪い例:
"cute dog photo"
✅ 良い例:
"golden retriever puppy, 3 months old, sitting position,
fluffy fur texture, brown eyes, natural outdoor lighting,
professional pet photography, 8k quality"
ポイント:
- 曖昧な形容詞(cute, nice, beautiful)を避ける
- 具体的な属性を列挙する(品種、年齢、ポーズ、毛質)
- 品質指定も明示(professional photography, 8k)
原則2️⃣: 保持と変更の明確な分離
❌ 悪い例:
"change fur color to brown"
✅ 良い例:
"change fur color to chocolate brown,
preserve original: eye color, ear shape, nose, body proportions, pose,
maintain anatomical accuracy,
no other modifications"
テンプレート構造:
[変更内容],
preserve original [保持すべき特徴],
maintain [保持すべき解剖学的特徴],
no other modifications
実装例:
function buildAnimalPrompt(change: string, preserve: string[]): string {
return `${change},
preserve original ${preserve.join(', ')},
maintain anatomical accuracy,
no other modifications,
professional pet photography, 8k quality`;
}
// 使用例
const prompt = buildAnimalPrompt(
"change fur color to golden brown",
["eye color", "ear shape", "nose", "body proportions", "facial expression"]
);
原則3️⃣: ネガティブプロンプトの活用
ネガティブプロンプトは「生成してはいけないもの」を指定します。
基本構造:
Positive prompt: やりたいこと
Negative prompt: 避けたいこと
実例:
const positivePrompt = `
labrador retriever, change fur color to black,
preserve eye color, facial features, body structure
`;
const negativePrompt = `
extra legs, extra tails, missing body parts,
deformed paws, incorrect anatomy, human features,
extra eyes, mutated, distorted proportions,
unnatural pose
`;
動物画像でよく使うネガティブキーワード:
- 解剖学的異常防止: extra legs, extra tails, missing limbs, deformed, mutated
- 品質低下防止: blurry, low quality, pixelated, artifacts
- 不自然な特徴防止: human features, anthropomorphic, cartoon, unrealistic
原則4️⃣: 段階的アプローチ
複雑な変更は一度にやらず、段階的に実行します。
❌ 悪いアプローチ:
// 一度に全部やる
const prompt = "change breed, change color, change background, add accessories";
✅ 良いアプローチ:
// Step 1: 毛色変更
const step1 = generateImage({
baseImage: originalDog,
prompt: "change fur color to golden, preserve all other features"
});
// Step 2: 背景変更
const step2 = generateImage({
baseImage: step1,
prompt: "change background to white studio, preserve animal completely"
});
// Step 3: アクセサリー追加
const step3 = generateImage({
baseImage: step2,
prompt: "add red collar only, preserve everything else"
});
メリット:
- 各段階で品質チェック可能
- 問題が起きた場合、どこで失敗したか特定しやすい
- 解剖学的異常が発生した段階で修正できる
原則5️⃣: パラメータの体系的管理
プロンプトをハードコーディングせず、パラメータ化します。
❌ 悪い例:
const prompt = "cute cat with blue eyes";
✅ 良い例:
interface AnimalPromptParams {
species: string; // 種(dog, cat, bird等)
breed?: string; // 品種
age?: string; // 年齢
furColor?: string; // 毛色
eyeColor?: string; // 目の色
pose?: string; // ポーズ
background?: string; // 背景
lighting?: string; // 照明
}
function buildAnimalPrompt(params: AnimalPromptParams): string {
const parts = [];
if (params.breed) {
parts.push(`${params.breed} ${params.species}`);
} else {
parts.push(params.species);
}
if (params.age) parts.push(`${params.age} old`);
if (params.furColor) parts.push(`${params.furColor} fur`);
if (params.eyeColor) parts.push(`${params.eyeColor} eyes`);
if (params.pose) parts.push(params.pose);
if (params.background) parts.push(`${params.background} background`);
if (params.lighting) parts.push(params.lighting);
parts.push('professional pet photography', '8k quality', 'sharp focus');
return parts.join(', ');
}
// 使用例
const params: AnimalPromptParams = {
species: "dog",
breed: "golden retriever",
age: "puppy, 3 months",
furColor: "light golden",
eyeColor: "dark brown",
pose: "sitting, looking at camera",
background: "natural outdoor park",
lighting: "soft natural daylight"
};
const prompt = buildAnimalPrompt(params);
TypeScript実装のベストプラクティス
1. 動物画像専用プロンプトビルダーパターン
class AnimalPromptBuilder {
private parts: string[] = [];
private negatives: string[] = [];
// 基本動物情報
setAnimal(species: string, breed?: string): this {
if (breed) {
this.parts.push(`${breed} ${species}`);
} else {
this.parts.push(species);
}
return this;
}
// 変更内容
addModification(modification: string): this {
this.parts.push(modification);
return this;
}
// 保持する特徴
preserveFeatures(features: string[]): this {
this.parts.push(`preserve original ${features.join(', ')}`);
this.parts.push('maintain anatomical accuracy');
return this;
}
// ポーズ・状態
setPose(pose: string): this {
this.parts.push(pose);
return this;
}
// 背景
setBackground(background: string): this {
this.parts.push(`${background} background`);
return this;
}
// 品質指定
setQuality(quality: string = '8k'): this {
this.parts.push(`professional pet photography, ${quality} quality, sharp focus`);
return this;
}
// ネガティブプロンプト
addNegative(items: string[]): this {
this.negatives.push(...items);
return this;
}
// 解剖学的異常の防止(デフォルト)
preventAnatomicalIssues(): this {
this.negatives.push(
'extra legs', 'extra tails', 'missing limbs',
'deformed paws', 'incorrect anatomy', 'mutated',
'distorted proportions', 'extra eyes', 'extra ears'
);
return this;
}
// 構築
build(): { positive: string; negative: string } {
return {
positive: this.parts.join(', '),
negative: this.negatives.join(', ')
};
}
}
// 使用例1: 毛色変更
const colorChange = new AnimalPromptBuilder()
.setAnimal('dog', 'golden retriever')
.addModification('change fur color to chocolate brown')
.preserveFeatures(['eye color', 'facial features', 'body structure'])
.setPose('sitting, looking at camera')
.setBackground('white studio')
.setQuality('8k')
.preventAnatomicalIssues()
.build();
まとめ
Nano Banana Proで動物画像を扱う際の最大の課題は解剖学的精度の維持です。
成功の鍵は:
- 動物の解剖学的構造を常に意識する
- 品種特有の特徴を理解し尊重する
- 人間的な表現を避け、自然な動物の姿を追求する
- 段階的アプローチで異常を早期発見
- 継続的な検証と最適化
このガイドで紹介したテクニックを実践し、あなたのプロダクトに最適な動物画像生成プロンプトライブラリを構築してください。 🐕🐈✨