こんにちは。Webエンジニアの仁木です。
Webアプリケーションの開発などで以前から耳にしていた「Firebase」を試してみました。
Webで調べるとデータベースだったりホスティングサービスだったりと色々な言葉が出てきて具体的に何ができるサービスなのか、アプリ開発に疎い僕はぼんやりとしかわかっていなかったので色々と勉強になりました。
Firebaseは、Webアプリケーションで必要となるバックエンド側の機能を揃えたサービス(BaaS:[Backend as a Service])で、2014年にGoogleに買収されてからはGoogleが運営しています。
はじめにバックエンド側の機能とは何なのか、Twitterで例えるならば、
などの、サーバー側で実装する処理やデータベースなどのサービスのことを指します。
これらの実装処理の部分やサービスのセットアップをFirebaseに任せてしまい、開発者はフロントエンド(クライアントサイド)の開発やサービスの基盤となる部分の処理に集中することができます。
また既に作られたアプリケーションにもこれらを部分的に組み込むことも可能で、必要な機能を簡単に導入できます。
通常のデータベースがユーザーのアクションで能動的にデータを取得する(Pull型)のに対して、Firebaseの提供しているリアルタイムデータベースとは1人のユーザーがデータを変更すると即座に他のユーザーに変更を反映する(Push型)仕組みになっています。
またオフライン時にデータを変更しても、ネットワークに繋がった時にデータを自動更新しデータベースを修正するため、全てのユーザーのデータの整合性も保たれます。
これはモバイルでアプリケーションを利用しているユーザーなどが、常にネットワークに繋がった状態で利用しているとは限らない最近のWebアプリの事情にも適しています。
データベースとは別に、ユーザーのプロフィール画像や、投稿の写真などのファイルをアップロードするためのファイルストレージです。
代表的なソーシャルサービス(Facebook、Twitter、Github、Google)のアカウントでのログイン機能や、メールアドレス・パスワードを使ったユーザー登録(Sign up)機能です。
アプリを利用する上で、利用しているユーザーが誰であるのか認証する機能は必須と言えるでしょう。
Firebaseではそういった、ユーザー登録の機能や各種SNSでのログインの基盤が用意されています。
Webアプリケーションを実際に利用するためにはWeb上に公開しなければなりません。
FirebaseではHTML、Javascript、CSSのみで構成されたWebアプリケーションをFirebaseのクラウド上にホスティングできます。これにより自分でWebサーバーを用意する必要がなくなります。
アプリケーションの更新は開発環境からコマンドラインで本番へデプロイするようになります。
ブラウザやモバイル端末でユーザーにPush通知をします。アプリ内で新着のメッセージなどの通知をユーザーに知らせることができます。
Firebaseはこれらバックエンドの機能をSparkプランという制限付きの無料プランで提供しています。
Sparkプランに含まれているものは以下のようになっています。
リアルタイムデータベース
クラウドストレージ
ホスティング
その他の機能にも制限はあるので詳しくは料金ページをご覧ください。
Sparkプランでは規模の大きいアプリケーションでの利用は難しく、小規模や個人開発レベルで利用できそうです。
その他のプランに$25/月のFlameプラン、従量制(使った分だけ)のBlazeプランがあります。
SparkやFlameプランで利用制限を超える前にメールで通知がきます。また実際に制限を超えた時はFirebaseのAPIのレスポンスがエラーになり、アプリケーションが正常に利用できなくなります。
Firebaseのチュートリアルでは、簡単なチャットアプリを作り、Firebaseの各機能の組み込み方法を学べます。
チュートリアルで実際に作ってみたのがこちら
チャットアプリの画面
Googleアカウントでログインしてタイムラインにメッセージや画像をアップロードできるチャットアプリです。Googleアカウントがあれば誰でもログインしてチャットができます。
このアプリではリアルタイムデータベース、ユーザー認証、クラウドストレージに加え、クラウドメッセージ機能の組み込み方法を学べます。
画面右上の「SIGN-IN WITH GOOGLE」からGoogleアカウントでログインし、メッセージを投稿するとタイムライン上にメッセージが反映されます。
メッセージはデータベースに保存され、他のユーザーにはリアルタイムでメッセージが反映されます。
「SEND」ボタン横の黄色いアイコンボタンでは画像をアップロードできます。画像ファイルはクラウドストレージに保存されます。
またWebアプリで利用しているこれらのバックエンドサービスの利用状況をFirebaseのコンソールから確認できます。
チャットアプリのプロジェクトのコンソール画面
触りの部分だけ試してみましたが、Webアプリケーションを作る上で面倒になるサーバーの設定やバックエンドの機能の基盤を簡単に利用でき、アプリのサービスの根幹の部分の実装に集中できそうです。
思いついたアイデアをすぐにアプリとしてリリースしてみるなど、特に個人開発でアプリを作る敷居が下がるのではと思います。