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

[Swift]UITableViewのカスタムセルをStoryboadで

1 はじめに1.1 前提条件2 実装2.1 Storyboadの準備2.2 UITableViewCellクラスの準備2.3 カスタムセルの表示3 さいごに はじめに こんにちは、nukkyです。 以 ...

swift

Swift3 + Alamofire4 + Unbox2.4を使ってJSONをパースする

1 はじめに1.1 前提条件1.2 完成形2 モデルの作成3 APIクラスの作成4 ViewControllerの作成4.1 Delegateの指定4.2 TableViewの設定4.3 Search ...

Moya vs APIKit

1 はじめに2 MoyaとAPIKitの概要2.1 Githubの比較2.2 機能比較3 実装の比較3.1 リクエスト定義3.2 レスポンスstruct3.3 リクエスト送信3.4 出力結果4 さいご ...

CollectionViewの並び替えを実装する

1 はじめに2 実装方法3 手順4 ロングタップの実装5 並び替えを可とする6 並び替え時のデータ処理7 次回表示時8 他に9 さいごに10 おすすめ書籍 はじめに こんにちは。Yossyです。 前回 ...

swift

Swift3で動的にUIViewを切り替える Part2

1 はじめに1.1 前提条件2 完成イメージ3 StoryBoardの準備3.1 Viewの配置3.1.1 ① Segmentを配置するView3.1.2 ② ContainerViewを表示するVi ...

フォロー

follow us in feedly

blog-page_side_responsive

東京改造計画(NewsPicks Book)
2019年9月
1234567
891011121314
15161718192021
22232425262728
2930 

アプリ情報

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