技術系

Firebaseのススメ

技術系

こんにちは、なかにしです。

最近はNoSQL型のDBを選択される方が増えているように思います。
小規模アプリを早く、沢山出そうぜ!みたいな流れが来てるんですかね。

僕の今やってる案件でも、モノリスなものをマイクロサービス化しているチームがいて、
大変そうだなーと思ってます。(他人事)

さて、今回はNoSQLです!
いくつかありますが、最近ハマってるFirebaseにしようと思います。

とにかく楽で早いので好きです!

今回は新規でDBを立ち上げ、
ボタンを押したらデータ取得できるようなミニアプリを10分で作成しちゃいます!

いってみよう!

プロジェクト作成

Firebaseの公式ページに移動し、右上の「コンソールへ移動」を押下。

上の方にある「+プロジェクトを追加」ボタンを押し、プロジェクトを作ります。
アプリ名は「Practice-app」にします。

アナリティクスはどっちでもいいので、
今回はスルーし、「プロジェクト作成」ボタンを押下。

プロジェクトが作成されるので、待ちます。

初期設定

プロジェクトの作成ができたので、初期設定をします。

真ん中の方のコードのアイコンをクリックし、プロジェクトのニックネームを決めます。
今回は「練習アプリ」にしました。

そうすると、これで設定しろよみたいなのが出てくるので、それ通りにやります。

vscodeで以下のコマンドを使用してReactのひな形を作り、
そこに上記の設定を突っ込みます。

npm create vite

ひな形ができました。

firebaseをインストールします。

npm i firebase

インストール後、package.jsonとかと同じ階層に、
firebaseConfig.js(もしくはts)というファイルを作成し、先ほどの設定を入れます。

// Import the functions you need from the SDKs you need
import { initializeApp } from "firebase/app";
// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries

// Your web app's Firebase configuration
const firebaseConfig = {
  apiKey: "aaaaaaaaaaaaaaaaa",
  authDomain: "aaaaaaaaaaaaaaaaa",
  projectId: "aaaaaaaaaaaaaaaaa",
  storageBucket: "aaaaaaaaaaaaaaaaa",
  messagingSenderId: "aaaaaaaaaaaaaaaaa",
  appId: "aaaaaaaaaaaaaaaaa"
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);

上記はFirebaseの初期化コードのみが書かれています。
今回はNoSQL型のFirestoreを使用したいので、Firestoreの設定コードを追記する必要があります。

結果として以下になります。

// Import the functions you need from the SDKs you need
import { initializeApp } from "firebase/app";
import { getFireStore } from "firebase/firestore";   // 追記
// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries

// Your web app's Firebase configuration
const firebaseConfig = {
  apiKey: "aaaaaaaaaaaaaaaaaaaaaaaaaa",
  authDomain: "aaaaaaaaaaaaaaaaaaaaaaaaaa",
  projectId: "aaaaaaaaaaaaaaaaaaaaaaaaaa",
  storageBucket: "aaaaaaaaaaaaaaaaaaaaaaaaaa",
  messagingSenderId: "aaaaaaaaaaaaaaaaaaaaaaaaaa",
  appId: "aaaaaaaaaaaaaaaaaaaaaaaaaa",
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);
const db = getFireStore(app);     // 追記

export default db;   // 追記

データを用意する

上記で初期設定が完了したので、データを用意していきます。

Firebaseの画面に戻り、構築 > Firestoreを選択。
画面上部の「データベースを作成」を押下します。

今回はテストなので「テストモードで開始する」を選択し、
リージョンもそのままで「有効にする」を押下します。

すると、Firestoreが使えるようになるので、手動でデータをつっこんでいきます。

適当にデータを入れて…

あとはこれをReactのアプリ側から呼び出してあげるだけです!
以下のコードで呼び出しました。

import { collection, getDocs } from "firebase/firestore";
import { useState } from "react";
import "./App.css";
import db from "./firebaseConfig";

function App() {
  // taskを管理
  const [tasks, setTasks] = useState([]);

  /**
   * FireStoreからデータ取得して、useStateに突っ込む
   */
  const getData = async () => {
    const taskCollection = collection(db, "tasks");
    const snapShot = await getDocs(taskCollection);
    const tasks = snapShot.docs.map((doc) => doc.data());

    setTasks(tasks);
  };

  return (
    <div className="App">
      {tasks.map((task, index) => (
        <ul key={index}>
          <li>{task.task}</li>
          <li>{task.user}</li>
        </ul>
      ))}
      <button onClick={getData}>ボタン</button>
    </div>
  );
}

export default App;

これでボタンを押すと…

ちゃんと出ました!
終わり!

さいごに

かなり駆け足でやったので、細かいところは省いちゃってます。
スミマセン…

こんな感じでスピーディーにDB立ち上げて、
接続できるよってことが伝われば幸いです。

ログインに関しても簡単に設定できるので、また今後まとめます~
今回はここまで!

Enjoy Hacking!!