JavaScript

【初心者】Firestoreを使う利点とは? MySQLと何が違うの?【ポイント】

みなさん、こんにちは。どんぶラッコです。

プログラミングの学習を始めたばかりの方から「Firestoreって何がいいの?」という質問を受けました

グランくん
グランくん
そもそもFirestoreって何?
どんぶラッコ
どんぶラッコ
Firebaseが提供しているデータベースだね。NoSQL型のデータベースという文脈で語られることが多く、フロントエンドエンジニアが愛用している印象です。

今回は、学習を始めたばかりのエンジニアに向けて、Firestoreは何がいいのか、どんぶラッコの視点からお伝えしたいと思います!

最初にポイントだけまとめておくとこんな感じです。

Firestore のポイント!
  1. サーバの構築がいらない!
  2. データ制約を気にせずデータを投げられる!
  3. リアルタイム更新の関数が用意されている!

1. サーバの構築がいらない!

本来、データベースサーバは、自分でサーバを立ち上げて、RDMSのサービスを導入し、パフォーマンスをチューニングし…と、使える状態になるまでの道のりがとても長いものでした。

しかし、FireStoreの場合、Webサービス上で設定を記述するだけですぐに利用が可能になってしまう点が革新的です。

グランくん
グランくん
自分でサーバを立てている場合、ネットワークインフラの知識も必要になりますからね…。それを全く気にしなくていいというのはすごいことですよ

これにより、インフラ構築にかかる労力が大幅に圧縮され、FirestoreWebアプリを作る際のデータベースとして多く利用されるようになりました。

どんぶラッコ
どんぶラッコ
Qiitaの記事でもよくFirestoreを使ってプロトタイプを作ってみたという記事をみますよね。ライトなプロダクトでもDBを取り扱いやすくなったわけです

2. データ制約を気にせずデータを投げられる!

伝わり方に語弊が生まれてしまうと思いますが、あえてこのような表現をしました。

Firestoreに代表されるNoSQLが登場するまでは、RDB形式でデータを格納することが一般的でした。RDBはMySQLなどが有名ですね。

例えば books というテーブルを作る場合、こんな感じです。

books
id author title
1 太郎 太郎の大冒険
2 次郎 次郎のワクワククッキング

books テーブルには idauthortitle というカラムがあります、と定義していますね。そしたら、それ以外の値を入力することができなかったのです。

{
  author: '三郎',
  title: '三郎列伝'
}

というデータは新しく追加することができますが、

{
  author: '三郎',
  title: '三郎列伝',
  published_at: '2020-11-20'
}

というデータを追加しようとするとエラーになります。 published_at なんて定義してねーじゃねーか!という具合に。

firestoreはこのようにデータ型が違ったとしても受け入れてくれます。

なので、学習したての頃のデータベースの意義を学習する用途やハッカソンなどのとにかくスピードを求められる場面で活躍します!

どんぶラッコ
どんぶラッコ
もちろん中規模以上の開発でも使われています!
どんぶラッコ
どんぶラッコ
ここで注意しなければいけないのは、データ制約がないというのは諸刃の剣になりうるということです。データが好きに格納できるということは、制約のチェックを設計者が担保しなければいけないということです。
どんぶラッコ
どんぶラッコ
その意味ではFirestoreは決して初学者が対象ではなく、むしろデータベースの設計理念を把握している中上級者向けの機能であると言い換えることもできますね

3. リアルタイム更新の関数が用意されている!

これもかなり大きな特徴ですね。 onSnapshot() 関数などを用いれば websocketの機能を手軽に実装することができます。これもすごいことですよ。だって、この機能があることでチャット機能などが割と手軽に実装できてしまうんですから!

プログラミングの面白さを知るために、Firestoreはとても良い題材です。みなさんも是非一度試してみてはいかがでしょうか

グランくん
グランくん
英語ですが、公式が出しているこの動画が概念を把握するのにとても役立ちます。一見の価値アリです!
ABOUT ME
どんぶラッコ
ECコンサルタント、システムエンジニアを経て、quintet株式会社CTOに就任。普段はNuxt.jsやLaravelを使用しています。

\面白いと思ったら/

記事のシェア & Twitter のフォロー をお願いします!

@proglearn
RELATED POST

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です