iOSアプリ開発にてSwiftを使用してFirebase Cloud Firestoreデータベースからデータを読み込む方法

今回はiOSアプリ開発についての記事になります.Firebase Cloud Firestoreデータベースから保存したデータを読み出して操作する方法について解説していきたいと思います.これさえ読めばあなたもiOSアプリ開発においてデータベースに悩む必要はもうなくなります.

はじめに

先日以下のようにFirestoreデータベースを操作する方法について解説しましたが今回は実際にアプリ上でそのデータベースを読み出す方法について解説していきたいと思います.

Pythonを使用してFirebase Cloud Firestoreにjson形式データを書き込む方法

実際にiOSアプリに組み込むことを想定していますのでplistなどの設定も含めて解説していきたいと思います.それではどうぞ.

アプリ設定

まず,以前の記事でも触れましたが今回はFirebaseのプロジェクトが作成されていることが前提になります.まだプロジェクトを作成していない方は[この記事]を参考にプロジェクトを作成してください.
プロジェクトを作成した後,今回はiOSアプリの話になりますのでプロジェクトにiOSアプリを登録していきましょう.

Imgur

そしてiOSアプリの登録画面にくると以下の画像のようにiOSバンドルIDとアプリのニックネーム,App Store IDを入力するように求められるはずです.

Imgur

ここで絶対に入力する必要がある部分はiOSバンドルIDですがそれは画像のBundle Identifier部分から取得することができます.はじめはなんだと思うかもしれませんがバンドルIDは何かと使うので取得方法は覚えておくといいです.

Imgur

というわけでバンドルIDと好きなアプリ名を登録した後は次へ進みましょう.そして画像に表示されているようにGoogleService-Info.plistをダウンロードしXcodeのプロジェクトに追加しましょう.基本的に初期のままであればInfo.plistと同じ場所に追加すれば大丈夫です.ちなみに皆さんご存知の通りかと思いますがXcodeにファイルを追加する際には直接的にドラッグ&ドロップしてターゲットに追加をするのが一番楽です.直接フォルダにダウンロードしてもプロジェクトに追加されませんので気を付けましょう.

Imgur

というわけで次はプロジェクトにSDKを追加していきます.今回はみんな大好きcocoapodsを用いてSDKをインストールしていきます.cocoapodsをインストールしていない方は[この記事]をご覧ください.
Podfileがない場合は作成しましょう.

pod init

それではPodfileを編集していきます.

vim Podfile

Podfileに以下の内容を追記します.

pod 'Firebase/Core'
pod 'Firebase/Firestore'

# Optionally, include the Swift extensions if you're using Swift.
pod 'FirebaseFirestoreSwift'

ファイルを保存して次のコマンドを実行します.

pod install

これによりアプリの .xcworkspace ファイルが作成されますのでこれ以降アプリ開発を行う際はこのファイルをXcodeで開いて行っていきましょう.

また,データベースのルールを変更しておくことも忘れないでください.今回は読み込みだけ許可するので以下のようにルールを編集してください.

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read;
      allow write: if false;
    }
  }
}

これでFirebase側での設定は完了です.次はコードを編集していきましょう.

AppDelegateの設定

まずはFirebaseの初期化を行う必要があります.これは基本的にアプリ起動時に必ず呼び出されるAppDelegate.swiftで行うようにしましょう.以下が編集したコードとなります.

import UIKit
import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        // [START default_firestore]
        FirebaseApp.configure()
        // [END default_firestore]
        return true
    }

具体的にはFirebaseをimportしてfunc applicationにFirebaseApp.configure()を追加しただけです.これで初期設定は完了しましたので早速ViewControllerからデータベースを読み出していきましょう.

ViewControllerからFirestoreの呼び出し

さて,いよいよデータベースの呼び出しです.ViewController.swiftを編集していきましょう.

import UIKit
import Firebase

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        armDataLoader()
    }

    func armDataLoader(){
        let settings = FirestoreSettings()
        settings.isPersistenceEnabled = true
        
        let db = Firestore.firestore()
        
        // [START get_collection]
        db.collection("arms").getDocuments() { (querySnapshot, err) in
            if let err = err {
                print("Error getting documents: \(err)")
            } else {
                for document in querySnapshot!.documents {
                    print("\(document.documentID) => \(document.data())")
                }
            }
        }
        // [END get_collection]
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

はい,こんな感じで簡単にデータベースのデータを読み込むことができます.ちなみにこのsettings.isPersistenceEnabledという変数をtrueにすることでデータベースの永続化が可能となります.アプリ自体にデータを保存してくれるようですね.昔はRealmとかのデータベースライブラリを別途使用していたのですがこれを知ってからはもうFirestoreから離れられませんね.めちゃくちゃ便利だと思います.


そしてdb.collection(“collection_name”).getDocuments()でデータを読み込むことができるというわけですね.何かデータごとに処理をしたい場合はfor分の中で文を書けばいいというわけです.

さいごに

というわけで今回はiOSアプリにてFirestoreを使用する方法を解説しました.正直オンラインデータベースの実装って難しいんじゃないかと思っていましたが簡単に実装することができましたね.オンラインのデータベースだとデータを追加するときはPythonなどの使用しやすい言語で操作を行い簡単にデータを更新することができるためとても便利ですね.というわけで今回はこの辺で.次はアプリ開発関連も解説していければと思います.

0 件のコメント :

コメントを投稿