MilkcocoaでBaaSを体験!~バックエンドの仕組みと使い方~

第8回 リアルタイム系BaaSの徹底比較! 国内外BaaS 3社の特徴を理解して,技術選定の幅を広げよう!

この記事を読むのに必要な時間:およそ 3 分

今回の目的

リアルタイム系BaaS各社の利点と欠点を分析します。どんなケースでどのBaaSを使用すると良いのかイメージを持ってもい,技術選定に幅を持たせましょう!

背景

BaaSと言ってもいろいろあってわからないですよね。⁠強力なのはわかるけど,大切なデータは自分で持っておきたいし,急に使えなくなったときに代わりを用意するのが大変だ」と思うかもしれません。

何ができて何ができないのかを正しく把握して,要所要所で時間を節約してより高いクオリティや新しい開発スタイルを模索したいものです。

そんな中で,⁠HTTPのAPIであればスケーリングも含めて手軽に構築できるけれども,WebSocketサーバとなるとちょっと場合によっては足踏みするなあ」という方を対象に,どんなときにどのリアルタイム系BaaSを選択すれば良いのか解説していこうと思います。

BaaSは大きく分けると

  • 「HTTPのAPIを提供し,主に秒間リクエスト数で課金するBaaS」
  • 「WebSocket/MQTTで同時コネクション数で課金するBaaS」

の2種類になります。今回は後者を「リアルタイム系BaaS」と名付けて解説します。

各社,料金体系やサポートする機能,そして注力しているジャンルなどに差があります。さらに,プログラミング言語と同様に,解決したい課題や想定するユーザーが微妙に異なります。共通部分と独自部分の区別を中心に,今後彼らがどのような進化を目論んでいるかの解説なども含めて進めていければと思います。

比較対象

Firebase

Firebase

Googleに買収されたナイスガイです。得意分野はWebですが,アプリやIoTもソツなくこなします。先日,福岡でGoogleの方が啓蒙活動をしていたのが記憶に新しいですね。

PubNub

PubNub

IoT特化型だけどWebもいけるタフなヤツです。IBMとの提携話など,手堅くやっているようです。

Milkcocoa

Milkcocoa

日本でのユーザが多く,ユーザビリティが抜群です。WebとNode.jsを組み合わせてアプリとしたクリエイティブユースが日本語圏で目立ちます。エンドユーザプログラミングを掲げているように,使い勝手にとことんこだわっているようです。

比較基準

それぞれの比較基準を,基本的に

  • (JSベースの)APIデザイン
  • 機能の便利さ
  • ドキュメントの理解しやすさ
  • サンプルの多さ
  • コミュニティの充実度

と定めます。これらをベースに,特筆すべき点を最後に挙げていこうと思います。

分析

Firebase

APIのデザイン

無骨で,厳密さを感じさせます。北米でのバックエンドエンジニアの人件費高騰を背景に,開発をもっと楽にしようという力が働いたのか,エンジニア向けのインターフェースになっているように感じられます。

例えば,OAuth関数の実行時に画面遷移で手続きを行うか,新規ウィンドウで行うかだったり,WebSocketハンドシェイクのdisconnect時に何をするかだったり,細かにコントロールすることを意図したインターフェースになっています。

ここが好みの分かれるところであり,Firebaseが「ゆりかごから墓場まで面倒を見る」と強く考えていることの現れかもしれません。

もともと「打倒Dropbox」を掲げていたこともあり,⁠データをリアルタイムに共有するためのもの」というよりも先に「データを保存するためのもの」であり,付随的にdataが追加されたイベントを用意したように感じられます。その影響か,単純なデータを保存しないpub-subの関数は存在しません。その辺りからも「エンジニア向けDropbox」のような思想を感じさせます。

主観的には,APIはやはり無骨です。on関数がWebSocketハンドシェイク時に毎回呼ばれ,その際にデータのレンダリングを行うモデルかと思われますが,初めは意図しない挙動に戸惑ってしまいました。console.log関数でオブジェクトの内部を見ても,基本的には難読化されていて手がかりがつかめないケースもままあります。

しかし慣れてくると,隅々まで行き届いた厳密さが光る良いインターフェースだと思われます。

Firebase HostingというBitBalloonのような無料静的ファイルホスティングサービスがありますが,これもnpmを用いてインストールするため,エンジニア向けである雰囲気を感じます。

機能の便利さ

個人的に高評価だったのが,AngularFireなどのブラウザ面を推し進めているだけあって,ありとあらゆるWeb開発での要求に応えてくれるところです。

例えば管理画面で,データストアの中身を見る事ができます。その際にデータをクリックしてその場で書き換えることもできますし,その場で直感的に削除することもできます。MongoDBのような巨大な連想配列を直感的に操作できるのは,開発中のちょっとしたミスを苦もなく修正できて非常に助かりました。

また,前項でも触れましたがOAuthの設定が細かく可能であったり,データ量が多くなっても問題ない時間で検索をかけられるスケーラビリティであったりも素晴らしいです。

データのバックアップなどは手動でJSONをエクスポートすることができますし,Node.js SDKを用いて自前で定期的にデータを抽出するプログラムを書く事も容易かと思います。

一方で,アプリやIoTの開発は一応サポートしているけれども,メインではないような感じを受けます。

ドキュメントの理解しやすさ

機能が非常に多いため,やや冗長な印象を受けますが,それをなるべくわかりやすく教えようという工夫を感じられる洗練されたドキュメントです。

残念ながら日本語版は存在しないので,翻訳の苦労は存在します。

サンプルの多さ

Webに限定すれば3社の中では最もサンプルが多いかもしれません。記事件数などのパブリックデータも提供していたり,Webに関して積極的に取り組んでいる姿勢が見られます。

コミュニティの充実度

StackOverflowが非常に活発です。全ての質問を中の人がSOで回答しており,相当量のノウハウが英語で蓄積されています。

SQLとFirebaseQueryの変換だったり,様々な実例が紹介されていて,詰まった際はSOを見れば多くの場合解決します。

著者プロフィール

落合渉悟(おちあいしょうご)

株式会社Technical Rockstars所属。スタートアップにおける高速開発の研究を行っている。現在,JavaScriptと3Dコンテンツに関する技術書を執筆中。

コメント

コメントの記入