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

第1回 BaaSとはなにか?

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

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における技術的な動向だと思います。

著者プロフィール

花田恒一(はなだのぶかず)

株式会社Technical Rockstars CTO

グラフィカル言語Flowerや,BaaSサービスであるMilkcocoaを開発。Lisper。言語オタクであり,様々な言語開発経験がある。特に好きな言語はLisp(Shen)である。最近ではUXDに関心があり,福岡のUXコミュニティに積極的に参加している。

Twitter:@nobkz

コメント

コメントの記入