目次

はじめに

本書のターゲット
本書が触れない範囲
本書の見方
リポジトリー
免責事項
表記関係について
底本について

第1章 Firebase

1.1 Firebaseについて
1.2 料金について

第2章 アプリケーションの構築

2.1 セットアップとデプロイ

第3章 認証

3.1 Googleアカウントによる認証

第4章 Cloud Storageによるコンテンツの管理

4.1 Cloud Storageについて
4.2 コンテンツを保存する

第5章 Firestoreによるデータベース管理

5.1 NoSQLデータベースとFirestore
5.2 本アプリケーションのDB設計
5.3 保存した動画のメタデータの保存と動画再生

第6章 Cloud Functionsによるサーバーレスなバックエンド処理

6.1 サーバーレスとCloud Functionsについて
6.2 Cloud Functionsのセットアップとデプロイ
6.3 新規登録時に、ユーザー情報を保存する
6.4 トランスコード処理の概要
6.5 トランスコード関数の実装
6.6 動画メタデータのコピー

第7章 セキュリティールール

7.1 セキュリティールールを記述する
7.2 セキュリティールールの実装
7.3 セキュリティールールの本番反映
7.4 セキュリティールールのシミュレーション

第8章 Reduxの導入とFirebaseとの連携

8.1 なぜReduxを導入するのか?
8.2 Reduxに登場する重要な概念
8.3 ReduxとFirebaseの組み合わせについて
8.4 react-redux-firebaseの導入とStoreの実装
8.5 コンポーネントとReduxの連携
8.6 動画メタデータの一覧取得
8.7 ユーザー認証

おわりに

ご意見・フィードバック
Spacial Thanks

はじめに

 本書は、シングルページアプリケーションを作成を通じて、Firebaseとは一体どんなサービスなのか、そして何ができるのかを体系立てて解説するものです。著者は個人開発に興味があり、自作のWebサービスを何か公開したいという気持ちがありました。そんな中出会ったFirebaseは、自分の目的を実現するための最適なツールであると強く感じて興味を持ったのが本書を書くに至った理由です。

本書のターゲット

 本書のターゲットは、次のような方を想定しています。

 ・Firebaseは名前は聞いたことがあるが、実際に触ったことはない人

 ・JavaScriptだけでWebアプリケーションを開発してみたい人

 ・Firebaseと何かモダンなJSフレームワークを組み合わせてアプリケーションを開発してみたい人

 ・サーバーサイドだけでなく、フロントエンドの開発にも興味がある人

本書が触れない範囲

 主に著書の力不足とページ数の都合によるところが大きいですが、本書では次についての詳細は触れません。

 ・主に開発用途のサービスのみを取り上げ、Firebaseの全てのサービスは対象外

 ・Firebaseのデータベースサービスはベータ版のFirestoreを扱い、Realtime Databaseは対象外

 ・一部にマテリアルデザインによるCSSを使用しますが、洗練されたUIの実現は取り扱いません

 ・Jest、Mocha、Chaiなどを用いたテストコードは含まれていません

本書の見方

 読み進めていく過程で、実装の一部分を変更していきます。その際に、実装の追加部分は行の先頭に+から始まり、削除部分は先頭に-から始まります。

リスト1: 変更の例

 1: - console.log('fuga');
   2: + console.log('hoge');

リポジトリー

 本書に掲載されたコードと正誤表などは、次のリポジトリーで公開しています。

 ・https://github.com/samuraikun/firebase-youtube-clone

免責事項

 本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、著者はいかなる責任も負いません。

表記関係について

 本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。

底本について

 本書籍は、技術系同人誌即売会「技術書典5」で頒布されたものを底本としています。

第1章 Firebase

1.1 Firebaseについて

 Firebaseは、一連の機能のサービス群を提供するGoogle社のサービスです。サービスの内容は認証、データベース、ストレージからサーバーレスコンピューティングや機械学習など、多岐にわたります。

 またFirebaseのサービスはGoogleがメンテナンスしており、基本的にスケーラビリティ等のインフラ部分をユーザーが気にする必要はありません。この大きな特徴があるため、Firebaseを利用するデベロッパーはインフラ部分をFirebaseに任せ、アプリ開発に集中することができるという大きなメリットがあります。これにより、Firebaseではサーバーサイドの処理をほとんど書かなくても、大規模向けはともかくプロトタイプ程度のWebアプリケーションであれば、かなりスピーディーに開発することが可能です。

 具体的に、今回利用するのは次のサービスです。

 ・Hosting

  ─本番環境として静的サイトをデプロイして公開する

  ─SSL対応しており、独自ドメインの追加も可能

 ・Authentication

  ─Googleアカウントによる認証と、匿名認証を行うために使用

  ─その他にも、FacebookやTwitterによる認証も可能

 ・Cloud Storage

  ─画像や動画など静的コンテンツの保存を行う

 ・Firestore

  ─ドキュメント指向型のNoSQLデータベース

  ─類似サービスとして下位互換のRealtime Databaseがある

 ・Cloud Functions

  ─HTTPやその他サービスのイベントをフックにバックエンド処理を行う

  ─オートスケールにも対応しており、いわゆるサーバーレスと言われるサービス

1.2 料金について

表1.1: Firebaseの料金

Spark プラン Flame プラン Blaze プラン
料金 無料 $25/月 従量制

 無料プランと有料プランには、料金面以外でいくつか大きな違いがあります。今回利用するサービスの中ではCloud Functionsがそれにあたります。無料プランのCloud Functionsでは外部のAPIを使うことができず、Googleが提供するサービスのAPIしか使えないという制限について、留意する必要があります。

試し読みはここまでです。
この続きは、製品版でお楽しみください。