iOS

iOSでFirestoreを使ってみた

投稿日:2019年9月26日 更新日:

はじめに

こんにちは、Yossyです。
今回も個人で作成中のアプリで使用しているFirebase機能の中から、
Firebase Cloud Firestoreの紹介をしたいと思います。

Cloud Firestoreとは

iOSやAndroidからネイティブ SDK を介して直接アクセスできるNoSQL ドキュメント志向クラウドデータベースです。
サーバー側の実装が必要なく、クライアントのみの実装でクラウドデータベースとのやり取りを行う事が出来ます。

仕組み

公式では次の通りに説明されています。

NoSQL データモデルに従い、値に対応するフィールドを含むドキュメントにデータを格納します。これらのドキュメントはコレクションに格納されます。コレクションは、データの編成とクエリの作成に使用できるドキュメントのコンテナです。

ドキュメントとは

データを格納するストレージ。値にマッピングされるフィールドを含む軽量のレコードです。各ドキュメントは名前で識別されます。
サポートされているデータ型はこちらの通りです。
例えば、以下の様にidnameを持ったuser1というドキュメント作成出来ます。

コレクションとは

データを格納するコンテナです。複数のデータを格納する事が出来ます。
コレクション自体を作成する必要はなく、最初のドキュメントを作成する際に自動でコレクションも作成されます。
コレクション内の全てのドキュメントを削除すると、コレクションも削除されます。
例えば、以下の様にusersというコレクションに、user1user2という2つのドキュメントを格納する事が出来ます。

サブコレクションとは

ドキュメント内に保存されたコレクションを指します。
このサブコレクションによって、データを階層的に保存する事が出来ます。
例えば、以下の様にuser1のドキュメント内にitemsというサブコレクションを作成する事が出来ます。
itemsの中にはitem1item2の2つのドキュメントが格納されています。

データの保存

新規保存

実際にデータを保存してみたいと思います。
事前準備としてFirebaseプロジェクトの作成とデータベースの作成を行っておきます。
作り方はこちらを参照ください。
まず、Firestore.firestore()を呼び出し、Cloud Firestoreの初期化とFIRFirestoreインスタンスの取得を行います。
setData( )メソッドを使い、引数に保存したいデータを指定します。
コレクションは、ドキュメントを新規保存する際に自動的に作成されますので、名称だけ指定してあげます。

実際にコンソール画面で確認すると、usersというコレクションにuser1ドキュメントが保存されている事が確認出来ます。

追加

既存のドキュメントにデータを追加したい場合は、setData()メソッドに引数(merge:true)を追加します。
既存のデータを上書きせずに、データを追加する事が出来ます。

こちらも、コンソール画面で確認すると先程のドキュメントにデータが追加されている事が確認出来ます。

サブコレクションの保存

サブコレクションを保存する際は、ドキュメントの中で、コレクションと配下のドキュメントを作成します。

コンソール画面で確認すると、ドキュメントの中にサブコレクションが作成されている事が確認出来ます。

データの取得

データを取得する際は、データの参照パスを示すリファレンスオブジェクトを使用します。
公式では次の通りにリファレンスの事が説明されています。

リファレンスは、データベース内の場所を参照するだけの軽量なオブジェクトです。リファレンスはそこにデータが存在するかどうかにかかわらず作成することができ、リファレンスを作成してもネットワーク操作は実行されません。

単一ドキュメント

ドキュメントより単一ドキュメントを取得したいと思います。
まずは、ドキュメントまでのリファレンスを作成します。
リファレンス作成後に、getDocument( )メソッドでデータを取得します。

複数ドキュメント

複数のドキュメントを取得したいと思います。
取得したいドキュメントが格納されているコレクションまでのリファレンスを作成します。
リファレンス作成後に、getDocuments( )メソッドで、配下のドキュメントを全て取得します。

さいごに

Firebase Cloud Firestoreを利用すれば、サーバーサイドの実装の手間を省いてオンラインデータベースを利用出来て便利です。
他に、クエリ機能でデータを検索して取得したり、ドキュメントにリスナーを付けてリアルタイム処理を行ったりも可能です。
その辺りの事も書きたいと思います。

おすすめ書籍

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus サーバーレス開発プラットフォーム Firebase入門 WebAPIアプリケーション「超」入門 FirebaseとAPIによるWeb会議システム制作

blog-page_footer_336




blog-page_footer_336




-iOS
-,

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

swift

[Swift3] コードで動的にオートレイアウトを変更する

1 はじめに1.1 前提条件2 事前準備3 1.NSLayoutConstraintのActiveを切り替える4 2.NSLayoutConstraintのActiveを切り替える(複数同時)5 3. ...

【Swift】SwiftUIの理解のためDSL記法とFunctionBuilderを調べてみた

1 はじめに2 DSL(ドメイン固有言語)について3 関数ビルダ3.1 定義方法3.2 使用方法3.3 SwiftUIの関数ビルダ4 カスタム属性5 さいごに6 おすすめ書籍 はじめに Xcode11 ...

swift

端末のモデル名やサイズを簡単に取得できるライブラリ「Device」

1 はじめに2 準備3 試してみる3.1 端末モデル名3.2 画面サイズ3.3 端末の種類4 さいごに はじめに こんにちは、nukkyです。 今回は端末のサイズやモデル名などを 簡単に取得できるライ ...

swift

UnboxとWrapでデータを永続化する

1 はじめに1.1 ライブラリの紹介1.2 前提条件2 事前準備3 実装3.1 データの準備3.2 設定データをテキストファイルに出力する3.3 設定データの読み込み4 さいごに はじめに 設定ファイ ...

swift

Swift3でRealmを使ってみる

1 はじめに1.1 前提条件2 事前準備2.1 Realmのインストール・設定2.1.1 Carthageファイルの生成2.1.2 CarhageにてRealmをインストール2.1.3 Realmをイ ...

フォロー

follow us in feedly

blog-page_side_responsive

2019年9月
1234567
891011121314
15161718192021
22232425262728
2930 

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。