MVCのフレームワークでは、コントローラはなるべく薄くしてモデル内のメソッドを追加していく傾向があります。mBaaSのJavaScript SDKを使っている場合も同様で、データストアを直接操作するよりもラッピングする方がメンテナンスしやすくなったり、共通化されたメソッドを作りやすくなります。
今回はその基本を紹介します。なお、この方法は Node.js でのみ有効です。Monacaなどではインスタンスにメソッドを追加する方法のみが利用できます。
続きを読むMVCのフレームワークでは、コントローラはなるべく薄くしてモデル内のメソッドを追加していく傾向があります。mBaaSのJavaScript SDKを使っている場合も同様で、データストアを直接操作するよりもラッピングする方がメンテナンスしやすくなったり、共通化されたメソッドを作りやすくなります。
今回はその基本を紹介します。なお、この方法は Node.js でのみ有効です。Monacaなどではインスタンスにメソッドを追加する方法のみが利用できます。
続きを読む社内で大活躍しているのがMicrosoft Office系のソフトウェアでしょう。特に日本の業務で使われているのがExcelです。社内には膨大な数のマクロに溢れていることでしょう。
そこでmBaaSもExcelから使えるようになれば便利なはずです。そのためのクラスモジュール、NCMB for Excelにデータストア検索機能が追加されました。
続きを読むニフクラ mobile backendを仕事で使っている場合、どうしても手放せないのがExcelではないでしょうか。クラスデータをダウンロードしてExcelで分析したり、マスターデータになるクラスへデータ登録を行う前にExcelでメンテナンスしているかも知れません。
そこでExcelからニフクラ mobile backendを直接操作できるように、マクロライブラリを作成しています。今回はデータの簡単な保存方法について紹介します。
続きを読むニフクラ mobile backend用のCLIクライアント、ncmb-cliにファイルストアへのディレクトリアップロード機能を追加しました。これまでファイル単位ではアップロードできていたのですが、ディレクトリを指定した時に、そのディレクトリ内すべてのファイルをアップロードします。
続きを読むmBaaSではHTMLや動画、音楽ファイルなど任意のバイナリファイルを保存できるファイルストレージ機能を提供しています。ファイルはHTTPS公開でき、データストア同様に公開範囲を指定することもできます。
そんなファイルストアですが、エクスポート機能では対象外となっています。そのため、バックアップ目的でエクスポートを使われている場合、ファイルストアの内容はダウンロードできずに不便な思いをすることでしょう。
そこでブックマークレットを使ってファイルストアの内容をすべてダウンロードできるようにしました。
続きを読むmBaaSではプッシュ通知の配信数や開封数をレポーティングする機能を提供しています。開封を確認する機能を実装しようと思うと、各プッシュ通知にユニークなIDを割り当てたり、開封時にユニークなIDをサーバ側と付け合わせたりと非常に面倒な開発が必要になります。mBaaSはそうした面倒さを回避できる良い解決策になります。
しかし一点、問題点があるとするとプッシュ通知のレポーティングが管理画面でしか確認できないという点が挙げられます。しかも各プッシュ通知についてクリックしないとグラフが確認できません。これでは統計やトレンドを分析する際に面倒でしょう。
そこでブックマークレットを使って、プッシュ通知の配信、開封状況をExcel出力するようにしました。
続きを読むmBaaSではJavaScript SDKを提供していますが、これはMonacaやWebアプリケーションに限らず、スクリプト機能を使う際にも用います。普段SwiftやJava、Objective-C、Unityなどを使っている方にとって、JavaScript/Node.jsを使った開発は慣れないものでしょう。
JavaScriptと他のプログラミング言語の大きな違いの一つに非同期処理があるかと思います。かつてはコールバック、現在はPromiseによって非同期処理を意識したプログラミングを行う必要があります。
続きを読むmBaaSを利用されている方々から良く聞かれる内容に「あるアプリケーション以下にある特定のクラスをコピーしたい」というものがあります。mBaaSは本番環境と開発環境の機能差がないので、アプリケーションキーとクライアントキーを変更するだけですぐに動作環境を変更できます。そうすることで、本番環境さながらのデータを使って開発やテストを行ったり、開発環境で作ったマスターデータを本番環境に反映できます。
しかし、通常そういった処理を行う場合にはエクスポートを実行した上でインポートを行う必要があります。エクスポートは全データが対象になるので時間もかかり、面倒です。
そこで ncmb-extend に用意されているメソッドを使ってクラスコピー機能を作ってみました。
続きを読むmBaaSはスマートフォンアプリを作るのに最適です。そしてスマートフォンアプリは個人が楽しむゲームやチャットなどだけでなく、業務用途でも広がりを見せています。そこでmBaaSも業務システムを作るために使ってみましょう。
何回かに分けて、日報システムを作ってみます。他の業務システムへも応用はさほど難しくないでしょう。今回は前回のデータ閲覧に続いて、コメントを付ける機能を追加します。
続きを読むmBaaSはスマートフォンアプリを作るのに最適です。そしてスマートフォンアプリは個人が楽しむゲームやチャットなどだけでなく、業務用途でも広がりを見せています。そこでmBaaSも業務システムを作るために使ってみましょう。
何回かに分けて、日報システムを作ってみます。他の業務システムへも応用はさほど難しくないでしょう。今回は前回のデータ登録に続いて、データ閲覧を作成します。以下は抜粋になります。実際のコードはNCMBMania/dailyReport: mBaaSを使った日報システムです。を参考にしてください。
続きを読む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経由でも取得できるようになります。
URLは次のようになります。アプリケーションID(applicationId)は常に固定で、これは管理画面のURLを見て確認できます。
`https://mb.api.cloud.nifty.com/2013-09-01/applications/${applicationId}/publicFiles/${fileName}`
写真をアップロードしたら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を使った日報システムです。にアップロードしてあります。実装時の参考にしてください。
mBaaSはスマートフォンアプリを作るのに最適です。そしてスマートフォンアプリは個人が楽しむゲームやチャットなどだけでなく、業務用途でも広がりを見せています。そこでmBaaSも業務システムを作るために使ってみましょう。
今回から何回かに分けて、日報システムを作ってみます。他の業務システムへも応用はさほど難しくないでしょう。
続きを読むJavaScript SDKを使うことでmBaaSの各種機能を簡単に扱えるようになりますが、その機能は基本的なものだけになります。そのため一つ一つの処理を手順通りに行うとコード量が増えがちです。
続きを読むデータストアは処理対象がオブジェクト単位となっています。そのためデータを一括で処理したい時に、繰り返し処理を呼び出す必要があります。さらにAPI周りは非同期処理になるので、通常のループ処理を使うと大量のアクセスが一気に発生してしまい、サーバからアクセスを拒否される可能性があります。
そこでデータストアを拡張するライブラリ、ncmb-extendの中に複数オブジェクトをまとめて保存するメソッド、saveallを追加しました。
続きを読むプッシュ通知はアプリをインストールしていると一日中、定期的に届くようになっています。あまりに数が多いと通知をオフにされてしまったり、他の通知にまぎれて開封してもらえません。
そこで多少なりとも目立つ方法として、プッシュ通知の音を変えるのはいかがでしょうか。mBaaSではごく簡単な操作でプッシュ通知の音を変更できます。今回はJavaScript SDKを使ってMonacaアプリでプッシュ通知の音を変える方法を紹介します。
続きを読む