このクイックスタートでは、小さなサンプル データベースを作成してデプロイし、Android アプリからアクセスします。
前提条件
このクイックスタートを完了するには、次のものが必要です。
- 次のツールがインストールされている環境:
- 最新バージョンの Android Studio。
- Firebase CLI。NPM がインストールされている場合は、次のコマンドを実行します。
それ以外の場合は、インストール手順に関するドキュメントをご覧ください。npm install -g firebase-tools@latest
- Google アカウント。
チュートリアル
| チュートリアル | |
|---|---|
1. 新しい Android Studio プロジェクトの作成Android Studio で、Empty Activity テンプレートを使用して新しいプロジェクトを作成します。 プロジェクトに「Quickstart App」という名前を付け、パッケージ名を「com.example.quickstartapp」にします。 |
|
2. Android Studio プロジェクトに Firebase を追加するFirebase の依存関係と Kotlin シリアル化プラグインを |
QuickstartApp/build.gradle.kts
plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.kotlin.compose) apply false // Add this line. id("com.google.gms.google-services") version "4.4.4" apply false } plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.compose) // Add these lines. kotlin("plugin.serialization") version libs.versions.kotlin id("com.google.gms.google-services") } // ... dependencies { // ... // Add these lines. implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.11.0") implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.11.0") implementation(platform("com.google.firebase:firebase-bom:34.14.0")) implementation("com.google.firebase:firebase-dataconnect") } |
3. Firebase プロジェクトを初期化するAndroid Studio プロジェクト ディレクトリに移動し、その中で Firebase プロジェクトを初期化します。 |
cd ~/QuickstartAppfirebase login --reauthfirebase init dataconnectプロンプトが表示されたら、次のオプションを選択します。
他のすべてのプロンプトではデフォルト値を受け入れます。 次に、Firebase プロジェクトに Android アプリを登録します。 firebase apps:create -a com.example.quickstartapp android android-quickstartfirebase apps:sdkconfig android -o app/google-services.json |
4. GraphQL の定義例を確認するSQL Connect では、GraphQL を使用してすべてのデータベース スキーマとオペレーションを定義します。プロジェクトを初期化したときに、Firebase CLI によっていくつかのサンプル定義が作成され、すぐに使用できるようになっています。 |
dataconnect/schema/schema.gql(抜粋)type Movie @table { title: String! imageUrl: String! genre: String } type MovieMetadata @table { movie: Movie! @unique rating: Float releaseYear: Int description: String } query ListMovies @auth(level: PUBLIC) { movies { id title imageUrl genre } } |
5. スキーマとオペレーションをデプロイするデータベース スキーマ、クエリ、ミューテーションを変更するたびに、変更をデプロイして、データベースに反映する必要があります。 |
|
6. サンプルデータでデータベースをシードするこのシードデータを使用すると、サンプルアプリをテストする際に確認できます。このステップでは、任意の GraphQL を実行します。これは管理タスクで許可されています。 |
|
7. Android クライアント SDK を生成するこのコマンドは、GraphQL 定義を使用して、データベース専用の Android クライアント SDK を生成します。このライブラリは、すべてのデータベース オペレーションを実行するためにクライアント アプリで使用します。
|
public interface ExampleConnector : GeneratedConnector<ExampleConnector> { override val dataConnect: com.google.firebase.dataconnect.FirebaseDataConnect public val listMovies: ListMoviesQuery // ... } |
8. Android クライアントのサンプルを作成する
アプリは、生成された SDK の関数を使用して必要なデータベース アクセスを完了します。 |
package com.example.quickstartapp import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import com.example.quickstartapp.ui.theme.QuickstartAppTheme import com.google.firebase.dataconnect.generated.ExampleConnector import com.google.firebase.dataconnect.generated.ListMoviesQuery import com.google.firebase.dataconnect.generated.execute import com.google.firebase.dataconnect.generated.instance class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { QuickstartAppTheme() { Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> var movies by remember { mutableStateOf(emptyList<ListMoviesQuery.Data.MoviesItem>()) } LaunchedEffect(Unit) { // Queries need to be executed in a coroutine context try { movies = ExampleConnector.instance.listMovies.execute().data.movies } catch (e: Exception) { // TODO: Handle error, e.g., show a Toast or update a state variable to // display an error message. } } LazyColumn(modifier = Modifier.padding(innerPadding)) { items(movies) { movie -> Text(text = movie.title) } } } } } } } |
9. アプリを試すAndroid Studio からサンプルアプリを実行して、動作を確認します。 |
|
次のステップ
SQL Connect VS Code 拡張機能を試す
SQL Connect を使用して開発する場合は、SQL Connect VS Code 拡張機能を使用することを強くおすすめします。Visual Studio Code をメインの開発環境として使用していない場合でも、この拡張機能にはスキーマとオペレーションの開発をより便利にするいくつかの機能があります。
- GraphQL 言語サーバー。SQL Connect に固有の構文チェックとオートコンプリート候補を提供します。
- コードの行に沿って表示される CodeLens ボタン。スキーマ定義ファイルからデータを読み書きしたり、オペレーション定義からクエリとミューテーションを実行したりできます。
- 生成された SDK を GraphQL 定義と自動的に同期します。
- ローカル エミュレータの設定が簡素化されました。
- 本番環境へのデプロイが簡素化されます。
ローカル開発に SQL Connect エミュレータを使用する
このチュートリアルでは、SQL Connect スキーマとオペレーションを本番環境に直接デプロイする方法を説明しましたが、アプリの開発中は本番環境データベースに変更を加えたくないでしょう。代わりに、SQL Connect エミュレータを設定し、本番環境ではなくエミュレータに対して開発作業を行います。エミュレータは、Cloud SQL のライブ PostgreSQL インスタンスと同様に動作するローカル PGlite インスタンスを設定します。
アプリのスキーマとオペレーションを作成する方法を学習する
SQL Connect を使用してアプリを開発する場合、スキーマとオペレーションの設計は、最初かつ最も重要な開発タスクの 1 つです。
- Firebase コンソールの Gemini は、アプリの自然言語の説明から SQL Connect スキーマを生成できる AI ツールです。このツールを使用すると、特にリレーショナル データベースを初めて使用する場合に、非常に迅速に作業を開始できます。
- または、GraphQL を使用してデータベース スキーマ、クエリ、ミューテーションを直接記述することもできます。まず、SQL Connect スキーマを設計するのガイダンスから始め、次のページに進んで書き込みオペレーションの方法を学びます。