はじめに
どうも。とがみんです。
現在セブ島のNexSeedというプログラミングと英語を勉強できる学校で、ティーチングアシスタントとして、インターンしています。
生徒が作りたいアプリを開発するにあたって、つまりそうな点や必要な機能を先回りして実装して、ヒントをあげたり、授業として解説したりしています。
今回は、「Firebase」に関して調べたこと、また、そのサービスの一つである、「Firestore」について紹介しようと思います。
Firebaseとは
FirebaseとはGoogleが提供するサービスの一つで、iOSアプリ等のアプリケーションを作成する際に、主にユーザーから見えない処理をクラウド上で提供してくれるサービスです。
アプリを使う上で、ユーザーを識別するための「ユーザー認証機能」、あらゆる情報を保管しておく「データベース」、アプリユーザーに対して、様々な情報を送ることができる「プッシュ通知機能」がアプリを開発する上で、よく使う機能だと思います。
このFirebaseというサービスを使うことによって、上記のような、ユーザーから見えない処理を簡単に実装することができ、個人でわざわざサーバーのセットアップやメンテナンスをする必要がありません。
今回はFirebaseがもつ機能の中で、「Firestore」というデータベースについて書いて行こうかと思います。
Firestoreとは
Firestoreは、NoSQLドキュメント指向データベースです。これについて詳しく書いていきます。
1.SQLとNoSQLについて
そもそもSQLとは何か。SQLとは、Structured English Query Languageの略で、**RDB(Relational Database:リレーショナルデータベース)**を操作するための言語のことです。
RDBはデータを複数の表として管理し、表と表の間の関係を定義することで、複雑なデータの関連性を扱えるようにしています。
上記のような、表形式でまとめられたRDBを操作するための言語がSQLですが、この世の中には、全てのデータが表形式で保存することができるとは限りません。
表にしやすいデータであれば、RDBで効率良くデータを管理することができるのですが、表にしにくいデータも存在するわけで、
それらのデータを効率良く扱えるようにしようということで、NoSQLデータベースというものが出てきました。
NoSQLとはNot only SQLの略で、NoSQLデータベースとは非リレーショナルデータベースのことであり、RDBが持つ制限を緩和したものです。
このNoSQLのデータのモデルには大別して、
- キー・バリュー型
- カラム指向型
- グラフ型
- ドキュメント指向型
の4つの種類があり、Firestoreはドキュメンと指向型のデータベースです。次にこのドキュメント指向型のデータベースについて詳しく書いていきます。
2.ドキュメント指向データベースとは
ドキュメント指向データベースとは、自由な形式のデータを保存することができるデータベースです。SQLデータベースと違って、テーブルや行はなく、代わりにデータは「ドキュメント」に格納され、それが「コレクション」にまとめられます。
イメージとしては、以下の図のように、「フォルダ」があって、その中に複数の「ファイル」があって、それぞれのファイルに、自由な形式で「データ」が保存されているようなイメージです。
Firebaseで使われている、ドキュメント指向データベースでは、この「フォルダ」に値するものを「コレクション」、ファイルに値するものを「ドキュメント」ファイルに書かれたものに値するものを「データ」と言います。
少し違う点としては、「フォルダ」の中には「フォルダ」を入れる事ができ、ファイルにはデータを書き込む事しかできませんが、
「コレクション」の中にはコレクションを持つことができず、また、ドキュメントは、データだけでなく、「コレクション」を持つことができます。
フォルダのイメージと、階層構造の作り方は少し違います。
3.ドキュメント型データベースとRDB(リレーショナルデータベース)の比較
違いは調べているとたくさん出てくるのですが、メインの違いだけ説明します。ドキュメント指向のデータベースでは、柔軟なデータ構造を扱えるのに対し、RDBはデータベースの要素が厳密に定義されているので、非構造化のデータを管理することが苦手です。
ドキュメント型データベース | RDB(リレーショナルデータベース) | |
---|---|---|
データモデル | 柔軟。自由なデータ構造を扱える。 | テーブル、行、列、インデックス、テーブル間の関係などのデータベースの要素が厳密に定義されている。非構造化データが苦手。 |
最後に
Firebaseというサービスで提供されているデータベースFirestoreについて説明しました。
Firestoreを使いこなす事ができるようになると、開発できるアプリの種類が一気に広がるので、iOSアプリエンジニアを目指す人にとっては、勉強必須の機能かと思います。
もし何か、不明点等あれば、教えていただけると幸いです。
このFirestoreを使って、簡単なToDoアプリを作ったので、それについて書いていこうかと思います。
また、以下は自分が運営している「とがみんブログ」です。
-
時間、場所、お金に縛られない自由な生き方を目指した様々な経験
-
就職活動の中で、自己分析に嵌り、脳科学や心理学の本を読み漁りアウトプットしたもの
-
量子力学の考え方に基づいた、この世界の仕組み
と言った変な事を考えては、記事にして投稿しているので、よければこちらもブックマークお願いします(笑)。