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

第1回BaaSとはなにか?

BaaSとは、バックエンド機能を提供するサービスです。近年BaaSの市場が拡大しており、様々なBaaSが登場しました。本特集はBaaSを紹介し、Milkcocoaを使用して、BaaSを利用したアプリケーション開発について紹介いたします。

第1回では、BaaSに関する一般的な事項を紹介し、最後に簡単にですがMilkcocoaについて紹介します。

BaaSとはなにか?

BaaSの基本的な機能について

まず、BaaSについて提供されている基本的な機能について紹介します。

バックエンドとは

まず、BaaSにおけるバックエンドとは何か? についてですが、これはWebアプリケーションのサーバサイドのことです。BaaSはこのサーバ機能をクラウド上で実現し、BaaSの利用者に提供します。利用者はバックエンドを開発せずに、Webアプリケーションを構築できるというわけです。

バックエンドの自動生成、運用、削除

バックエンドのシステムは自動で生成されます。生成された時点でバックエンドは起動しているので、すぐにバックエンドのサービスが利用できます。そしてバックエンド内部におけるアップデートやメンテナンスもBaaSの提供側が行い、そして必要がなくなったらバックエンドを削除することができます。

バックエンドAPIの提供

BaaSではバックエンド自体はサービスとして提供されるので、BaaSのユーザとなる開発者は、各サービスが提供するRestAPIやクライアントライブラリを活用することになります。そのバックエンドAPIを開発するシステム内に組み込むことにより、BaaSのバックエンドが機能し、Webアプリケーションの開発が可能になります。

バックエンドの管理画面

Webアプリケーションを開発、運用して行くに当って、バックエンドの状態の確認や操作をしたくなるときがあります。BaaSのサービスはバックエンドの状態の監視や操作のための機能を提供している場合が多いでしょう。

他のサービスの比較

バックエンド開発コストと自由度におけるIaaS/PaaS/BaaSに開発について

まずはBaaSを他のクラウドサービス(IaaS, PaaS等)と比較をしたいと思います。

IaaSは各クラウドサービスと比較すると、一番アーキテクチャに自由度があるサービスと言えるでしょう。インフラのみが提供されているので、OS、ミドルウェア、ソフトウェア、フレームワーク、開発言語など、システムの開発者が好きに選択できます。しかしその自由度の高さの一方で、開発や運用に関して、技術や技能、時間コストなどを掛けないといけないでしょう。

PaaSは、最初からハードウェアやOSやミドルウェア、フレームワーク等は既に提供されています。IaaSと比べるとアーキテクチャの選択に自由度がありません。しかしスケーラビリティの問題はサービスの提供側にて管理される場合が多いので、比較的、技術ノウハウがない方でもWebアプリケーションの開発はやりやすいでしょう。

BaaSは、そもそもバックエンドの開発が必要ありません。BaaSを利用する場合、Webアプリ開発者はバックエンドを開発する必要がありません。逆にバックエンドが既に用意されているため、自由度はありません。ユーザはただ、BaaSが提供するWebAPIやクライアントライブラリを使用するのみです。

図1 IaaSとPaaSとBaaSの比較図
図1 IaaSとPaaSとBaaSの比較図

BaaSにおける技術的な背景

近年の技術的動向について

Webアプリケーションの技術的な動きについて、簡単に述べておきたいと思います。近年の技術的な展開が、BaaSサービスの実現性や必要性に深い関係があるからです。

2つの技術的な背景があると考えています。1つはインフラ仮想化に関する技術的展開、もう1つはフロントエンドの技術におけ状況の変化です。

仮想化技術の発達

近年インフラに関する仮想化の流れは非常に激しいものであったと思います。サーバ仮想化、クラウド化、コンテナ化してきました。インフラがソフトウェアとして扱えるようになり、よりプログラミング可能なものとなりました。Blue Green Deployment、immutable infrastractureなどのデプロイ技術が発達しました。

その技術的な展開において、インフラの技術が高度化する一方、BaaSのサービスが実現する技術的基盤が構築されたことは事実だと思います。インフラ技術に関して、エンジニア技術的要求が高まる一方で、サーバがクラウド化し、コンテナ化技術はインフラの技術を自動化し、BaaSの実現を支えた技術基盤を提供したと考えています。

フロントエンド開発のおけるコスト増大

このような仮想化技術が発展する中、フロントエンドにおける開発のコストが以前にも増して増大したように思えます。いわゆる「Appleショック」において、RIAからSPAの流れになり、HTML5+CSS3+JSでGUIを構築すると言う要求が高まりました。そして、CSSやJSが肥大化し、CSSのOOCSS、SMACS、BEM、FLOCSSなどのメンテナブルな設計や、SASSやStylusなどのCSSプリプロセッサが登場しました。JSにおいてもGUI設計のコーディングが必要になり、BackBorn.js、Angular.jsなどのMVCフレームワークや、またAltJSなどの展開が進みました。今のフロントエンドの技術は移り変わりが激しく、また非常に高度化しているように思えます。

そのため、フロントエンドはユーザと接触する面であり、以前よりも増して非常にリソースを掛けないといけない状況になったと考えています。

noBackend開発とBaaS

そしてnoBackend開発と言う、フロントエンドの開発手法が出てきました。noBackend開発と言うのはバックエンドを開発しないことではなく、まずバックエンドの処理を考えないでアプリとユーザが接触するフロントエンドから開発すると言う、ある意味フロントエンド駆動で開発すると言うスタイルが提唱されました。

そのnoBackendの1つの形式として、BaaSというツールが登場したと言うのが、大雑把ですが筆者が考える近年のBaaSにおける技術的な動向だと思います。

BaaSを利用することについて

いつBaaSを利用すべきか?

人的リソースの不足や時間コストが掛けられないとき

たとえばスタートアップにおける開発において、そもそもエンジニアが不足するという事態が多々発生します。しかしスタートアップはスピードが特に求められるので、時間コストが掛けられないという状況であるという場面も多くあります。

その際に時間コストの短縮のためBaaSを利用すると言うのは、1つの良い戦略でしょう。BaaSは既にバックエンドそのものが提供されるため、バックエンドを開発する必要性がなくなり、その結果開発コストの削減に繋り、より高速に少ない人的なリソースで、サービスを構築できる可能性があります。

Webアプリケーションのプロトタイピング

Webアプリケーションのプロトタイピングについても活用できるのではないかと考えています。WebアプリケーションでBaaSを活用することにより、自分達が構築するシステムの要求や、アーキテクチャに対してより良いフィードバックを受けられ可能性があります。

実際にハッカソン等で、Milkcocoaを利用したサービスをラピッドプロトタイプしたという事例について、ユーザから報告を受けたことがあります。もちろんプロトタイプ作成のみならず、実運用でもBaaSを使うことは有効だとは思います。しかしとりあえずBaaSを選択して設計の評価をすると言うことは、これからのサービス開発で有効だと思いますし、事例も多々出てくるだろうと予測しています。

どのWebアプリケーションにもあるような機能を実現するとき

BaaSはこれまでのサービスのおけるバックエンドのパターンを抽象化し、提供していると考えられるので、一般的なWebアプリケーションの機能を実現するときにBaaSを活用すると良いと思います。

たとえば認証系のみBaaSを利用して実現して、その他のビジネスロジックは、フロントエンドまたはバックエンドで実装して、連携する等は考えられるでしょう。FacebookやTwitterなどのSNSによる認証はAPIの変更等で保守にコストが特に掛るところだと思いますので、そういった面倒なところをBaaSがまとめて見てくれるというのも利点です。

BaaSが不適切な場面

バックエンドに、自分達の独自のビジネスロジックを組み込みたいとき

BaaSはバックエンドが最初から構築されているため、BaaSのバックエンドに自分達のビジネスロジックを含めることは当然ですができません。アーキテクチャとして、バックエンドが必要なときであれば、バックエンドを構築したほうが良いでしょう。しかしその場合でも、BaaSと独自のバックエンドを組み合わせて、サービスを構築することは可能だと思います。その場合はBaaSの連携コストか、独自で機能実装するコストを選択しなければならないでしょう。

バックエンドに対して最適化を行いたいとき

BaaSはバックエンドとして汎用的に作られている場合が多いので、必ずしもサービスに最適な振る舞いになっていない場合が多いでしょう。たとえばサービスに対して、BaaSのバックエンドのレスポンスが遅い等があり、それがサービスに対して重大な影響を与えているのであれば、BaaSではなくチューニングされたサーバが必要だと思います。

MilkCocoaについて

本特集ではMilkcocoaを利用して、BaaSにおけるシステム/アプリケーション開発がどう言ったものか? ということについて紹介していきます。

今回は、Milkcocoaというサービスがどういうものか? と言う概要を簡単にご紹介していきます。

図2 Milkcocoaロゴ
図2 Milkcocoaロゴ

Milkcococaの特徴

Milkcocoaに関して、他のBaaSとは異なる特徴を紹介します。

非常に学習コストや導入コストが低いこと

まずMilkcocoaの特徴は、非常に学習コストが低くなるように設計されているということです。この後の回でも記述しますが、非常に手軽に導入できるよう設計をしています。非常にシンプルなAPIであり、導入も非常に素早くできることを主眼に設計をしています。

リアルタイム性

他のBaaSとは大きく異なるのが、リアルタイムアプリケーションのための機能が充実していると言うことです。ここが他のBaaSとは異なります。

ルールスクリプトとデータストア

Milkcocoaはデータストアでデータを永続化することが可能です。またデータストアの操作に関して、制限を掛けることができる機能を提供しています。

Milkcocoaの欠点

最後に欠点を解説したいと思います。この点に関しては、今後のアップデートにより改善する予定の機能が数多くありますが、本稿執筆時(2015年2月)で対応されてない機能です。

SNSの連携機能がないこと

近日SNSに関する認証機能のアップデートを行いますが、まだ提供されていない機能です。まだ詳しくは公開できないのですが、2015年4月にSNS認証機能を追加予定です。

iPhoneやAndroidのネイティブSDKがないこと

Milkcocoaは現在、JSのSDKのみ提供しており、他のプラットフォームのSDKは対応していません。iPhone SDKに関しては、テストバージョンを一部の希望者に用意しているのみであり、まだ公式には提供していません。

しかし近いうちにリリースできると思いますので、楽しみにしておいてください。

次回は

次回は、Milkcocoaを利用し、簡単なチャットアプリを作り、MilkcocoaとBaaSでのアプリの作り方を紹介します。

おすすめ記事

記事・ニュース一覧