dogwood008の開発メモ!

最近のマイブームは機械学習, Ruby on Rails。中でも機械学習を使った金融商品の自動取引に興味があります。

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

はじめに

f:id:dogwood008:20180628024954p:plain

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

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

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

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

Realtime Database

  • NoSQL で JSON をやりとりできる
  • SQLサーバとクライアントがダイレクトに通信するイメージ
    • 中間にサーバを経由しない分高速
    • その分セキュリティが心配かもしれないが、しっかり権限を絞れる
  • オフライン中の書き込みも、オンラインになり次第自動的に同期する
  • マルチプラットフォーム対応
    • 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 for Android

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

Performance Monitoring

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

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

Google アナリティクス

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

Cloud Messaging

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

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 を使って人工知能によるおすすめ株を毎日配信しています。それ関連の技術記事を書いていくので、よろしければフォローをお願いします。

もし誤りがあればコメントでご指摘頂けると幸いです。

(2時間30分)

180619 トレンドニュース

もう管理画面のフロントコードを書く必要はありません、そう Viron ならね。 - Qiita

ちょっと前に話題になったやつ。ちゃんと読む。 qiita.com

ryanto/acts_as_votable · GitHub

railsで投票ができるやつ github.com

herokuでカスタムエラーページ&メンテナンスモード - ほぼ日刊サービス開発日誌

kansiho.hatenablog.com