このクイックスタートでは、小さなサンプル データベースを作成してデプロイし、 iOS アプリからアクセスします。
前提条件
このクイックスタートを完了するには、次のものが必要です。
- 次のツールがインストールされた環境:
- 新しいバージョンの Xcode。
- Firebase CLI。NPM がインストールされている場合は、次を実行します。
それ以外の場合は、インストール手順のドキュメントをご覧ください。npm install -g firebase-tools@latest
- Google アカウントを所有している。
チュートリアル
| チュートリアル | |
|---|---|
1. 新しい Xcode プロジェクトを作成するXcode で、[App] テンプレートを使用して新しいプロジェクトを作成します。 |
プロジェクトに「Quickstart」という名前を付け、バンドル ID を 「com.example.Quickstart」にします。
|
2. Firebase プロジェクトを初期化するXcode プロジェクトのプロジェクト ディレクトリに移動し、そのディレクトリで Firebase プロジェクトを初期化します。 |
cd ~/qs-iosfirebase login --reauthfirebase init dataconnectプロンプトが表示されたら、次のオプションを選択します。
他のすべてのプロンプトではデフォルト値を受け入れます。 次に、Firebase プロジェクトに iOS アプリを登録します。 firebase apps:create --bundle-id com.example.Quickstart ios ios-quickstartApp Store ID を指定するよう求められたら、Enter キーを押してこの手順をスキップします。 firebase apps:sdkconfig ios -o Quickstart/GoogleService-Info.plistXcode で、[File > Add Files to "Quickstart"] を選択し、
|
3. 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 } } |
4. スキーマとオペレーションをデプロイするデータベース スキーマ、クエリ、ミューテーションを変更した場合は、データベースに変更を反映させるために デプロイする必要があります。 |
|
5. サンプルデータでデータベースにシードを設定するこのシードデータを使用すると、サンプルアプリをテストするときに確認できます。注 このステップでは、管理タスクで許可されている任意の GraphQL を実行できます。 |
|
6. iOS クライアント SDK を生成するこのコマンドは、GraphQL の定義を使用して、データベース専用の iOS クライアント SDK を生成します。このライブラリは、クライアント アプリですべてのデータベース オペレーションを実行するために使用します。 ` |
public class ListMoviesQuery { // ... @MainActor public func execute( fetchPolicy: QueryFetchPolicy = .preferCache, ) async throws -> OperationResult<ListMoviesQuery.Data> { var variables = ListMoviesQuery.Variables() let ref = dataConnect.query( name: "ListMovies", variables: variables, resultsDataType: ListMoviesQuery.Data.self, publisher: .observableMacro) let refCast = ref as! QueryRefObservation<ListMoviesQuery.Data, ListMoviesQuery.Variables> return try await refCast.execute(fetchPolicy: fetchPolicy) } } |
7. Xcode プロジェクトに Firebase の依存関係を追加するSwift Package Manager を使用して、生成されたライブラリをプロジェクトに追加します。生成されたライブラリを追加すると、Firebase Core ライブラリと Firebase SQL Connect ライブラリが推移的に含まれます。 |
Xcode ナビゲーション バーで、
[File] > [Add Package Dependencies] > [Add Local] を選択し、生成されたライブラリを含むフォルダ
|
8. サンプル iOS クライアントを作成する
アプリは、生成された SDK の関数を使用して、必要なデータベース アクセスを完了します。 |
import SwiftUI import FirebaseCore import FirebaseDataConnect import DataConnectGenerated @main struct QuickstartApp: App { init() { FirebaseApp.configure() } var body: some Scene { WindowGroup { ListMovieView() } } } struct ListMovieView: View { @State private var moviesData: ListMoviesQuery.Data? var body: some View { VStack { ForEach(moviesData?.movies ?? []) { movie in Text(movie.title) } } .task { let result = try? await DataConnect.exampleConnector .listMoviesQuery.execute() self.moviesData = result?.data } } } |
9. アプリを試すXcode からサンプルアプリを実行して、動作を確認します。 |
|
次のステップ
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 エミュレータ を設定し、本番環境ではなくエミュレータに対して開発作業を行います。エミュレータは、ライブ PostgreSQL インスタンスと同様に動作するローカル PGlite インスタンスを Cloud SQL に設定します。
アプリのスキーマと オペレーションを作成する方法を学ぶ
SQL Connect でアプリを開発する場合、スキーマとオペレーションの設計 は、最初かつ最も重要な開発タスクの 1 つです。
- コンソールのFirebase Gemini は、アプリの自然言語の説明からSQL Connect スキーマを生成できる AI ツールです。このツールを使用すると、特にリレーショナル データベースを初めて使用する場合に、非常に迅速に作業を開始できます。
- または、GraphQL を使用してデータベース スキーマ、クエリ、ミューテーション を直接作成することもできます。まず、 設計SQL Connectスキーマのガイダンスから始め、 次のページに進んでオペレーションの作成方法を学習します。
SQL Connect からリアルタイム更新を取得する方法を学ぶ
SQL Connect を使用すると、変化するデータに リアルタイムで 反応するクライアント アプリケーションを作成できます。SQL Connect からリアルタイム更新を取得するをご覧ください。