Swift
swift4

【swift4】Firebaseのデータベース「Firestore」の解説

はじめに

どうも。とがみんです。

現在セブ島のNexSeedというプログラミングと英語を勉強できる学校で、ティーチングアシスタントとして、インターンしています。

生徒が作りたいアプリを開発するにあたって、つまりそうな点や必要な機能を先回りして実装して、ヒントをあげたり、授業として解説したりしています。

今回は、「Firebase」に関して調べたこと、また、そのサービスの一つである、「Firestore」について紹介しようと思います。

Firebaseとは

FirebaseとはGoogleが提供するサービスの一つで、iOSアプリ等のアプリケーションを作成する際に、主にユーザーから見えない処理をクラウド上で提供してくれるサービスです。

アプリを使う上で、ユーザーを識別するための「ユーザー認証機能」、あらゆる情報を保管しておく「データベース」、アプリユーザーに対して、様々な情報を送ることができる「プッシュ通知機能」がアプリを開発する上で、よく使う機能だと思います。

このFirebaseというサービスを使うことによって、上記のような、ユーザーから見えない処理を簡単に実装することができ、個人でわざわざサーバーのセットアップやメンテナンスをする必要がありません。

>Firebase

今回はFirebaseがもつ機能の中で、「Firestore」というデータベースについて書いて行こうかと思います。

Firestoreとは

Firestoreは、NoSQLドキュメント指向データベースです。これについて詳しく書いていきます。

1.SQLとNoSQLについて

そもそもSQLとは何か。SQLとは、Structured English Query Languageの略で、RDB(Relational Database:リレーショナルデータベース)を操作するための言語のことです。

RDBはデータを複数の表として管理し、表と表の間の関係を定義することで、複雑なデータの関連性を扱えるようにしています。

4.jpg

上記のような、表形式でまとめられたRDBを操作するための言語がSQLですが、この世の中には、全てのデータが表形式で保存することができるとは限りません。

表にしやすいデータであれば、RDBで効率良くデータを管理することができるのですが、表にしにくいデータも存在するわけで、

それらのデータを効率良く扱えるようにしようということで、NoSQLデータベースというものが出てきました。

NoSQLとはNot only SQLの略で、NoSQLデータベースとは非リレーショナルデータベースのことであり、RDBが持つ制限を緩和したものです。

このNoSQLのデータのモデルには大別して、

  • キー・バリュー型
  • カラム指向型
  • グラフ型
  • ドキュメント指向型

の4つの種類があり、Firestoreドキュメンと指向型のデータベースです。次にこのドキュメント指向型のデータベースについて詳しく書いていきます。

2.ドキュメント指向データベースとは

ドキュメント指向データベースとは、自由な形式のデータを保存することができるデータベースです。SQLデータベースと違って、テーブルや行はなく、代わりにデータは「ドキュメント」に格納され、それが「コレクション」にまとめられます。

イメージとしては、以下の図のように、「フォルダ」があって、その中に複数の「ファイル」があって、それぞれのファイルに、自由な形式で「データ」が保存されているようなイメージです。

Firebaseで使われている、ドキュメント指向データベースでは、この「フォルダ」に値するものを「コレクション」、ファイルに値するものを「ドキュメント」ファイルに書かれたものに値するものを「データ」と言います。

少し違う点としては、「フォルダ」の中には「フォルダ」を入れる事ができ、ファイルにはデータを書き込む事しかできませんが、

「コレクション」の中にはコレクションを持つことができず、また、ドキュメントは、データだけでなく、「コレクション」を持つことができます。

フォルダのイメージと、階層構造の作り方は少し違います。

5.jpg

3.ドキュメント型データベースとRDB(リレーショナルデータベース)の比較

違いは調べているとたくさん出てくるのですが、メインの違いだけ説明します。ドキュメント指向のデータベースでは、柔軟なデータ構造を扱えるのに対し、RDBはデータベースの要素が厳密に定義されているので、非構造化のデータを管理することが苦手です。

ドキュメント型データベース RDB(リレーショナルデータベース)
データモデル 柔軟。自由なデータ構造を扱える。 テーブル、行、列、インデックス、テーブル間の関係などのデータベースの要素が厳密に定義されている。非構造化データが苦手。

最後に

Firebaseというサービスで提供されているデータベースFirestoreについて説明しました。

Firestoreを使いこなす事ができるようになると、開発できるアプリの種類が一気に広がるので、iOSアプリエンジニアを目指す人にとっては、勉強必須の機能かと思います。

もし何か、不明点等あれば、教えていただけると幸いです。

このFirestoreを使って、簡単なToDoアプリを作ったので、それについて書いていこうかと思います。

また、以下は自分が運営している「とがみんブログ」です。

  • 時間、場所、お金に縛られない自由な生き方を目指した様々な経験

  • 就職活動の中で、自己分析に嵌り、脳科学や心理学の本を読み漁りアウトプットしたもの

  • 量子力学の考え方に基づいた、この世界の仕組み

と言った変な事を考えては、記事にして投稿しているので、よければこちらもブックマークお願いします(笑)。

>とがみんブログ

参考文献