FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

Herokuを使ってmBaaSを定期実行する

f:id:mbaasdevrel:20190520140649p:plain

定期的にmBaaSを実行してデータを作成したり、集計したいというニーズはあるかと思います。残念ながら現在のニフクラ mobile backendでは定期実行(タイマー、cronとも呼びます)の仕組みは用意されていません。そこで使ってみたいのが、無料で使えるHerokuです。

Herokuのスケジュール機能を使うことで、定期実行処理が簡単に実現できます。今回はその実装方法を紹介します。

必要なもの

  • Herokuのアカウント
  • Herokuコマンド
  • ニフクラ mobile backendのアカウント

スクリプト例

今回はJavaScript SDKを使います。スケジュールで実行するので、Expressなどは使いません。

const NCMB = require('ncmb');
const config = require('./config');
const ncmb = new NCMB(config.applicationKey, config.clientKey);

(async () => {
  try {
    const push = new ncmb.Push;
    await push
      .set('immediateDeliveryFlag', true)
      .set('message', '何かお困りですか?')
      .set('target', ['ios', 'android'])
      .set('searchCondition', {
        'createData': {
          '$gte': {"__type":"Date", "iso": new Date(new Date() - 7 * 24 * 60 * 60 * 1000).toISOString()}
        }
      })
      .send();
    console.log('送信しました');
  } catch (e) {
    console.log(e);
  }
})();

同じディレクトリで npm init し、 npm i ncmb -S でJavaScript SDKをインストールします。

Herokuへデプロイ

Herokuコマンドがインストールされていれば、デプロイは簡単です。まず最初に heroku login で認証します。上記のスクリプトがあるディレクトリはGit管理されていることとします。そして、そのディレクトリで heroku create を実行します。

そうするとGitリポジトリにHerokuのリポジトリが登録されますので、デプロイします。

$ git push heroku master

これで準備完了です。試しにコマンドを打って、ちゃんと動くか確認します。

$ heroku run node push.js
Running node push.js on ⬢ pacific-fortress-82011... up, run.7015 (Free)
送信しました

ちゃんと動いたらWebのプロセス自体不要なので、削除しておきます。

$ heroku ps:scale web=0

スケジューラーのインストール

続いてスケジューラーをインストールします。

$ heroku addons:open scheduler

これでHerokuの管理画面が開きますので、スケジュールを設定します。例えば node push.js を毎日1回動かすといった具合です。

f:id:mbaasdevrel:20190520140728p:plain

後は予定された時間になったらNCMBへのアクセスがあることを確認できれば完了です。

まとめ

Herokuを使うことで無料で定期的に実行するスクリプトが実現できます。無料枠の中では、長時間実行されるものは向きませんが、ちょっとしたスクリプトであれば問題ないでしょう。ぜひNCMBと組み合わせて、バッチ処理を実現してください。

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。