Firebaseにほぼ更新しない小さいデータベース的なファイルを設置する

ほぼ更新しない小さいデータベース的なファイルとは

例えばですが、各都道府県の名称、県庁所在地、面積のデータセット、そんな感じのイメージです。
ほぼ更新しないし、50行x4列程度です。
その程度のデータベースをFirebase に配置して、モバイルアプリから例えば24時間に一回参照したい。
基本CRUDのReadだけしたい。

結論から言うとFirebase Hosting を使うのが良さそう

Firebase には Firebase Realtime DatabaseCloud Firestore などデータベース系の機能があり、
ぱっと見それを使うのがよさそうかなと思いました。
が、説明を見るとそれらはNoSQL でした。

データ定義は一種類だけだし、むしろRDBがいい。
そしてドキュメントの記載やNoSQLのメリットとして語られるような、
処理速度に問題が生じるレベルのデータ量では勿論ないですし、
水平分散やスケーラビリティなどオーバースペックもいいところです。

ということで、データベースというよりペライチのリソースファイルとして扱った方がよさそう。
= Firebase Hosting を利用するのがよさそうです。

ちなみに、Firebase Realtime Database や Cloud Firestore の開発の勘所についてはQiitaの
Firebase Realtime DBを実践投入するにあたって考えたこと
Cloud Firestoreを実践投入するにあたって考えたこと
が非常に参考になりそうです。

Firebase Hosting を使う

公式ドキュメントFirebase Hosting を使ってみる の通りに進めれば大丈夫です。
前提として Firebaseプロジェクト を先に作っておくとよさそうです。

一応ざっとした手順を以下に書いておきます。

ステップ 1: Firebase CLI をインストールする

Nodeのバージョンによってはアップデートが必要になります。
その場合は本ブログのMac で Node.js をアップデート などを参考にアップデートをしてください。

ステップ 2: プロジェクトを初期化する

作業ディレクトリを決めたら、そこで以下のコマンドを打ちます。

$ firebase init

すると以下のような表示がバーっと出てきます。

     ######## #### ########  ######## ########     ###     ######  ########
     ##        ##  ##     ## ##       ##     ##  ##   ##  ##       ##
     ######    ##  ########  ######   ########  #########  ######  ######
     ##        ##  ##    ##  ##       ##     ## ##     ##       ## ##
     ##       #### ##     ## ######## ########  ##     ##  ######  ########

You're about to initialize a Firebase project in this directory:

  /<your>/<path>/

? Which Firebase CLI features do you want to set up for this folder? Press Space to select features, then Enter to confirm your choices. (Press <space> to select, <a> to toggle all, <i
> to invert selection)
❯◯ Database: Deploy Firebase Realtime Database Rules
 ◯ Firestore: Deploy rules and create indexes for Firestore
 ◯ Functions: Configure and deploy Cloud Functions
 ◯ Hosting: Configure and deploy Firebase Hosting sites
 ◯ Storage: Deploy Cloud Storage security rules
 ◯ Emulators: Set up local emulators for Firebase features

で、下の方に丸がいっぱい並んでいます。
必要な機能を選んでねということです。
これは全部未選択状態です。

上下ボタンで必要な機能にカーソルを合わせ、スペースキーで機能をONにし、
エンターボタンを押します。

❯◉ Hosting: Configure and deploy Firebase Hosting sites

すると、以下のような表示になります。

=== Project Setup

First, let's associate this project directory with a Firebase project.
You can create multiple project aliases by running firebase use --add, 
but for now we'll just set up a default project.

i  .firebaserc already has a default project, using <your project>.

=== Hosting Setup

Your public directory is the folder (relative to your project directory) that
will contain Hosting assets to be uploaded with firebase deploy. If you
have a build process for your assets, use your build's output directory.

? What do you want to use as your public directory? (public) 

プロジェクトの紐付けですが、今回は以前作ったので既に紐づられています。

で、公開ディレクトリとして扱うディレクトリ名を指定しろと言われています。
何も指定せずにエンターボタンを押すと、デフォルトのpublicという名前のディレクトリができます。

その後、以下のような表示が出てきます。

? Configure as a single-page app (rewrite all urls to /index.html)? (y/N) 

SPA として設定しますか(全てのURLをindex.html にリライトしますか)? とのことなので、
とりあえずNo にしておきます。

✔  Wrote public/404.html
✔  Wrote public/index.html

i  Writing configuration info to firebase.json...
i  Writing project information to .firebaserc...

✔  Firebase initialization complete!

できました!
ディレクトリ構造を見ると以下のようになってます。

$ tree
.
|____.firebaserc
|____public
| |____index.html
| |____404.html
|____.gitignore
|____firebase.json

ステップ 3: サイトにデプロイする

とりあえずデプロイしてみる。

$ firebase deploy

=== Deploying to '<yourprojectid>'...
...
✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/<yourprojectid>/overview
Hosting URL: https://<yourprojectid>.web.app

デプロイできました。
https://プロジェクトID.web.app にアクセスすると以下のような画面が表示されます!

適当なJSONファイルを置いてみる

作成したpublic ディレクトリ配下に適当なJSONファイル(例えばhoge.json とします)を作成し、
再度 firebase deploy します。

https://プロジェクトID.web.app/hoge.json でアクセスすると、
JSONファイルとして扱えるようなっています。

レスポンスヘッダを見るとjson形式になっています。

content-type: application/json

これで、Firebaseにほぼ更新しない小さいデータベース的なファイルを設置できました!

最後に

以上です。お疲れ様でした!

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。