Android with AI Solution

生成 AI で Android アプリを強化する

この学習パスでは、Google テクノロジーを使用して、より魅力的な Android アプリを少ない労力で構築する方法を学びます。以降のセクションでは、Android デベロッパーとして現在開発している可能性のあるアプリの代用として、架空の食事準備アプリを作成して拡張します。

Android Studio で Gemini を使用して学習と開発を迅速化する方法、Firebase を使用してアプリのストレージ レイヤとログインを構築する方法、Gemini を使用して最新の生成 AI 機能をアプリに組み込む方法、Firebase Remote Config、Google アナリティクス、Crashlytics などのツールを使用して本番環境でアプリをサポートする方法について学びます。

Android Studio の Gemini で Android 開発を強化する

AI によるコーディング アシスタントである Android Studio の Gemini を使用すると、Android アプリケーションをこれまで以上に簡単に構築できます。

Android Studio の Gemini は、日常的に使用する IDE に AI を直接統合し、ソフトウェア開発ライフサイクル全体を通して開発者を支援することで、高品質な Android アプリをより迅速かつ簡単に構築できるように設計されています。つまり、新しいコンセプトをより速く学び、簡単にプロトタイプを作成でき、アプリケーションの重要な部分に集中できます。

Android アプリの開発を開始する際に、Android Studio の Gemini が開発をどのように加速させることができるかをご覧ください。
Android や特定の Android 開発分野を初めて学ぶ場合は、Android Studio の Gemini が非常に役立つ学習ツールになります。

  • 質問にすぐに回答が得られる: Android の基本コンセプト、特定の API、ベスト プラクティスについて、Android Studio のチャット ウィンドウ内で直接 Gemini に質問できます。たとえば、「ダークモードとは何ですか?」や「Android で位置情報を取得する最適な方法は何ですか?」と尋ねることができます。
  • コードサンプルとガイダンスを受け取る: Gemini はコード スニペットを生成し、カメラのサポートの追加や Room データベースの作成など、さまざまな機能の実装に関するガイダンスを提供できます。Kotlin または Jetpack Compose のコードを求めることもできます。
  • エラーを理解して解決策を見つける: ビルドエラーや同期エラーが発生した場合は、Gemini にエラーの説明と解決方法の候補を尋ねることができます。Gemini は、App Quality Insights のクラッシュ レポートを分析し、要約を表示して次に取るべきステップを推奨することもできます。
たとえば、仮想の食事準備アプリの場合、Gemini に、レシピカードを表示する新しい Compose レイアウトのプロトタイプを作成するよう依頼できます。Gemini のマルチモーダル機能を使用すれば、ワイヤーフレーム モックアップを指定すると、Gemini が UI のコードのスキーマを作成します。
Android Studio の Gemini の個別バージョンは、プレビュー版の間は無料でご利用いただけます。

ただし、プライバシーと管理の要件が厳しい大規模なチーム環境での開発では、Studio for Business の Gemini には、プライバシー、セキュリティ、コードのカスタマイズ機能の強化など、追加のメリットがあります。また、Google Cloud クレジットを使用できます。

これらのツールは、Gemini Code Assist と組み合わせることで、チームが AI の力を安心して活用し、重要なプライバシー、セキュリティ、管理のニーズに対応できるようにします。

アプリの Firebase ビルディング ブロック

クラウド ストレージ、ユーザー認証、クラッシュ レポートなど、アプリケーション開発の一般的な機能は、アプリの開発と運用に必要なコンポーネントです。

Firebase は、これらの重要な構成要素を提供することで Android アプリ開発のプロセスを簡素化し、独自のバックエンドを実装する必要がなくなります。
たとえば、レシピ作成アプリを作成する場合、レシピ、食事プラン、材料リストをデバイス外に保持する必要があります(ユーザーがスマートフォンを切り替えた場合など)。このデータは Cloud Firestore に保存できます。

Cloud Firestore は、Firebase と Google Cloud が提供するスケーラブルな NoSQL クラウド データベースです。リアルタイム リスナーを介してクライアント アプリ間でリアルタイムのデータ同期を可能にし、モバイルとウェブのオフライン サポートを提供します。これにより、ネットワークの可用性に関係なく、レスポンシブなアプリのパフォーマンスを実現できます。Cloud Functions など、他の Firebase プロダクトや Google Cloud プロダクトとシームレスに統合できます。

ユーザー認証は、デバイスを切り替えたユーザーが自分のデータにアクセスできるようにし、他のユーザーがデータにアクセスできないようにするために不可欠です。

Firebase Authentication は、Android アプリにユーザー認証を追加するプロセスを簡素化する強力なツールです。バックエンド サービスと、メール/パスワードによるログイン、電話番号による認証、Google、Facebook、Twitter などの一般的なフェデレーション ID プロバイダとの統合など、さまざまな認証方法をサポートする、既製の UI ライブラリを備えた SDK が用意されています。
アプリの安定性と成功を確保するには、エラーとクラッシュをモニタリングすることが不可欠です。クラッシュするアプリはユーザーの不満を招き、アンインストールされる可能性があります。

Firebase Crashlytics は、アプリの品質を低下させる安定性の問題を追跡し、優先順位を付け、修正できるリアルタイムのクラッシュ レポート ツールです。クラッシュをインテリジェントにグループ化し、クラッシュにつながった状況をあぶり出すことによって、トラブルシューティングの時間を節約します。

Cloud Firestore と Firebase Authentication のどちらも、無料の枠が十分に用意されています。ただし、アプリでこれらのサービスの割り当てや高度な機能がさらに必要な場合は、有料プランに登録する必要があります。ご安心ください。Cloud クレジットを使用して、これらの費用をカバーできます。Crashlytics は、使用量に関係なく無料でご利用いただけます。

Firebase が提供する他のソリューションについては、Firebase のウェブサイトをご覧ください。
scope.launch {
  val response = model.generateContent(
    "Create a shopping list with $cuisineStyle ingredients")
}
たとえば、レシピアプリの場合、Gemini 2.0 Flash は特定の料理スタイルの食事を作るのに必要な食材の買い物リストを作成できます。アプリで簡単に解析して UI にレンダリングできる JSON 文字列を生成するようモデルに指示することもできます。リストを生成するには、テキスト プロンプトとともに generateContent() 関数を呼び出します。

詳しくは、Android デベロッパー ガイドをご覧ください。

Android の生成 AI

生成 AI を食事準備用の Android アプリに統合するには、さまざまな方法があります。各オプションの簡単な概要は次のとおりです。
Gemini Nano は、デバイス上での実行に最適化された Gemini ファミリーのモデルです。AICore を介して Android OS に直接統合されています。これにより、ネットワーク接続やクラウドへのデータ送信を行うことなく、生成 AI エクスペリエンスを提供できます。

オンデバイス AI は、低レイテンシ、低コスト、プライバシー保護が主な懸念事項となるユースケースに最適なオプションです。たとえば、食事準備アプリで Gemini Nano を使用して、さまざまな料理やユーザーの食事履歴に基づいて食事のアイデアを提案できます。

Gemini Nano の技術的なアーキテクチャについて詳しくは、Android のドキュメントをご覧ください。

独自のアプリケーションで Gemini Nano をテストするには、以下の試験運用版の Google AI Edge SDK の手順で Gemini Nano オンデバイスを確認してください。
クラウドでの実行用に最適化された生成 AI モデルは、一般的にオンデバイス AI モデルよりも高性能です。

Android デベロッパーは、Firebase の Vertex AI を使用して、テキスト生成タスクに Gemini Pro モデルと Flash モデル、画像生成タスクに Imagen を使用して、Android アプリに生成 AI 機能をすばやく実装できます。

Gemini Pro と Flash の AI モデル ファミリーはマルチモーダルであり、幅広いタスクに対応できます。画像、音声、動画の入力を受け取り、JSON、XML、CSV としてフォーマット可能なテキスト出力を生成します。最新の Gemini モデルでは、音声や画像などのマルチモーダル出力も生成できます。

たとえば、食事準備アプリでは、Gemini モデルを使用して、特定の料理の材料を含む買い物リストを作成できます。

Google Cloud クレジットを使用して、Gemini モデルへのこれらの呼び出しの費用を賄うことができます。

アプリでクラウド ホスト型 Gemini モデルを使用する方法については、以下の Firebase で Vertex AI を介した Gemini のステップをご覧ください。
Imagen 3 は Google の最新の画像生成モデルです。Vertex AI in Firebase からアクセスできるため、Android アプリに画像生成機能をすばやくシームレスに追加できます。

たとえば、食事準備アプリでは、Imagen 3 モデルを使用してレシピのイラストを生成できます。

費用は Google Cloud クレジットで賄うことができます。

アプリで Imagen 3 を使用する方法については、以下の画像生成用の Imagen 3 の手順をご覧ください。
バックエンド統合で生成 AI 機能を追加することもできます。

  • Genkit は、AI を活用したアプリケーションの開発、デプロイ、モニタリングを簡素化するオープンソース フレームワークです。
  • より高度な MLOps ニーズに対応するため、Google Cloud の Vertex AI は、フルマネージド サービスと、Vertex AI Model Garden を介した豊富なモデルを提供してきました。Google Cloud クレジットを使用して、これらのサービスの費用を賄うこともできます。


Gemini Nano 以外でオンデバイス AI 推論を実行する場合は、LiteRT と MediaPipe を試すこともできます。
  • LiteRT(旧称 TFLite)は、デバイス上の AI 向けの Google の高パフォーマンス ランタイムです。機械学習モデルをデバイス上で直接効率的に実行するように設計されています。
  • MediaPipe は、デベロッパーが動画や音声などのマルチメディア データをリアルタイムで処理するための ML パイプラインを構築できるオープンソース フレームワークです。


Android GenAI サービスについて詳しくは、Android ドキュメントの AI セクションをご覧ください。
Google AI Edge SDK を使用すると、Android アプリ デベロッパーは Gemini Nano のオンデバイス生成 AI 機能を統合してテストし、アプリを強化できます。ご利用方法は次のとおりです。
  • aicore-experimental Google グループに参加する
  • Android AICore テストプログラムにオプトインする
    これらの手順を完了すると、Google Play ストア([アプリとデバイスの管理] 内)の AICore アプリ名が「Android AICore」から「Android AICore(ベータ版)」に変わります。
  • APK とバイナリがデバイスに正しくダウンロードされていることを確認する手順はこちらをご覧ください。
  • 次に、次の依存関係 implementation("com.google.ai.edge.aicore:aicore:0.0.1-exp01")
    を追加して、アプリの Gradle 構成を更新します。また、最低 SDK ターゲットを 31 に設定してください。
implementation("com.google.ai.edge.aicore:aicore:0.0.1-exp01")
次に、レスポンスを制御するようにモデルを構成します。これには、コンテキストを指定し、必要に応じて次のパラメータを設定します。

  • Temperature: ランダム性のレベルを制御します。値が大きいほど、出力の多様性が高くなります。
  • Top K: 出力生成の候補として考慮する上位のトークンの数を指定します。
  • Candidate Count: 返されるレスポンスの最大数を設定します。
  • 最大出力トークン数: レスポンスの最大長を設定します。
val generationConfig = generationConfig {
  context = ApplicationProvider.getApplicationContext()
  temperature = 0.2f
  topK = 16
  maxOutputTokens = 256
}
オプションの downloadCallback 関数を作成します。このコールバック関数は、モデルのダウンロードに使用されます。また、デバッグに使用できるメッセージを返します。前に作成した生成構成とオプションのダウンロード構成を使用して、GenerativeModel オブジェクトを生成します。
val downloadConfig = DownloadConfig(downloadCallback)
val generativeModel = GenerativeModel(
  generationConfig = generationConfig,
  downloadConfig = downloadConfig // optional
)
最後に、プロンプトをモデルに渡して推論を開始します。GenerativeModel.generateContent() は suspend 関数であるため、適切なコルーチン スコープ内にあることを確認してください。

食事準備アプリの例では、Gemini Nano は、食事の履歴とは異なるさまざまな料理の種類や食事を提案することで、食事のアイデアを提供できます。
scope.launch {
  val input = "Suggest different types of cuisines and easy to cook dishes that are not $recentMealList"
  val response = generativeModel.generateContent(input)
  print(response.text)
}
Gemini Nano モデルの最大入力トークンの上限は 12,000 です。Gemini Nano の試験運用版アクセスの詳細については、Android ドキュメントの Gemini Nano セクションをご覧ください。

Firebase の Vertex AI を介した Gemini

Firebase で Vertex AI を活用すると、Gemini Cloud モデルを使用して生成 AI を活用した機能を構築できます。この場合、Firebase エコシステムをシームレスにデプロイして管理できます。

dependencies {
...
// Import the BoM for the Firebase platform
implementation(platform("com.google.firebase:firebase-bom:"))

// Add the dependency for the Vertex AI in Firebase library
// When using the BoM, you don't specify versions in Firebase
// library dependencies
implementation("com.google.firebase:firebase-vertexai")
}
まず、Vertex AI Studio でプロンプトを試します。これは、プロンプトの設計とプロトタイピング用のインタラクティブなインターフェースです。ファイルをアップロードしてテキストと画像を含むプロンプトをテストしたり、プロンプトを保存して後で確認したりできます。

アプリから Gemini API を呼び出す準備ができたら、Vertex AI in Firebase スタートガイドの手順に沿って Firebase と SDK を設定します。

次に、Gradle 依存関係をプロジェクトに追加します。

val generativeModel = Firebase.vertexAI
  .generativeModel(
  "gemini-2.0-flash",
  generationConfig = generationConfig {
        responseMimeType = "application/json"
        responseSchema = jsonSchema
  }
    )
これで、Kotlin コードから Gemini API を呼び出せるようになりました。まず、Vertex AI サービスを初期化して、GenerativeModel インスタンスを作成します。
scope.launch {
  val response = model.generateContent("
    Create a shopping list with $cuisineStyle ingredients")
}
たとえば、レシピアプリの場合、Gemini 2.0 Flash は特定の料理スタイルの食事を作るのに必要な食材の買い物リストを作成できます。アプリで簡単に解析して UI にレンダリングできる JSON 文字列を生成するようモデルに指示することもできます。リストを生成するには、テキスト プロンプトとともに generateContent() 関数を呼び出します。

詳しくは、Android デベロッパー ガイドをご覧ください。

画像生成用の Imagen 3

Imagen 3 は Vertex AI in Firebase からアクセスできるため、画像生成を Android アプリにシームレスに統合できます。Google の最も高度な画像生成モデルである Imagen 3 は、驚異的なディテール、最小限のアートファクト、リアルな照明効果を備えた高品質の画像を生成し、画像生成の新たな基準を確立します。

たとえば、Imagen 3 を使用すると、ユーザーは独自のプロフィール アバターを生成したり、既存の画面フローを表すアセットを作成したりできます。たとえば、食事準備アプリでは、Imagen 3 を使用してレシピ画面の画像を生成できます。

「地中海料理にぴったりの美しい食材が並ぶキッチンのカウンタートップの全体像を、漫画風のイラストで表現」というプロンプトを使用して Imagen 3 によって生成された画像。
dependencies {
    implementation(platform("com.google.firebase:firebase-bom:33.10.0"))

    implementation("com.google.firebase:firebase-vertexai")
}
Imagen 3 の統合は、Firebase の Vertex AI を介して Gemini モデルにアクセスする場合と同様です。

まず、Android プロジェクトに Gradle の依存関係を追加します。
val imageModel = Firebase.vertexAI.imagenModel(
modelName = "imagen-3.0-generate-001",
generationConfig = ImagenGenerationConfig(
  imageFormat = ImagenImageFormat.jpeg(compresssionQuality = 75),
  addWatermark = true,
  numberOfImages = 1,
  aspectRatio = ImagenAspectRatio.SQUARE_1x1
)
次に、Kotlin コードで、モデル名と必要に応じてモデル構成を渡して ImageModel インスタンスを作成します。
val imageResponse = imageModel.generateImages(
prompt = "A cartoon style illustration of a top overview of a kitchen countertop
  with beautiful ingredients for a $cuisineStyle meal."
)
最後に、テキスト プロンプトを使用して generateImages() を呼び出して画像を生成します。
val image = imageResponse.images.first()
val uiImage = image.asBitmap()
生成された画像を imageResponse から取得し、ビットマップとして表示します。
Imagen 3 の使用について詳しくは、Android デベロッパー ブログAndroid デベロッパー向けドキュメントをご覧ください。

Firebase で本番環境の準備をする

アプリに genAI 機能を実装したら、アプリを本番環境にデプロイする前に、次の重要なステップを踏みます。 また、ユーザーのプライバシーと AI の責任ある使用を念頭に置き、モデルの予期しない動作についてユーザーに透明性を持って伝えてください。Vertex AI in Firebase での本番環境の準備について詳しくは、次の ブログ投稿をご覧ください。