ローコードで効率的にアプリを作る方法～mBaaSを使ってみよう～

#はじめに
mBaaSという言葉をご存じでしょうか？
最近ではノーコードやローコードの活用により、アプリ開発の負担を軽減することが主流になりつつあります。コロナ禍でスマホアプリ利用者も増え、ますますアプリの提供速度が求められていく時代になってきたのではないでしょうか。
しかし、スマホアプリ開発はフロントエンドとバックエンド両方の開発が必要となり、非常に手間も時間もかかりますよね。リリースやマーケティングの工数まで考慮すると、出来れば開発工数も少なくしていきたいところです

今回は、バックエンド開発をほぼ不要にすることが出来るmBaaSという技術について私なりに解説させていただきます。

#目次
[mBaaSとは](#mbaasとは)
[mBaaSで実現できること](#mbaasで実現できること)
[実装の早さ](#実装の早さ)
[mBaaSを使う事のメリット・デメリット](#mbaasを使う事のメリットデメリット)
[セキュリティ](#セキュリティ)
[おわりに](#おわりに)

# mBaaSとは
![cloud.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72656/01eb8caa-85bb-9052-55ad-5c02ae591981.jpeg)

改めて、**mBaaS**とは、**mobile Backend as a Service**の略であり、
スマートフォンでよく利用される**汎用的な機能をクラウドから提供するサービス**の事です。

クラウド上に用意された機能を、APIを叩くだけで利用できるのでサーバー開発不要でアプリに必要なバックエンド機能を実装することができます。これによりコストカット・リリースまでの速度向上が実現可能です。

サーバー側の開発技術が無くてもAPIを呼び出すようなコードを数行記述するだけで実装できるのですから、初学者にとっても大変ありがたいサービスです。

#mBaaSで実現できること
- **バックエンド機能の開発不要による工数削減**<br>
ファイルストレージやデータベース、プッシュ通知など、スマホアプリにおいて必須とも言われているバックエンド機能はクラウド上に用意されており、APIを使う事で容易に実装する事が可能です。そのため本来考慮に入れるべきバックエンド開発の工数を、フロントエンド開発やマーケティングの工数に回すことが可能となります。<br>
一般的に、アプリのバックエンド機能は汎用性の高いものが多く、アプリとして差別化が難しいとも言えます。そのため、この部分の開発に時間を費やすのは得策とは言えないでしょう。加えて、提供企業によってはテクニカルサポートを受け付けている事があり、開発時の不明点や運用時に起きたエラーなどをお問い合わせいただく事で運用工数の削減にも繋がります。

- **プッシュ通知**
mBaaSを用いる最大の目的は「プッシュ通知」ではないでしょうか。
mBaaSのプッシュ通知機能を用いれば、すぐ実装することが出来るだけでなく、大規模なプッシュ通知でも安定して送信する事が可能となります。
以下の記事では、ニフクラ mobile backendを用いた際のプッシュ通知の実装手順について解説しています。
◇[Androidのプッシュ通知実装マニュアル](https://qiita.com/itominami/items/d7aac028a03cab9801a0)

- **スモールスタート**
スマホアプリ開発において、スモールスタートはとても重要です。
スモールスタートとは、最低限の機能でリリースし、その後の利用データを分析しながら徐々に機能を増やす手法です。
このやり方であれば、最低限の時間と費用でリリース可能なので、無駄を最小限に抑える事が期待できます。
mBaaSでは、ほとんどの場合無料枠が設定されており、個人開発規模であれば無料枠で事足りてしまう事が多いです。
バックエンド機能が使えるのに無料であれば試してみるのも一つの手ではないでしょうか。
◇[ニフクラ mobile backendを使ってみる](https://mbaas.nifcloud.com/)

- **スケールアップ・スケールアウトが容易**
APIリクエスト数やプッシュ通知数の上限などを変更したい場合も、ユーザーは申込を出すだけですぐに反映されます。
一時的な高負荷が予想される場合でも柔軟な対応をすることが出来ます。

#実装の早さ
プッシュ通知、会員管理、SNS連携等、クラウド上に用意されている機能はAPIを利用するだけで容易に実装出来ます。
ここでは一例として、ニフクラ mobile backendでSDKを導入して使用できる簡単なメソッドの一部を記述していきます。

まずはじめにAPIキーの設定とSDKの初期化・インストールをしないといけませんが、今回は以下のマニュアルを添付することで手順は省略とさせてください。
◇[ニフクラ mobile backendクイックスタート](https://mbaas.nifcloud.com/doc/current/introduction/div_quickstart_javascript_monaca.html#SDK%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A8%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF)

- 想定動作環境
  - Google Chrome（最新版）
  - [Monaca](https://ja.monaca.io/)
  - [ニフクラ mobile backend](https://mbaas.nifcloud.com/)

実際にJavaScript SDKを用いた場合、以下のようなメソッドを用いてローコード開発を進める事ができます。

---
- **データベースにクラスを作成する**

```Javascript:datastore.js
// 保存先クラスの作成 
var TestClass = ncmb.DataStore("TestClass"); //<-- メソッド使用
```
これだけでデータを保存するためのクラスが完成します。
今後、`データの保存`,`参照`などをする際は`TestClass`を指定するだけでOKです。

---
- **新規会員登録機能の実装**

```Javascript:signup.js
function signUp() {
    var userName = document.getElementById("userName").value;
    var password = document.getElementById("password").value;

    var user = new ncmb.User();
            user.set("userName", userName)
                .set("password", password)
                .signUpByAccount()  //<--メソッド利用 
                .then(function(user) {
                    alert("新規ユーザー登録成功");
                    return ncmb.User.login(user);  //<-- メソッド利用
                })
                .then(function(user) {
                    alert("ログイン成功");
                    window.location.href = "hogehoge.html";
                })
                .catch(function(error) {
                    alert("認証処理失敗:" + error + ", " + JSON.stringify(error));
                });
    }
```
`userName`と`password`を拾ってくることさえできれば、後は`signUpByAccount()`を呼ぶだけで新規ユーザーの登録が終了です。本来であれば複数行記述するところを、ここまで簡略化することが出来ます！


---
- **ログイン機能の実装**
 
```Javascript:login.js
function login(){
    var userName = document.getElementById("userName").value;
    var password = document.getElementById("password").value;
//ログイン機能の実装 
    ncmb.User.login(userName, password) //<-- メソッド使用
        .then(function (user){
        console.log("ログイン成功:"+ JSON.stringify(user));
        window.location.href = "hogehoge.html";
        })
        .catch(function(error){
            console.log("ログイン失敗:"+ error +" ," + JSON.stringify(error));
});
}
```
実質一行でログイン機能が実装出来ている事が分かるかと思います。
同様に、ログアウトもメソッドを用いることで実装が出来ます。

---
- **パスワードのリセット**
 
```Javascript:reset.js
var user = new ncmb.User();
user.set("mailAddress", "mail@example.com");
//パスワードのリセット 
user.requestPasswordReset() //<-- メソッド使用
    .then(function(data){
        // 送信後処理
    })
    .catch(function(err){
      // エラー処理
    });
```

パスワードを忘却したユーザーがリセット要求をした際、登録メールアドレスに以下の内容が送信されます。

- 仮パスワード
- 会員パスワード変更ページのURL

たった一行でパスワード変更のURLが送信されるようになるのは便利ですね。

これらの他にもエヴァンジェリストによる技術記事や公式ドキュメントなど、各種文献が豊富に揃っているのがmBaaSの特長でもあります。特にニフクラ mobile backendは全て日本語ですので安心して読み進めることが出来ます。
◇[公式ドキュメント](https://mbaas.nifcloud.com/doc/current/)
◇[技術ブログ](https://blog.mbaas.nifcloud.com/)

#mBaaSを使う事のメリット・デメリット
![mBaaSorScratch.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72656/9a66b93a-19a9-c166-381c-ad407a749235.jpeg)

mBaaSの便利さが伝わったと思いますが、それでもスクラッチ開発か、mBaaS導入か悩むところです。
ここでは、mBaaSを導入した際のメリット・デメリットについてまとめてみます。

- メリット
  - 開発初期費用が安くなる
  - サーバーを立てる必要が無い
  - バックエンド機能をいちから開発する必要が無い
  - アプリ開発の短期間化についていく事が出来る。

- デメリット
  - 実装できる機能に制約がある
  - ベンダーロック
  - 顧客情報を自社管理できない
  - ベンダーによってはCLOUD Actが適用される場合もある

mBaaSはスクラッチ開発に比べ、実装できる機能に制約があります。
複雑な機能に関してはサーバー側のカスタマイズが必要となりますが、サービスによって許容されている範囲も様々です。
また、ほとんどのmBaaSサービスの用意している機能は類似していますが、だからといってベンダーを変えるのが容易かというとそうではありません。mBaaSを利用する時にはベンダーロックの危険性を考え、サービスが安定稼働し続けるものを選ぶ事も重要となります。

mBaaSを使う際に顧客情報は各ベンダーの指定するクラウド上に保存されます。そのため、個人情報を社外に出す必要があり自社管理が出来ません。クラウドを提供している会社は厳重な管理を行っている事が多いものの、リスクがついてまわる事も考えなければなりません。
◇[CLOUD Actとは](https://blog.pfs.nifcloud.com/20210118_cloudact_risk_security#CLOUD-Act%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E6%B3%95%E3%81%A3%E3%81%A6%E4%BD%95)

メリットの多いmBaaSですが、その反面デメリットも存在するため用途によって使い分けると良さそうです。

#セキュリティ
mBaaSを提供しているベンダーのほとんどは堅牢なセキュリティ体制をとっています。

ニフクラ mobile backendのセキュリティに関してはニフクラに依存しており、セキュリティについての情報公開をしています。
気になった方は以下からセキュリティへの取り組みを確認してみてください。
◇[ニフクラのセキュリティ](https://pfs.nifcloud.com/security/)

#おわりに
今回はmBaaSについてお話させていただきました。繰り返しになりますが、無料で使い始めることができて大変便利ですので、アプリ開発を検討している方は試しにmBaaSを利用してみてはいかがでしょうか。


「工数削減したい」「プッシュ通知を実装したい」「無料なら使ってみるか」
このような気持ちになりましたら是非[ニフクラ mobile backend](https://mbaas.nifcloud.com/)をお使いいただけますと幸いです。

企業規模でmBaaS導入を検討される方向けに無料で[個別相談会](https://lp.mbaas.nifcloud.com/mb_consulting.html)も行っていますので、
是非お気軽にお申込みいただければ幸いです。

- 関連リンク
  - [個別相談会についてはこちら](https://lp.mbaas.nifcloud.com/mb_consulting.html)
  - [ニフクラ mobile backendとは(eBook)](https://lp.mbaas.nifcloud.com/about_mbaas.html)
  - [mBaaSのメリット(eBook)](https://lp.mbaas.nifcloud.com/mb_merit-of-mbaas.html)