とがみんブログ
大学院の中退を決断し、徹底的に自分と向き合い就職活動をする中で、心理学や脳科学に興味を持つ。挙げ句の果てに、この世界の仕組みにも興味を持つ。そんなとがみんの考えや経験を綴ったブログです。
swift

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

どうも。とがみんです。

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

>エンジニア留学|NexSeed

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

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

Firebaseとは

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

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

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

>Firebase

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

スポンサードリンク

Firestoreとは

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

SQLとNoSQLについて

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

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

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

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

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

NoSQLとはNot only SQLの略で、NoSQLデータベースとはRDB以外のデータベースのことであり、RDBが持つ制限を緩和したものです。

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

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

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

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

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

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

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

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

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

フォルダやファイルのイメージと、階層構造の作り方は少し違いますが、似たようなイメージです。

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

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

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

下図のような、表で表せるようなデータはRDBで扱うことができますが、右のようなデータはRDBで管理することは難しく、ドキュメント型のデータベースの方が適しています。

まとめ

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

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

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

また、下記がインターンをしているNexSeedという「プログラミング×英語」の勉強ができるセブにある学校です。

起業志向の人や、フリーランスを目指す人等、意識の高い人が多く、自分も良い刺激をもらっています。

留学を考えているけど、英語だけじゃ物足りないと感じる人、起業やフリーランスとして働くことを見据えている人は是非見てみてください!