Aller au contenu principal
NUKOE

Androidアプリに生成AIを統合!Google Vertex AI Agent Builderチュートリアル

• 10 min •
Illustration d'une application Android intégrant l'IA générative de Google.

生成AIを統合したAndroidアプリの構築は、もはや研究部門を持つチームだけのものではありません。Googleは、機械学習の専門家でなくても、あらゆるAndroid開発者がアプリにインテリジェントな機能を追加できるように、さまざまなツールを提供しています。このチュートリアルでは、空のプロジェクトから始めて、Google Vertex AI Agent Builderを使用したAndroidアプリの作成をステップバイステップでガイドし、最初の自然言語インタラクションを実現します。

なぜ生成AIがAndroid開発者にとってゲームチェンジャーなのか

大規模言語モデルの台頭により、ユーザーインターフェースの設計方法が変わりました。固定されたボタンやフォームの代わりに、ユーザーはアプリと対話できるようになりました。Google Cloudの記事によると、「バイブコーディング」(構築したいものを自然言語で記述すること)は、開発手法として確立されつつあります(出典:Cloud Google - Vibe Coding Explained)。Androidでは、これにより統合されたパーソナルアシスタント、コンテンツジェネレーター、リアルタイム分析ツールへの道が開かれます。

公式ガイド「AI on Android」(出典:Developer Android - AI on Android)には、利用可能なAPI(ML Kit、TensorFlow Lite、Google AI Edge経由の新しいAPI)がリストされています。しかし、高度な生成処理には、Vertex AI Agent Builderが最も包括的なツールです。

具体例:インテリジェントなタスク管理アプリケーション

ユーザーがタスクを追加、整理し、コンテキストに応じた提案(例:「今日の優先事項は何ですか?」)を得られるアプリ「SmartTasks」を想像してください。生成AIは、タスクを分析して優先順位を提案したり、1日の概要をまとめたり、サブタスクを生成したりするために使用されます。

このケースは、統合に焦点を当てるために意図的にシンプルにしています。必要に応じて適応させることができます。

前提条件

  • Android Studio(最新の安定版)
  • Firebaseプロジェクト(無料):認証とクラウドストレージ用
  • Google Cloudプロジェクト(請求先有効):Vertex AIは有料サービスですが、スタータークレジットがあります
  • KotlinとAndroidの基本知識

ステップ1:Androidプロジェクトを作成し、Firebaseを追加する

Android Studioを開き、「Empty Views Activity」で新しいプロジェクトを作成します。「SmartTasks」という名前を付けます。

次に、プロジェクトにFirebaseを追加します。公式ドキュメント(出典:Firebase Google - Add Firebase to your Android project)に手順が詳しく説明されています。

  1. Firebaseコンソールにアクセスし、まだの場合はプロジェクトを作成します。
  2. プロジェクトのパッケージ名でAndroidアプリを追加します。
  3. `google-services.json`ファイルをダウンロードし、プロジェクトの`app/`フォルダに配置します。
  4. `build.gradle`(アプリレベル)にFirebase依存関係を追加します。
implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-auth-ktx")
implementation("com.google.firebase:firebase-firestore-ktx")
  1. プロジェクトを同期します。

Firebaseは、認証(Vertex AIへのアクセスを保護するために必須)とタスクの保存に使用します。

ステップ2:Vertex AI Agent Builderを有効にする

Vertex AI Agent Builderを使用すると、言語モデルに基づく会話エージェントを作成できます。公式Codelab(出典:Codelabs Developers Google - Building AI Agents with Vertex AI Agent Builder)に詳細なプロセスが記載されています。

  1. Google Cloudコンソールで、Vertex AI APIを有効にします。
  2. Vertex AI Agent Builderで「エージェント」を作成します。
  • 名前:「SmartTasksAgent」
  • ベースモデルを定義(例:`gemini-1.5-pro`)
  • システム指示を追加:「あなたは生産性向上アシスタントです。ユーザーのタスク整理を支援します。日本語で回答します。」
  1. `agent_id`をメモします(`projects/.../locations/.../agents/...`のような形式)。
  2. Androidアプリからエージェントを呼び出すためのAPIキー(またはサービスアカウント)を生成します。

> ヒント:アクセスを保護するため、キーをアプリに直接埋め込まないでください。代わりに、Firebase Functionsをプロキシとして使用するか、Android用Vertex AI SDK(プレビュー版)を使用してください。

ステップ3:アプリにVertex AI SDKを統合する

Googleは最近、Android用Vertex AI SDK(アルファ版)をリリースしました。プロジェクトに追加するのは簡単です。

implementation("com.google.cloud:google-cloud-vertexai:0.3.0") // バージョンを確認

RESTアプローチを好む場合は、Retrofitを使用してAPIを直接呼び出すこともできます。ただし、SDKは認証とストリーミングをより簡単に処理します。

呼び出しを集中管理するためのリポジトリを作成します。

class SmartTasksRepository(private val agentId: String) {
    private val vertexAI = VertexAI.init(/ コンテキスト /)

    suspend fun askAgent(prompt: String): String {
        val agent = vertexAI.agent(agentId)
        val response = agent.sendMessage(prompt)
        return response.text
    }
}

> :SDKはアルファ版のため、APIは変更される可能性があります。最新のアップデートについては、公式ドキュメントを参照してください。

ステップ4:チャット用のユーザーインターフェース

メッセージを表示するRecyclerViewと入力フィールドを備えたシンプルな画面を作成します。ViewModelを使用して状態を管理します。

class ChatViewModel(private val repository: SmartTasksRepository) : ViewModel() {
    private val _messages = MutableLiveData<List<Message>>()
    val messages: LiveData<List<Message>> = _messages

    fun sendMessage(text: String) {
        viewModelScope.launch {
            _messages.value = _messages.value + Message(text, isUser = true)
            val response = repository.askAgent(text)
            _messages.value = _messages.value + Message(response, isUser = false)
        }
    }
}

ステップ5:Firebaseタスクをエージェントにリンクする

エージェントがユーザーのタスクを認識できるようにするには、コンテキストを提供する必要があります。ユーザーが質問したときに、Firestoreからタスクを取得し、プロンプト内のコンテキストとして送信します。

例:

val tasks = firestore.collection("users").document(userId).collection("tasks").get().await()
val context = "現在のタスクは次のとおりです:${tasks.documents.joinToString { it.data }}"
val prompt = "$context

${userInput}"
val response = repository.askAgent(prompt)

デプロイとテスト

エミュレーターまたは実機でアプリをテストします。エージェントが正しく応答することを確認します。例:

  • ユーザー:「今日の優先事項は何ですか?」
  • エージェント:「タスクから判断すると、プロジェクトレポートを完了することが優先です。明日が期限です。その後、14時に会議があります。」

最適化と本番環境への移行

  • エラー処理:エージェントが応答しない場合のタイムアウトとエラーメッセージを追加します。
  • クォータ制限:Vertex AIには1分あたりのリクエスト制限があります。頻繁な質問にはクライアント側のキャッシュを使用します。
  • セキュリティ:プロンプトインジェクションを防ぐために、ユーザー入力を検証します。
  • コスト:Google Cloudコンソールで使用量を監視し、コンテキストを制限してトークン数を最適化します。

Android上の生成AIはまだ初期段階ですが、Googleのツールによりアクセスしやすくなっています。Firebaseをバックエンド、Vertex AIをインテリジェンスとして組み合わせることで、ユーザーの自然言語を理解するアプリを作成できます。このチュートリアルは基礎を提供しました。可能性を想像してみてください。

さらに詳しく

これらのソースを参照して、各ステップをさらに深く掘り下げることができます。