【Firebase】Cloud Firestoreを無料で使った(Refi App)

# 概要
・Firebase
https://firebase.google.com/?hl=ja
・Cloud Firestore
https://firebase.google.com/docs/firestore
・Realtime Database
https://firebase.google.com/docs/database

# どのようにFirebaseを使うかの検討
## 今回管理する情報形式
　・Json

## どんな利用をしたいのか
　・条件に合うものを取得したい
　（例えるとすると、getやpostで渡したものによって条件を絞り込むアレ)

## 簡単に構築できるものとして以下の2つが候補に上がった
・Cloud Firestore

https://firebase.google.com/docs/firestore

・Realtime Database

https://firebase.google.com/docs/database

## どっちがいいか更に絞り込んだ
・絞り込みについては以下を利用

https://firebase.google.com/docs/database/rtdb-vs-firestore?hl=ja

## 検討結果
今回はCloud Firestoreを使うことに決定した。

# 早速Cloud Firestoreを使ってみる
## Cloud Firestoreに入れるJsonを用意する
今回使うJsonはこれ

``` word.json
[
    {
        "__id__": "0",
        "englishWord": "At the original speed.",
        "germanWord": "Mit der ursprünglichen Geschwind",
        "goalWord": "a tempo",
        "japaneseWord": "元の速さで。",
        "companyID": 0,
        "symbolID": 1
    },
    {
        "__id__": "1",
        "englishWord": "Faster and faster, and then it i",
        "germanWord": "Schneller und schneller. Und dan",
        "goalWord": "accelerando",
        "japaneseWord": "だんだん速く、そして終わる。",
        "companyID": 0,
        "symbolID": 1
    },
    {
        "__id__": "2",
        "englishWord": "Slightly faster than Adagio (Ada",
        "germanWord": "Geringfügig schneller als Adagio",
        "goalWord": "Adagietto",
        "japaneseWord": "Adagio(アダージョ)よりやや速く。",
        "companyID": 0,
        "symbolID": 1
    }
]
```
## インポート結果はこんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633771/7b29b92e-b8c9-5104-16d1-745917272926.png)

## 早速入れようと試みるが、、、(この時点で一敗)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633771/7ac103b6-9cfd-378f-6b69-01fea0650eb8.png)
あれ、有料登録必要なの、、、、？

## 無料で使えそうなソフト発見！！(圧倒的勝利)
・Refi App

https://refiapp.io/

### Firebaseから紐づけ情報を取得
Firebaseのプロジェクト設定(⚙)->サービスアカウント->新しい秘密鍵を生成
![Group 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633771/c3fdf3ec-d55a-4be3-4f96-42418a2c75a7.png)

### インストールして起動
この画面の「Choose a credential file or drag and drop here」に生成した秘密鍵を紐づける
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633771/d2c5c682-8db2-07f3-0850-6070d47651b9.png)

### Conectするとこの画面が表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633771/2c6e4779-3511-221d-69c9-28b3fece2de8.png)

### コレクションを開始する
IDが生成されてしまうが一旦無視。(後で消しますが、今は消さない)
![Group 1 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633771/2f7d8993-91f2-5fc1-4448-c46c2aa18b7e.png)

### Dataを入れる
Jsonのサンプルは上部を参照。
__id__がIDになるようです。DBでいうところのPrimary Keyのようです。
![Group 1 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633771/59a40529-dd56-3edf-51d2-09801929fc95.png)

### Dataが入ったことを確認
最初に勝手に生成されたIDは消してしまいましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633771/12851542-c528-8300-f1b1-d02d950aec99.png)

### 最後に確認
Commit大事
![Group 1 (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633771/2ab62e39-6f2f-d949-ca13-da96e018b9ff.png)

## Firebaseで確認
入りましたね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633771/bbb17732-2eaa-28af-b557-78b5cc9b2f58.png)

# 最後に
上記の工程を覚えてしまえば今後も楽に編集できそうですね。

僕はSwiftのエンジニアなので次の記事ではどうやってスマホに落とし込むのかを解説していきます。

## 最後に
iOSアプリ開発をしています。
主にSwiftですが、最近は熱が入ってきてFlutterも🦾
色々やってます。もし良かったら見てってください。

https://sogablog.net/