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

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

データストアのTips。クラスをラッピングしましょう

https://cdn-ak.f.st-hatena.com/images/fotolife/m/mbaasdevrel/20171212/20171212211252.png

MVCのフレームワークでは、コントローラはなるべく薄くしてモデル内のメソッドを追加していく傾向があります。mBaaSのJavaScript SDKを使っている場合も同様で、データストアを直接操作するよりもラッピングする方がメンテナンスしやすくなったり、共通化されたメソッドを作りやすくなります。

今回はその基本を紹介します。なお、この方法は Node.js でのみ有効です。Monacaなどではインスタンスにメソッドを追加する方法のみが利用できます。

続きを読む

NCMB for Excelにデータストア検索機能を追加しました

https://cdn-ak.f.st-hatena.com/images/fotolife/m/mbaasdevrel/20171212/20171212211755.png

社内で大活躍しているのがMicrosoft Office系のソフトウェアでしょう。特に日本の業務で使われているのがExcelです。社内には膨大な数のマクロに溢れていることでしょう。

そこでmBaaSもExcelから使えるようになれば便利なはずです。そのためのクラスモジュール、NCMB for Excelにデータストア検索機能が追加されました。

続きを読む

ニフクラ mobile backendをExcelから使えるようにするクラスモジュールの紹介(データ保存)

https://cdn-ak.f.st-hatena.com/images/fotolife/m/mbaasdevrel/20171212/20171212211755.png

ニフクラ mobile backendを仕事で使っている場合、どうしても手放せないのがExcelではないでしょうか。クラスデータをダウンロードしてExcelで分析したり、マスターデータになるクラスへデータ登録を行う前にExcelでメンテナンスしているかも知れません。

そこでExcelからニフクラ mobile backendを直接操作できるように、マクロライブラリを作成しています。今回はデータの簡単な保存方法について紹介します。

続きを読む

ディレクトリ内のファイルをすべてファイルストアにアップロードする

https://cdn-ak.f.st-hatena.com/images/fotolife/m/mbaasdevrel/20171212/20171212211252.png

ニフクラ mobile backend用のCLIクライアント、ncmb-cliにファイルストアへのディレクトリアップロード機能を追加しました。これまでファイル単位ではアップロードできていたのですが、ディレクトリを指定した時に、そのディレクトリ内すべてのファイルをアップロードします。

続きを読む

ファイルストアの内容をすべてダウンロードするブックマークレットを作成しました

https://cdn-ak.f.st-hatena.com/images/fotolife/m/mbaasdevrel/20171212/20171212212025.png

mBaaSではHTMLや動画、音楽ファイルなど任意のバイナリファイルを保存できるファイルストレージ機能を提供しています。ファイルはHTTPS公開でき、データストア同様に公開範囲を指定することもできます。

そんなファイルストアですが、エクスポート機能では対象外となっています。そのため、バックアップ目的でエクスポートを使われている場合、ファイルストアの内容はダウンロードできずに不便な思いをすることでしょう。

そこでブックマークレットを使ってファイルストアの内容をすべてダウンロードできるようにしました。

続きを読む

プッシュ通知のレポートを出力するブックマークレットを作成しました

https://cdn-ak.f.st-hatena.com/images/fotolife/m/mbaasdevrel/20171212/20171212212025.png

mBaaSではプッシュ通知の配信数や開封数をレポーティングする機能を提供しています。開封を確認する機能を実装しようと思うと、各プッシュ通知にユニークなIDを割り当てたり、開封時にユニークなIDをサーバ側と付け合わせたりと非常に面倒な開発が必要になります。mBaaSはそうした面倒さを回避できる良い解決策になります。

しかし一点、問題点があるとするとプッシュ通知のレポーティングが管理画面でしか確認できないという点が挙げられます。しかも各プッシュ通知についてクリックしないとグラフが確認できません。これでは統計やトレンドを分析する際に面倒でしょう。

そこでブックマークレットを使って、プッシュ通知の配信、開封状況をExcel出力するようにしました。

続きを読む

JavaScript(スクリプト機能)における非同期処理のループ実装の注意点

https://cdn-ak.f.st-hatena.com/images/fotolife/m/mbaasdevrel/20171212/20171212211252.png

mBaaSではJavaScript SDKを提供していますが、これはMonacaやWebアプリケーションに限らず、スクリプト機能を使う際にも用います。普段SwiftやJava、Objective-C、Unityなどを使っている方にとって、JavaScript/Node.jsを使った開発は慣れないものでしょう。

JavaScriptと他のプログラミング言語の大きな違いの一つに非同期処理があるかと思います。かつてはコールバック、現在はPromiseによって非同期処理を意識したプログラミングを行う必要があります。

続きを読む

ncmb-extendを使ってクラスのコピー処理を実装する

https://cdn-ak.f.st-hatena.com/images/fotolife/m/mbaasdevrel/20171212/20171212211252.png

mBaaSを利用されている方々から良く聞かれる内容に「あるアプリケーション以下にある特定のクラスをコピーしたい」というものがあります。mBaaSは本番環境と開発環境の機能差がないので、アプリケーションキーとクライアントキーを変更するだけですぐに動作環境を変更できます。そうすることで、本番環境さながらのデータを使って開発やテストを行ったり、開発環境で作ったマスターデータを本番環境に反映できます。

しかし、通常そういった処理を行う場合にはエクスポートを実行した上でインポートを行う必要があります。エクスポートは全データが対象になるので時間もかかり、面倒です。

そこで ncmb-extend に用意されているメソッドを使ってクラスコピー機能を作ってみました。

続きを読む

mBaaSで作る業務システム「日報システム」(その4:コメント)

https://cdn-ak.f.st-hatena.com/images/fotolife/m/mbaasdevrel/20171212/20171212211436.png

mBaaSはスマートフォンアプリを作るのに最適です。そしてスマートフォンアプリは個人が楽しむゲームやチャットなどだけでなく、業務用途でも広がりを見せています。そこでmBaaSも業務システムを作るために使ってみましょう。

何回かに分けて、日報システムを作ってみます。他の業務システムへも応用はさほど難しくないでしょう。今回は前回のデータ閲覧に続いて、コメントを付ける機能を追加します。

続きを読む

mBaaSで作る業務システム「日報システム」(その3:データ閲覧)

https://cdn-ak.f.st-hatena.com/images/fotolife/m/mbaasdevrel/20171212/20171212211436.png

mBaaSはスマートフォンアプリを作るのに最適です。そしてスマートフォンアプリは個人が楽しむゲームやチャットなどだけでなく、業務用途でも広がりを見せています。そこでmBaaSも業務システムを作るために使ってみましょう。

何回かに分けて、日報システムを作ってみます。他の業務システムへも応用はさほど難しくないでしょう。今回は前回のデータ登録に続いて、データ閲覧を作成します。以下は抜粋になります。実際のコードはNCMBMania/dailyReport: mBaaSを使った日報システムです。を参考にしてください。

続きを読む

mBaaSで作る業務システム「日報システム」(その2:データ登録)

https://cdn-ak.f.st-hatena.com/images/fotolife/m/mbaasdevrel/20171212/20171212095115.png

mBaaSはスマートフォンアプリを作るのに最適です。そしてスマートフォンアプリは個人が楽しむゲームやチャットなどだけでなく、業務用途でも広がりを見せています。そこでmBaaSも業務システムを作るために使ってみましょう。

何回かに分けて、日報システムを作ってみます。他の業務システムへも応用はさほど難しくないでしょう。今回は前回のログインに続いて、データ登録を作成します。以下は抜粋になります。実際のコードはNCMBMania/dailyReport: mBaaSを使った日報システムです。を参考にしてください。

今回のゴール

今回はログイン後のデータ登録画面を作ります。一つの特徴として、テキストで記録するメモと、写真のアップロードが行えるようになっています。

写真のアップロード

指定された写真は次のようなコードでアップロードできます。ファイル名はユニークでないといけないので、ログインユーザのobjectIdとファイル名を付けることにします。

return new Promise((res, rej) => {
  if (!app.report.photo) {
    return res('');
  }
  const user = ncmb.User.getCurrentUser();
  const photoName = `${user.objectId}-${app.report.photo.name}`;
  ncmb.File
    .upload(photoName, app.report.photo)
    .then((f) => {
      const url = `https://mb.api.cloud.nifty.com/2013-09-01/applications/${applicationId}/publicFiles/${f.fileName}`;
      return res(url);
    })
    .catch((err) => {
      rej(err);
    })
});

この画像データはSDK経由でもアクセスできますが、管理画面の設定を変更することでHTTPS経由でも取得できるようになります。

f:id:mbaasdevrel:20171212095115p:plain

URLは次のようになります。アプリケーションID(applicationId)は常に固定で、これは管理画面のURLを見て確認できます。

`https://mb.api.cloud.nifty.com/2013-09-01/applications/${applicationId}/publicFiles/${fileName}`

f:id:mbaasdevrel:20171212095132p:plain

日報のアップロード

写真をアップロードしたらURLが分かりますので、それも日報の一要素として追加してアップロードします。

この時、注意点としては権限になります。要件としては以下になります。

  • 本人は読み書き可能
  • 管理者グループは読み書き可能
  • 所属している部署グループは読み込み可能(編集は不可)

これらをコードで表すと次のようになります。

const acl = new ncmb.Acl;
acl
  .setRoleReadAccess(app.roleName, true)
  .setRoleReadAccess('admin', true)
  .setRoleWriteAccess('admin', true)
  .setUserReadAccess(user, true)
  .setUserWriteAccess(user, true);

後は save メソッドを実行すれば保存されます。日報にユーザのobjectIdを残すのはプッシュ通知を送る対象を特定するためです。

report
  .set('date', new Date(m[1], parseInt(m[2]) - 1, m[3]))
  .set('note', app.report.note)
  .set('division', app.roleName)
  .set('reporterId', user.objectId)
  .set('reporter', user.mailAddress)
  .set('acl', acl)
  .set('url', url)
  .save();

最後に

注意点として権限管理があります。業務システムではデータのアクセス権限が問題になりがちなので、mBaaSの権限管理機能を使ってしっかりと作ってください。権限を正しく設定すれば、データの取得時には複雑な条件で絞り込んだり、更新権限をコードで管理したりする必要もありません。ぜひお試しください。

実際のコードはNCMBMania/dailyReport: mBaaSを使った日報システムです。にアップロードしてあります。実装時の参考にしてください。

中津川 篤司

中津川 篤司

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

mBaaSで作る業務システム「日報システム」(その1:ログイン)

https://cdn-ak.f.st-hatena.com/images/fotolife/m/mbaasdevrel/20171212/20171212094252.png

mBaaSはスマートフォンアプリを作るのに最適です。そしてスマートフォンアプリは個人が楽しむゲームやチャットなどだけでなく、業務用途でも広がりを見せています。そこでmBaaSも業務システムを作るために使ってみましょう。

今回から何回かに分けて、日報システムを作ってみます。他の業務システムへも応用はさほど難しくないでしょう。

続きを読む

データストアを拡張するncmb-extendに複数オブジェクトを一括保存するメソッドを追加しました

https://cdn-ak.f.st-hatena.com/images/fotolife/m/mbaasdevrel/20171212/20171212211252.png

データストアは処理対象がオブジェクト単位となっています。そのためデータを一括で処理したい時に、繰り返し処理を呼び出す必要があります。さらにAPI周りは非同期処理になるので、通常のループ処理を使うと大量のアクセスが一気に発生してしまい、サーバからアクセスを拒否される可能性があります。

そこでデータストアを拡張するライブラリ、ncmb-extendの中に複数オブジェクトをまとめて保存するメソッド、saveallを追加しました。

続きを読む

Monacaアプリでプッシュ通知の音を変えるには

www.youtube.com

プッシュ通知はアプリをインストールしていると一日中、定期的に届くようになっています。あまりに数が多いと通知をオフにされてしまったり、他の通知にまぎれて開封してもらえません。

そこで多少なりとも目立つ方法として、プッシュ通知の音を変えるのはいかがでしょうか。mBaaSではごく簡単な操作でプッシュ通知の音を変更できます。今回はJavaScript SDKを使ってMonacaアプリでプッシュ通知の音を変える方法を紹介します。

続きを読む