はじめに
今回は、create-react-appで作成したReactアプリをFirebaseへデプロイ際の手順を簡単にまとめます。
※こちらの記事はReact初学者の備忘録・アウトプットを目的とした記事です。理解が浅い部分もありますが、ご容赦ください。何かしら参考になれば幸いです。
そもそもFirebaseとは
- FirebaseとはGoogleが提供するアプリのプラットフォームのことです。様々なプロジェクトのデータベースがこのクラウド環境に設置されているわけです。
- Firebaseはクラウド環境にデータベースなどを設置して、インターネット経由でアクセスして利用できるようにしています。サーバー側にプログラムを用意する必要がないため、Reactのようなクライアント側だけしかもたないWebアプリでも使用されます。
開発手順
01. Firebaseにプロジェクトを作成する。
02. リソースのロケーションを設定する。
クラウドリソースのロケーションに「asia-northeast1」に設定します。
03. 使用するプラットフォームを選択
04. データベースを作成
- それぞれのアプリにあったデータベース("cloud fire store"か"real time database")を選択するのですが、公式ドキュメントを参考にしてください。
- 今回はfire storeを利用するので、サイドバーから、cloud fire storeを選択します。
本番モードかテストモードかを聞かれますが、firestore.rulesというファイルで設定を上書きするので、どちらでもいいです。
05. 各コマンドの実行
- firebase toolsをグローバルインストールします。ターミナルで以下のコマンドを実行します。(一度でも実行したことがあれば、実行する必要はありません)
% npm install -g firebase-tools
- firebaseをインストール
% npm install —save firebase
- firebaseにログイン
% firebase login
googleアカウントを選択して許可します。
06.firebase initを設定
% firebase init
Witch Firebase CLI features do you want to set up for this folder?と聞かれますが、今回は
◯Firestore
◯Functions
◯Hosting
にチェックを入れます。
(上下の方向キーで移動して、スペースキーでチェックを入れます。選択したEnterキーで次へ進みます。)
- 続いてPlease select an option:と聞かれます
今回はプロジェクトを作ってあるので、
use an existing project(既存のプロジェクトを使う)を選択して、プロジェクトを選択します。
What file should be used for Firestore Rules?(firestoreのルールを決めるファイルはこれでいいですか?)と聞かれるので、デフォルトでEnterを押します。
What file should be used for Firestore indexes?(firestoreのindexを決めるファイルはこれでいいですか?)と聞かれるので、こちらもyesで通します。
What langage would you like to use to write Cloud Functions?(cloud functionsをどの言語で書きますか?)と聞かれるので、JavaScriptかtypeScriptかを選択してEnterを押します。(今回はTypeScriptを選択しました。)
Do you want to use TSLint to catch probable bugs and enforce style?と設定を聞かれるので、yesで通します。
Do you want install dependencies with npm now?(npmで依存関係のあるものをインストールしますか?)と聞かれるので、yesで通します。
What do you want to use as your public directory?(どのパブリックディレクトリをつかいますか?)と聞かれます。
create-react-appでは、後ほど生成するbuildファイルを本番環境用に用意するので、「build」を指定してEnterを押します。Configure as a Single-page app?(SPAとして設定したいですか?)と聞かれますが、SPAを作る人はyesをにしてEnterを押します。
07. firestore.rulesの設定
- エディタに戻り、firestore.rulesファイルを開き、最低限のセキュリティ設定を行います。
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read;
allow write: if request.auth.uid != null;
}
}
}
こちらは、誰でもデータベースを読み込むことはできるが、書き込みは認証されたユーザーでないとできないという設定を加えることができました。
buildフォルダを生成
- 本番用のbuildフォルダを生成するために、以下のコマンドを実行します
% npm run build
- コンパイルエラーを防ぐためにfunctoins/src/index.jsのimportを一旦コメントアウトします。
// import * as functions from 'firebase-functions';
08. Firebaseへデプロイ
- ターミナルへ戻り、以下のコマンドを実行します。
% firebase deploy
成功すると、下の方にHosting URLというものが現れますが、こちらが本番環境のURLになります。
firebase deploy時のエラー解決
deploy時に400番のエラーを返されることがあります。
こちらは、firebaseの料金プランが違うためです。firebaseの料金プランを無料プランから、Blaze(従量課金制)に変更しなくてはなりません。基本的に個人で開発する程度のデータ量なら、無料で使えるはずですが、公式ドキュメントを参考にしてプランを変更してみてください。
おわりに
大分冗長な説明になってしまいましたが、最後までお付き合いくださりありがとうございました。
修正点等ありましたら、教えてくださると助かります。