アプリにカスタム画像を追加すると、ユーザー エクスペリエンスを大幅に改善してパーソナライズし、ユーザー エンゲージメントを高めることができます。この記事では、Firebase AI Logic を使用した画像生成の 2 つの新機能について説明します。1 つは、現在プレビュー版が提供されている Imagen の特殊な編集機能、もう 1 つは、コンテキストまたは会話型の画像生成用に設計された Gemini 2.5 Flash Image(別名「Nano Banana」)の一般提供です。
Firebase AI Logic で生成された画像でユーザー エンゲージメントを高める
画像生成モデルを使用して、カスタム ユーザー プロフィール アバターを作成したり、パーソナライズされたビジュアル アセットを主要な画面フローに直接統合したりできます。
たとえば、Imagen には新しい編集機能(デベロッパー プレビュー版)があります。マスクを描画し、インペインティングを使用してマスクされた領域内のピクセルを生成できるようになりました。また、マスクの外側のピクセルを生成するアウトペインティングも利用できます。
Imagen はインペイントをサポートしており、画像の一部のみを生成できます。
また、Gemini 2.5 Flash Image(Nano Banana)は、Gemini モデルの拡張された世界に関する知識と推論機能を使用して、コンテキストに関連する画像を生成できます。これは、ユーザーの現在のアプリ内エクスペリエンスに沿った動的なイラストを作成するのに最適です。
Gemini 2.5 Flash Image を使用して、アプリのコンテキストに関連する動的なイラストを作成します。
最後に、会話形式で画像を繰り返し編集できる機能により、ユーザーは自然言語を使用して写真を編集できます。
Gemini 2.5 Flash Image を使用して、自然言語で写真を編集します。
AI をアプリケーションに統合する際は、AI の安全性について学ぶことが重要です。特に、アプリケーションのセキュリティ リスクを評価し、安全リスクを軽減するための調整を検討し、ユースケースに適した安全テストを実施し、ユーザーのフィードバックを求め、コンテンツをモニタリングすることが重要です。
Imagen と Gemini: どちらを選ぶかはあなた次第
Gemini 2.5 Flash Image(「Nano Banana」)と Imagen の違いは、主な焦点と高度な機能にあります。Gemini 2.5 Flash Image は、Gemini ファミリーの画像モデルとして、会話型画像編集に優れており、複数のイテレーションにわたってコンテキストと被写体の一貫性を維持し、「世界中の知識と推論」を活用して、コンテキストに関連するビジュアルを作成したり、長いテキスト シーケンス内に正確なビジュアルを埋め込んだりできます。
Imagen は、Google の画像生成に特化したモデルです。クリエイティブな制御を強化するために設計されており、非常にリアルな出力、芸術的なディテール、特定のスタイルに特化しています。また、生成された画像の縦横比や形式を指定するための明示的な制御機能も備えています。
| Gemini 2.5 Flash イメージ (Nano Banana 🍌) | Imagen |
🌎 世界に関する知識と推論により、コンテキストに関連性の高い画像を生成 💬 コンテキストを維持しながら会話形式で画像を編集する 📖 長いテキスト シーケンス内に正確なビジュアルを埋め込む | 📐 生成された画像のアスペクト比または形式を指定する
🖌️インペインティングとアウトペインティングのマスクベースの編集をサポート。
🎚️ 生成画像の詳細(品質、芸術的なディテール、特定のスタイル)をより細かく管理できる |
アプリでこれらのモデルを使用する方法を見てみましょう。
Imagen を使用したインペインティング
数か月前、Google は Imagen の新しい編集機能をリリースしました。Imagen は画像生成のプロダクション レディになりましたが、編集機能はまだデベロッパー プレビューの段階です。
Imagen の編集機能には、マスクベースの画像編集機能であるインペインティングとアウトペインティングがあります。この新機能により、画像全体を再生成することなく、画像の特定の領域を変更できます。つまり、画像の最も良い部分を保持し、変更したい部分のみを変更できます。
Imagen の編集機能を使用して、画像の残りの部分の完全性を保証しながら、画像内の特定のターゲットを正確に変更する
これらの変更は、元の画像の核となる要素と全体的な完全性を維持し、マスク内の領域のみを変更しながら行われます。
Imagen でインペインティングを実装するには、まず編集機能をサポートする特定の Imagen モデルの imagen-3.0-capability-001 を初期化します。
// Copyright 2025 Google LLC.
// SPDX-License-Identifier: Apache-2.0
val editingModel =
Firebase.ai(backend = GenerativeBackend.vertexAI()).imagenModel(
"imagen-3.0-capability-001",
generationConfig = ImagenGenerationConfig(
numberOfImages = 1,
aspectRatio = ImagenAspectRatio.SQUARE_1x1,
imageFormat = ImagenImageFormat.jpeg(compressionQuality = 75),
),
)
次に、インペインティング関数を定義します。
// Copyright 2025 Google LLC.
// SPDX-License-Identifier: Apache-2.0
val prompt = "remove the pancakes and make it an omelet instead"
suspend fun inpaintImageWithMask(sourceImage: Bitmap, maskImage: Bitmap, prompt: String, editSteps: Int = 50): Bitmap {
val imageResponse = editingModel.editImage(
referenceImages = listOf(
ImagenRawImage(sourceImage.toImagenInlineImage()),
ImagenRawMask(maskImage.toImagenInlineImage()),
),
prompt = prompt,
config = ImagenEditingConfig(
editMode = ImagenEditMode.INPAINT_INSERTION,
editSteps = editSteps,
),
)
return imageResponse.images.first().asBitmap()
}
sourceImage、maskImage、編集用のプロンプト、実行する編集ステップの数を指定します。
Android AI サンプル カタログの Imagen 編集サンプルで、この機能の動作を確認できます。
また、Imagen はアウトペインティングもサポートしています。これにより、モデルにマスクの外側のピクセルを生成させることができます。Imagen の画像カスタマイズ機能を使用して、写真のスタイルを変更したり、写真内の被写体を更新したりすることもできます。詳しくは、Android デベロッパー向けドキュメントをご覧ください。
Gemini 2.5 Flash Image による会話型画像生成
Gemini 2.5 Flash Image で画像を編集する方法の 1 つは、モデルのマルチターン チャット機能を使用することです。
まず、モデルを初期化します。
// Copyright 2025 Google LLC.
// SPDX-License-Identifier: Apache-2.0
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
modelName = "gemini-2.5-flash-image",
// Configure the model to respond with text and images (required)
generationConfig = generationConfig {
responseModalities = listOf(ResponseModality.TEXT,
ResponseModality.IMAGE)
}
)
上記のマスクベースの Imagen メソッドと同様の結果を得るには、chat API を使用して Gemini 2.5 Flash Image との会話を開始します。
// Copyright 2025 Google LLC.
// SPDX-License-Identifier: Apache-2.0
// Initialize the chat
val chat = model.startChat()
// Load a bitmap
val source = ImageDecoder.createSource(context.contentResolver, uri)
val bitmap = ImageDecoder.decodeBitmap(source)
// Create the initial prompt instructing the model to edit the image
val prompt = content {
image(bitmap)
text("remove the pancakes and add an omelet")
}
// To generate an initial response, send a user message with the image and text prompt
var response = chat.sendMessage(prompt)
// Inspect the returned image
var generatedImageAsBitmap = response
.candidates.first().content.parts.filterIsInstance<ImagePart>().firstOrNull()?.image
// Follow up requests do not need to specify the image again
response = chat.sendMessage("Now, center the omelet in the pan")
generatedImageAsBitmap = response
.candidates.first().content.parts.filterIsInstance<ImagePart>().firstOrNull()?.image
Android AI サンプル カタログの Gemini Image Chat サンプルで動作を確認できます。また、Android ドキュメントで詳細を確認することもできます。
まとめ
Imagen と Gemini 2.5 Flash Image はどちらも強力な機能を提供します。特定のユースケースに応じて最適な画像生成モデルを選択し、アプリをパーソナライズしてユーザー エンゲージメントを高めることができます。
続きを読む
-
プロダクト ニュース
Android デベロッパーで、革新的な AI 機能をアプリに実装したいとお考えの場合は、最近リリースされた強力な新機能をご利用ください。
Thomas Ezan • 所要時間: 3 分
-
プロダクト ニュース
このたび、Gemini 3 モデル ファミリーに Gemini 3 Flash が加わりました。Gemini 3 Flash は、スピードを重視して構築された最先端のインテリジェンスを低コストで提供します。
Thomas Ezan • 所要時間: 2 分
-
プロダクト ニュース
Android Studio Panda 4 が安定版となり、本番環境で使用できる準備が整いました。このリリースでは、プランニング モードや次の編集の予測などが導入され、高品質の Android アプリをこれまで以上に簡単に作成できるようになりました。
Matt Dyor • 所要時間: 5 分
メールを受け取る
Android 開発に関する最新の分析情報を毎週メールでお届けします。