株式会社ルーターでエンジニアをしておりますTakahashiです。

突然ですがFirebaseをご存知でしょうか。MBAASと呼ばれる、モバイルアプリケーション開発のバックエンド側のインフラを提供するサービスです。htmlホスティングからクラウドdb、関数まで何でもあり、しばしばAWSと比較されます。もともとはチャットサービスに特化したサービスだったようですが、2014年にgoogleに買収されてから、フロントエンド開発者を中心に、人気拡大中と聞きます。

弊社でも、GoogleHomeアプリ開発時に使用しました。それでは、まずはメイン機能と目しているCloudFunctionとRealtimeDBを紹介します。

Cloud Functions for Firebase

awsでいうLambdaです。ローカルで開発した関数をデプロイし、apiとして利用することができます。
言語はNode.js/pythonが使用できます。近頃、node.jsV8.0が使用可能になりました!これには数多のasync awaiter達が歓喜したそうです。

デフォルトの無料プランでは、外部との通信が制限されているのでご注意ください。

Cloud Functionには、関数をローカルでテストできるfirebase experimental functions shellという機能があります。環境構築がそこそこ難しい印象ですが、デバッグに重宝しています。導入方法はこちらです。

Firebase Realtime DB

nosqlクラウドデータベースです。データはJsonとして保存されます。
主な特徴を3つ引用します。

リアルタイム

HTTP リクエストではなくデータ同期を使用します。データが変更されるたびに、接続されているあらゆるデバイスがその更新を数ミリ秒以内に受信します。ネットワーク処理を行うコードについて考えることなく、没入感の高いコラボレーション体験を実現できます。

これはすごいですね!ポーリングの必要なし!チャットサービスのようなリアルタイム性が求められる実装を低コストで実現できそうです。

オフライン

Firebase アプリはオフラインでも応答できる状態を保ちます。これは、Firebase Realtime Database SDK がデータをディスクに永続化するからです。接続が再確立されると、クライアント端末は不足している変更内容を受信して、現在のサーバーの状態と同期します。

この機能も、firebaseを使わずに構築しようとするとものすごく大変そうです。電波状況が悪い場所でもdbの参照が可能になる為、ユーザーエクスペリエンスの向上が見込めます。

クライアント端末からアクセス可能

Firebase Realtime Database はモバイル端末やウェブブラウザから直接アクセスできます。アプリケーション サーバーは必要ありません。セキュリティとデータの検証は Firebase Realtime Database Security Rules によって実現します。このルールは、データが読み取られるときや書き込まれるときに実行される、式ベースのルールです。

他の主要サービスをざっくり紹介

Cloud Storage for Firebase

画像や動画などのコンテンツを保存するストレージです。AWSでいうとs3ですね。弊社では、GoogleHomeアプリで流すmp3音源をCloudStrageに配置しています。

Firebase Hosting

ウェブサイト向けのhtml,css,javascriptをホストできます。

Firebase Authentication

ログイン管理機能を提供します。パスワードログインや、Oathログインの実装を担います。

プロダクト

弊社では、Firebaseを使用したブロダクトのプロトタイプを制作しました。(マーケットには公開していません)動画をご覧ください。

まだまだ荒削りですが、会議中の書記を務めてくれるGoogleHomeアプリ「聞き上手さん」です。ブラッシュアップすれば立派なRPAになってくれそうです。