😸

SwiftPMでFirestoreを導入する

2023/01/19に公開

概要

Swift Package Manager を使って Firestore を導入し、接続してみるところまでの手順を解説します。

手順

Xcodeでプロジェクトを作成

Firebaseでプロジェクトを作成

https://console.firebase.google.com/?hl=ja

アプリを追加からiOS+を選択して、アプリの登録を行う。手順があるので指示通りに行う。

アプリの登録

バンドルIDとアプリ名を入力する。

設定ファイルのダウンロード・配置

リポジトリを公開したい場合は、.gitignoreに記載するのが無難。

SDKの追加(SPMの利用)

Xcodeの File > Add Packages... からウィンドウを開いて、右上の検索窓にsdkのurlを入力するとヒットする。

初期化コードの追加

Xcodeの自動生成でAppDeligateが生成されていない場合はクラスごとコピーペーストする。

MyApp.swift
import SwiftUI
import FirebaseCore
import FirebaseFirestore

class AppDelegate: NSObject, UIApplicationDelegate {
    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        FirebaseApp.configure()
        
        return true
    }
}

@main
struct MyApp: App {
    @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

構築

Firestore Database を選択して、構築する。


今回はテストモードで作成します。


近いロケーションを選ぶと良いです。

データを追加

実装

Firestore.swift
import FirebaseFirestore
let db = Firestore.firestore()

func setBook() async {
    do {
        try await db.collection("books").document(UUID().uuidString).setData([
            "name": "book",
        ])
    } catch {
        // エラーの処理を書く
        FatalError()
    }
}

呼び出し側

ContentView.swift
import SwiftUI

  struct ContentView: View {
    var body: some View {
        VStack {
            Button("データを追加") {
                Task {
                    await setBook()
                }
            }
        }
        .padding()
    }
  }

ビルドして「データを追加」ボタンを押すと、Firestoreのコンソールにデータが反映される。(コレクションが新規に作成される場合は、再読み込みすることで表示される。)

接続できたことが確認できました🎉

参考文献

GitHubで編集を提案

Discussion