はじめに
本特集では主にMilkcocoaを通して、BaaS(Backend as a Service)の使い方を体験していただきました。今回はまとめとして、国内外のBaaSについて紹介を行い、BaaSを利用した開発が今後どのようになっていくか、そもそもバックエンドとは何なのかを考えたいと思います。
そもそもBaaSとは?
そもそもBaaSとはバックエンドの機能をAPI化したものです。バックエンドの機能とは、データの保存、Pub/Sub型通信、認証、検索などです。開発者がバックエンドを意識せずに開発ができるということで、たとえばフロントエンドのエンジニアだけでとか、デバイスのエンジニアだけでサービス全体の開発が可能になります。
国内外のBackend as a Service
国内外のBaaSについてまとめてみたいと思います。iPhoneやAndroidのネイティブアプリケーションに特化したBaaSサービスのことをmBaaS(mobile BaaS)と呼ぶこともあるのですが、mBaaSも広義ではBaaSなので、今回はBaaSとmBaaSはあまり区別せずに紹介したいと思います。
2013年にFacebookが買収し、運営する、老舗BaaSです。BaaSの中ではかなり初期から登場したサービスで、年を重ねるごとに多機能になっていきます。安定感があるイメージです。ノハナの田中和紀さんがこちらの記事(『mBaaSの「今」がわかる!ぶっちゃけ仮想パネルディスカッション!』)でParse.comについて言及しています。おそらく国内で一番Parse.comを使っている方です。
2015年3月にParseがIoT対応をしてました(IoTについてはgihyo.jpでも言及されている記事を参考にしてください)。ArduinoやRaspberry Piなどのマイコンボード上で動作するSDKが公開されていて、より一層様々なデバイス・プラットフォームに対応しています。
このあとに紹介するBaaSサービスも2015年前半からIoT対応してきたものが多くあり、モノとInternetを繋げ易くなっているとも言えるでしょう。
IoT向けのBaaSです。対応SDKがかなり多く、たとえば組込み向けだけでmBedやArduinoなど10以上存在します。M2M用のプロトコルであるMQTT(MQ Telemetry Transport)にも対応しています。リアルタイム通信の機能を使いたいという場面でも利用できます。
2014年にGoogleが買収し、Google Cloud Platformに取り込んでいます。WebSocketによるリアルタイム通信に特化したBaaSでJavaScript、iOS、Javaに対応しています。
Parse.comに近い、一般的なBaaSです。料金ページでは機能ごとに使う量を決めて月額料金を算出できます。名前がわかりやすいですね。
ドキュメントや情報が日本語では調べにくい印象です。
GMOがBackendlessと連携して、Backendlessが提供するモバイルバックエンドサービスを国内向けにカスタマイズしたmBaaS「GMO mBaaS powered by backendless」をリリースしています。
IoT向けのクラウドストレージです。センサーデータを溜め込めます。mBedやArduinoなどのマイコンボード向けのSDKから、その他言語向けのSDKまで対応しています。
国内ではよく使われているイメージのmBaaSです。スマートフォンアプリケーションのバックエンドとして使われることを想定しています。最近では、ニフティクラウドIoTプラットフォームというサービスも開始したとのことで、MQTTに対応してIoT領域にも進出しています。
Microsoft Azureの一つの機能としてモバイルサービスがあります。他のAzureサービスとの連携などを考えて設計したり、既存のAzureユーザからは参入障壁が少なくて試してみる価値はあります。
機能と対応SDKがかなり多いです。マーケティングや分析ツールも内包していて、ゲームのバックエンドでも利用できるとしています。
国産BaaSのKiiクラウドです。Kiiの石塚さんによると、Kiiでは独自でキーバリューストアを作っていて、APIの裏側を全部差し替え可能にしてあり、サービスの特性に応じてストレージを切り替えられるようになっていとのことです。KiiもIoT対応を発表しています。
こちらも国産mBaaSです。スマートフォンアプリケーションに対応しています。受託開発とセットで対応してくれることを売りにしているとのことで、mBaaS単体だけでも利用できますし、コンテンツも含めて作ることができます。
オープンソースソフトウェアのBaaSです。Node.JS×MongoDBで動いています。クラウドで提供されているBaaSとは違い、自分でサーバを用意しなくてはいけませんが、利用することで開発の初動は早くなるでしょう。
初心者向けを謳っている、リアルタイム通信に特化したBaaSです。本特集で紹介してきましたが、APIの使いやすさと日本語での情報の調べやすさが強みです。対応SDKが現時点では少ないことと、事例が少ないことが弱みですが、今後解決されて行くことだと思います。
その他
スポット的な機能だけに特化してAPIを提供するサービスも存在します。バックエンドの機能を肩代わりするという意味では広義のBaaSです。
認証系
検索機能に特化したサービス
ホスティング
ホスティング環境は、BaaSとは違う概念かもしれませんが、BaaSと組み合わせて使うことで便利なサービスです。
今後のアプリケーション開発はどうなって行く?
こちらのスライドでも似たようなことを言及しています。
BaaS利用することでどう変わる?
サーバやネットワーク等のインフラや、バックエンドプログラム開発の初期コストをかけることなく、サービス開発を始めることができます。またバックエンドの知識が少なくても、大量の接続やデータに対応できることも魅力です。
一方でフロントエンジニアが考えることは増えるのではないか? と思います。BaaSに特化したデータ設計が必要になったり、キャッシュ戦略についての責務がフロントエンドに寄ってきます。フロントエンジニアは今までより多くのことを気にしながら開発しなければいけませんが、一方で今までバックエンドエンジニアに任せていた部分が、自分の思い通りになります。
またどのBaaSでもベンダロックインされる部分は少なからず存在します。たとえばFirebaseではデータへのアクセス制御のためにJavaScriptライクなルール言語を記述します。そういう意味ではOSSのBaaSを利用することの利点は大きいです。基本的にBaaSは可変部分と共通部分で、共通部分がより一般化してくるとフレームワーク化されるという流れでできたものだと思います。バックエンドが簡単に扱えることで、フロントエンドの部分で競争はより激化するでしょう。BaaSが一通り落ち着くと、フロントエンドのプログラムを自動生成するツールもどんどん出てくるかもしれません。
特集のまとめ
サービス開発に求められるスピードがより早く、かつより多くの接続に対応しなければいけなくなるにつれて、BaaSの利用機会は増えるでしょう。フロントエンドでDB設計に近いことをやらないといけなくなり、AWSエンジニアが増えたように、一つのスキルとしてBaaSが使えるエンジニアが増えるでしょう。