Firebaseの導入を躊躇しているのはなぜ?モバイルファーストの考え方とは

Stamp Inc CEO
村本章憲
半導体エンジニアとしてキャリアをスタート。家族のアルバムアプリ「Famm」などを運営するTimersにてアプリエンジニアとして従事した後、Cookpadにて事業責任者として新規事業に携わる。現在は、独立。Firebaseの普及活動にも関わり、Firebase Japan User GroupのOrganizerを務める。
Twitter:https://twitter.com/1amageek
GitHub:https://github.com/1amageek

「良いと聞くけど、実際どうなの?」という認識の方が多く、まだまだ導入が進んでいないように見えるFirebase。ですが、Firebaseのコンサルティングを、複数企業を相手に数多く受けている村本さん(@1amageek)は『アーキテクチャを一新したい、コストを下げたいというところにはドンピシャにハマる』と語ります。なぜFirebaseの導入が進まないのか、導入で得られるメリット、Firebaseを理解する上で必要なことについて解説して頂きました。

Offers」は、時代の変化や環境にあわせてスキルを磨きたい、そんな人にぴったりのサービスです。「副業・複業」で、本業では経験できない、新しい環境/開発スタイルを経験しよう!

→「Offers」をもっと詳しくみる!

開発スピードを向上させるFirebase

ーー:早速ですが、まずは村本様とFirebaseの関わりについてお伺いしてよろしいでしょうか。

村本:もともと、いくつかの会社でアプリエンジニアとして働いており、現在は独立して複数の企業の技術顧問を勤めています。特にFirebaseのコンサルティングに力を入れていますね。

日本最大のコミュニティグループである Firebase Japan User Groupを立ち上げ、オーガナイザーとしても活動しています。

ーー:既存のプラットフォームで開発するのと比べて、Firebaseで開発するとどのようなメリットがあるのでしょうか?

村本:大きく分けて3つあります。1つ目は圧倒的な開発スピードです。Firebaseを使えば開発工数を圧倒的に少なくできます。これが一番大きなメリットです。

2つ目は拡張性です。Firebaseを使った場合、Cloud Firestoreにデータを蓄積していきます。Cloud FireStoreはGCP(Google Cloud Platform)のSLA(Service Licence Agreement)に記載されており、ダウンタイムは月に5分、年間だと52分以内です。さらにマルチリージョンの場合は99.999%のアップタイム、ダウンタイムで年間5分以内を保証しており、とても安定性に優れています。

3つ目はコストです。既存のWebアプリ開発の場合は、どうしてもデータベースサーバとアプリケーションサーバを別で用意する必要があります。Firebaseの場合は、アプリケーションサーバが不要です。その分、導入コストや運用コストを下げられます。

安定したサービスを、短い開発期間、かつ低コストで作れるのがFirebaseというわけです。

ーー:Firebaseを導入するデメリットはあるのでしょうか?

村本:特には無いと思います。強いて言えば、実務経験のあるエンジニアが少ないこととGoogleにロックイン(依存)してしまうということでしょうか。後者については、例えばAWSにはMySQLに準拠した「AuroraDB」などがあり、もしものときにはマイグレーション(移行)も可能です。Cloud Firestoreは類似のデータベースがありません。

ただ、それでもFirebaseを導入するメリットの方がずっと高いと考えています。

モバイルアプリに最適化した開発に慣れることがFirebase理解への一歩

ーー:これを知っていればFirebaseを理解しやすいという、前提知識はあるのでしょうか?

村本:いえ、むしろ、Webアプリ開発やデータベースの前提知識がない人の方が、Firebaseを理解しやすいかもしれません。20代のエンジニアの方が、飲み込みが早い人が多いですね。

ーー:それは意外です。なぜでしょうか?

村本:Firebaseのアーキテクチャが、既存の概念とまったく異なるからです。

これまでは「Webクライアント」「アプリケーションサーバ」「データベース」の3層構成でサービスを構築していました。クライアントがデータベースにアクセスする際は、まずアプリケーションサーバに要求を渡す必要があったのです。

Firebaseの場合はアプリケーションサーバが不要になり、クライアントが直接データベース(Cloud Firestore)に接続できます。

これまでの3層構成に慣れているエンジニアほど、なかなか発想の切り替えが難しいかもしれませんね。

また、FirebaseはNoSQL(Not Only SQL)で、かつパソコンのファイルシステムのようなドキュメント構造でデータを持たせています。

出典:https://firebase.google.com/docs/firestore/data-model?hl=ja

これまでのデータベースは、あらかじめ定義したものに即したデータしか格納できませんでした。Firebaseは何でも格納できます。そこに戸惑ってしまうという話をよく聞きます。RDBに親しんできたエンジニアほど、NoSQLの設計には苦労するようです。Firebaseを理解するには、既存のRDBの概念を捨てる必要があります。

私の一連のツイートに、アーキテクチャの詳細について述べているものがありますので、興味のある方はぜひそちらもご参照ください。

https://twitter.com/1amageek/status/1321768437899649030

ーー:なるほど、発想の切り替えが必要なのですね。

村本:そうですね、これらの違いはプロダクト開発の各フェーズについて下記のような懸念や違和感を生じさせています。

  • 設計時:クライアントからデータを直接データベースに入れるという考え方への違和感
  • 運用時:セキュリティについての懸念やNoSQLの扱い
  • グロース時:オートスケールするので懸念になることはない

ここについては実際に、Firebaseを使った開発を体験してみてもらうのが一番良いと思います。

Firebaseの導入が進まない3つの理由

ーー:今後Firebaseを使って開発されるサービスが増えてきそうですね。ただ、実際のところ、導入はそこまで進んでいないように見受けられます。村本さんはその理由をどうお考えでしょうか?

村本:理由は3点あると思います。「参考となる教科書・ドキュメントがほとんどない」「Firebaseに対応できるエンジニアがいない」「セキュリティ面の不安」です。

例えばドキュメントについては、Firebaseの導入事例自体は増えていますが、Firestoreの導入有無など、導入にはいくつものパターンがあります。

そのため、自社にあったベストプラクティスを探すのに苦労してしまうことがまだまだ多いようです。

人材については、上記の事例が少ない点にも関連しますが、採用市場でまだまだ希少です。

そのため、社内アプリエンジニアを教育して導入するケースが私の周りだと多いです。最近では、Firebaseに特化した勉強会もあるので、参加してみると良いでしょう。

Firebase Japan User Group

Stamp Inc

セキュリティ面については、やはり、Webクライアントが直接データベースを触れることに対して、不安を覚えるというケースが多いですね。

ただ、データベースに直接アクセスする手法自体は、以前からありました。代表的なのが、2013年にFacebookが買収した「Parse」です。Facebookは2016年に「Parse」から撤退しましたから、MBaaSとしては実質Firebaseだけが残っているという状況です。

Firebaseにはセキュリティルールがあり、Firebase Authenticationと連携して、アクセスできる情報を指定することが出来るため、セキュリティ上の懸念はクリアされることが多いです。

顧客には、セキュリティに関する懸念事項をピックアップしてもらった上で、丁寧に説明を重ねて不安を取り除くようにしています。

ーー:どれが一番ネックになるのでしょうか。

村本:どれか1つがネックになるというより、これらの3つが絡み合って導入に至っていないケースが多いです。

所感としては、まだまだ「Firebaseって良いと聞くけど、実際どうなの?」という認識の方が多いですね。逆にすでにFirebaseの良さを理解できている顧客からは、「Firebaseを使いたいので顧問になってください」と、スッと依頼いただいています。

一方で、Firebaseをきちんと理解できていないまま開発してしまい、特性を活かしきれていないサービスになってしまうことも少なくありません。

サービスをピボットさせたいときこそFirebaseがおすすめ

ーー:こういうケースはFirebaseの実装が難しいというのはありますか?

村本:先行して開発を進めてしまっているケースですね。「実は3か月前から開発を進めています」と言われて。アプリケーションサーバがすでにあって、データベースだけFirebaseにしたいという場合です。

そうすると、本来のFirebaseで想定されている環境ではなくなり、いびつなサービスになってしまいます「アプリケーションサーバは要りませんよ」というところから、話を始めないといけません。「流行っているから」という理由だけで導入するのはおすすめできません。

また、新規案件でも、アプリに慣れていないエンジニアの方に先程の3点の理解を得られずに頓挫する、といったことはありました。

ーー:どのタイミングがベストなのでしょうか?

村本:今のサービスが失敗してしまって、ピボットしたいというタイミングがベストです。特に「アーキテクチャを一新したい、コストを下げたい」というところにはドンピシャにハマりますね。

まずは一度Firebaseに触ってみてほしい

ーー:本当に、Firebaseはデメリットの少ないMBaaSなんですね。

村本:はい、とても便利なツールだと思います。デメリットについて強いて言うなら、教科書がないことくらいでしょうか。私自身もかれこれ4年ほど、Firebaseで開発を進めていますが、自分で試行錯誤しながら、開発手法はどんどん変えています。

ーー:ありがとうございます。今後Firebaseを理解したいと考えるエンジニアは多いと思います。一番おすすめの方法は何でしょうか?

村本:基礎的なことは下記の記事でも紹介していますが、まずはハンズオンをして、Firebaseに触れることです。

Cloud Firestoreを実践投入するにあたって考えたこと

RDBの限界とNoSQLの登場

パソコンを立ち上げて15分後には、Firebaseを使ってサイトを作ったり、データベースを動かしたりできるようになります。スピードの速さやドキュメントデータベースの概念も理解できます。Googleが用意しているハンズオンものもありますし、「Firebase Japan User Group」でもハンズオンを用意しています。触ってみることで、Firebaseの良さを実感できるはずので、一人でも多くの方に体感してほしいですね。

Offers」は、時代の変化や環境にあわせてスキルを磨きたい、そんな人にぴったりのサービスです。

いくつもの転職媒体を使って、企業を探し回るのはもう終わり。「副業」から始まる新しい働き方を実現します!

本業では経験できない、新しい環境/開発スタイルを経験しよう!



この記事をシェア

関連記事


副業・フリーランス

プログラミング

インタビュー

デザイン

お金

採用・組織

グルメ