Help us understand the problem. What is going on with this article?

わかる!Firebase ~全てのサービスをおつまみ紹介~

More than 1 year has passed since last update.

はじめに

firebase.png

Firebase がちょっとバズってるようなので、「Firebaseって何?どんなことができるの?」をざっとまとめました。

TL; DR(3行で言うと?)

  • Google「君らサービス開発する時、毎回似たようなもの用意したり作るでしょ?それもうやっといたから。まとめてFirebaseって呼ぶわ。」
  • Google「サーバを持ってない?必要ならマシン貸すよ。もしサーバを管理したくないならソースコードだけくれたらそれで勝手にホスティングしてオートスケールするよ」
  • Google「お金?個人の趣味範囲なら要らんよ

それぞれのサービスを紹介(アプリの開発とテスト編)

Realtime Database

  • NoSQL で JSON をやりとりできる
  • DBサーバとクライアントがダイレクトに通信するイメージ
    • 中間にサーバを経由しない分高速
    • その分セキュリティが心配かもしれないが、しっかり権限を絞れる
  • オフライン中の書き込みも、オンラインになり次第自動的に同期する
  • マルチプラットフォーム対応
    • iOS, Android, C++, Unity, Web
  • リアルタイムでクライアント全体の状態を同期させるのに向いている
  • AWSでいうところのAppSync

Crashlytics

  • iOS, Android のクラッシュレポートを見られる
    • ライブラリの導入が必要
  • 利用規約がちょっとだけ厄介
    • サービスが提供されている国である米国の法律に従うため、13歳未満のユーザの情報を集めてはいけない
    • または、親の同意を得る必要がある (COPPA)
    • また、欧州のユーザがいる場合、GDPRにも対応させないといけない
    • 私は弁護士でもなく専門家でもないため、個別案件の判断はできませんのでご自身で判断下さい

Cloud Firestore

Authentication

  • ユーザ認証を全部やってくれるスゴイやつ
    • メールアドレス&パスワード、Google, Twitter, Facebook, Github, OAuth 2.0, OpenID Connect, 電話等
    • メールの有効性確認(Verification、サービス登録したらよく「メールアドレスの確認」のメールが来るやつ)も対応
    • パスワードの再設定も対応
    • reCAPTCHA(みんなが嫌いな「自動車のタイルを選んでください」)も対応
    • もちろん管理者はユーザの管理もできる
  • これが一番アプリ&サービス開発を爆速化させるんじゃないかと思う
  • マルチプラットフォーム対応
    • iOS, Android, Web (JS), C++, Unity
  • (私感)これを使いこなせるようになったら、サービスの本質の部分に集中できるようになるかも?

Cloud Functions

  • サーバレス
    • サーバの面倒(オートスケール、セットアップ、セキュリティ…等々)の面倒から解放される
    • Node.jsのソースコードをアップロードして、必要なメモリを指定してやれば、その範囲内で動く
      • 色々やればPythonやGoも使えるらしい(未検証)
    • サーバリソースが消費された=CPUとメモリが占有された秒数が主な課金対象
      • 呼び出し回数も課金対象
      • 常に動き続けるようなプログラムには不向き(コストが高い)
  • AWS でいうところの Lambda
  • (私感)筆者がFirebase & GCPで一番好きなやつ

Cloud Storage

  • なんでも保存してくれるやつ
    • 低コストのファイル置き場
    • 処理が途中で途切れても再開可能(レジューム機能)
  • マルチプラットフォーム対応
    • iOS, Android, Web (JS), C++, Unity
    • クライアントから直接アップロードできる
    • 「アップロードのみでダウンロードはできない」のような権限も可能
  • 高いスケーラビリティ
  • AWS でいうところの S3
  • GUI上はファイル構造があるように見えるが、実際はスラッシュ込みのファイル名が全てルートにぶら下がっている感じ
  • (私感)S3よりちょっとGUIのレスポンスが遅い?
    • GCEのインスタンスから毎日 UL/DL するが、たまにUL/DLに失敗する
    • 筆者は AI Deep Kabu で使っている

Hosting

  • アップロードしたHTMLファイル等の静的ファイルで、Webページのホスティングが可能
  • 無料のSSL証明書
  • 高信頼性、低レイテンシ
  • バージョン管理されており、ロールバックも可能
  • (私感)サービスのLPをこれでホスティングしておけば、本体が落ちてもLPは生き続けるので良いと思う

Test Lab

  • Google「スマホいっぱい購入して動作テストするの大変でしょ?貸してあげるよ」
    • iOS & Android どっちもOK
  • AWS でいうところの Device Farm

Performance Monitoring

  • スマホアプリのパフォーマンスチェック
    • アプリ起動時間
    • HTTPリクエスト等
  • コードを1行も書かなくて良い

それぞれのサービスを紹介(ユーザー層の拡大と利用促進編)

Google アナリティクス

  • もはや説明不要のアクセス解析サービス
    • 数多のアクセス解析サービスがこれに喰われて去って行った…
    • 昔はアクセスカウンタと一緒になったアクセス解析ありましたよねー
  • 後述するAdWordsと組み合わせて、広告効果の測定や、ページor画面毎の価値を算出したりもできる

Cloud Messaging

  • アプリに通知を送るやつ
    • 昔は Google Cloud Messaging というやつがいたが、来年廃止になる
    • 今から使うなら絶対これ
  • PWA のプッシュ通知もできる

Predictions

  • ユーザの行動を機械学習して、ユーザの分類をするやつ
    • 例えば全ユーザの日々のガチャを回すまでの一連の流れを学習させると、「毎月20日~24日頃にガチャを回す回数が激減するユーザは、25日(給料日)後に魔法石の10%割引チケットを与えると買いやすい」とかが導かれるかもしれない?

Dynamic Links

  • アプリがスマホにインストールされていなくても、良い感じにジャンプできるリンク
    • アプリが入っていなければ、ストアに飛ばしてインストールさせた後、ジャンプする
  • 例えばGoogle Mapの「別のモバイル端末に送信」
    • PCで見ていた地点や経路のリンクをスマホに送って、そのまま閲覧を再開できる

Remote Config

  • クラウドでクライアントの環境変数をいじれる感じ
    • 例えばA/Bテストの実施、イベント開始にフラグを立てる等
  • 値の変更に、アプリのデプロイは不要

Invites

  • 友達紹介リンクを良い感じに作って送ってくれるまでをやってくれる
  • Google Analytics と連携できる
    • ユーザーがいつ招待によってアプリを開いたりインストールしたりしたかがわかる

App Indexing

  • Webとアプリで同じURLを使っていれば、ユーザがスマホで検索した時にヒットしたコンテンツを「アプリで開く」ことができる
    • 通常の検索結果より上位で表示されるため、ユーザがアプリへ戻ってきやすい
  • 食べログクックパッドで使われている

AdMob

  • 広告で収益化
    • Google AdSense のアプリ版のようなもの
  • 広告がアプリで表示されたりタップされたりすると Google からお金をもらえる

AdWords

  • Google にお金を払って広告を載せてもらう
  • Google Analytics と連携できる

Firebase と Google Cloud Platform

おわりに

Firebase と一口に言っても、それが指すサービスは様々です。議論の際には個々のサービス名まで含むと互いに齟齬が生まれにくいと思います。

なお、本文中に何度か登場しましたが、筆者が運営している AI Deep Kabu では AWS の S3 と GCP の Cloud Engine, Pub/Sub, Cloud Functions, App Engine, Cloud Storage, Stackdriver を使って人工知能によるおすすめ株を毎日配信しています。それ関連の技術記事を書いていくので、よろしければフォローをお願いします。

最後になりましたが、ここまでご覧いただきありがとうございました。参考になりましたら画面左または最上部のいいね :thumbsup: ボタンを押して頂けると励みになります。

もし誤りがあればコメントでご指摘頂くか、編集リクエストをお送り頂けると幸いです。

(2時間30分)

謝辞

2018/06/28
誤字の修正リクエストをいただいた @khsk さん、ありがとうございました :bow:

Kubernates → Kubernetes

2018/07/01
誤った表現を含む部分について編集のご提案をいただいた @taiga_takahari さん、ありがとうございました :bow:

SQLサーバ → DBサーバ

2018/07/04
誤字の修正リクエストをいただいた @yancya さん、ありがとうございました :bow:

Stackdrive → Stackdriver

dogwood008
株式会社CUUSOO SYSTEMのCTO兼フルスタックエンジニアです。Rails, 機械学習, Androidが好きです。AIで株取引するやつやってます。 https://ai-deep-kabu.com https://blog.ai-deep-kabu.com 発言は個人の見解であり、所属する団体等の公式見解ではありません。
https://blog.dogwood008.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away