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

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

Flutter SDK(非公式)の使い方【データストアの特殊なオペレーション】

f:id:mbaasdevrel:20200110154553p:plain

FlutterはDartで書かれたフレームワークになります。元々iOSやAndroidといったスマートフォン向けでしたが、今ではWebやWindows、macOSといったマルチプラットフォームで動作します。Flutter/Dartを覚えることで、多くの環境に対してアプリケーション開発が可能になります。

NCMBでは公式SDKを提供していませんが、非公式に開発を進めているFlutter SDKがあります。元々ベータとして0.1系でしたが、大幅な機能変更に合わせて v2 になりました。

この記事では、初期化の方法とデータストアをより深く使いこなすための処理を紹介します。

インストール

pubspec.yaml を編集します。

dependencies:
  ncmb: ^2.0.2

そして dart pub get でインストールできます。

使い方

任意のファイル上でライブラリを読み込みます。

import 'package:ncmb/ncmb.dart';

そしてNCMBオブジェクトを初期化します。

NCMB('APPLICATION_KEY', 'CLIENT_KEY');

基本的な使い方

まずは基本的なHello worldをデータストアに保存してみます。まずデータストアのオブジェクトを作ります。

var item = NCMBObject('Item')

そして値をセットします。これは set メソッドを使います。

item.set('message', 'Hello World');

Dartの書き方として、キーチェーンメソッドはドット2つで繋ぎます。つまり次のような書き方で連続した値の設定が可能です。

item
  ..set('message', 'Hello World')
  ..set('number', 1)
  ..set('array', [1, 2, 3]);

そして保存します。async/awaitで保存可能です。

await item.save();

これでデータが保存できました。データの取得は get メソッドになります。

print(item.get('message'));
// -> Hello, world

インクリメント

数字をカウントアップするインクリメントの使い方です。

item.set('number', 2); // +2されます

配列に追加

配列のフィールドに対して値を追加します。追加する値は配列でも指定できます。

var item = new NCMBObject('Item')
  ..set('ary', ['a']);
await item.save();
item.add('ary', '4');
await item.save();
await item.fetch();
item.get('ary'); // -> ['a', '4']

配列から削除

配列のフィールドに対して一致する値を削除します。削除する値は配列でも指定できます。

var item = new NCMBObject('Item')
  ..set('ary', ['a', 'b', 'c', 'd']);
await item.save();
item.remove('ary', ['a', 'e']);
await item.save();
await item.fetch();
item.get('ary'); // -> ['b', 'c', 'd']

配列にユニークに追加

配列のフィールドに対して値を追加する点はaddと同じです。ただしユニークな値のみ追加されます。追加する値は配列でも指定できます。

var item = new NCMBObject('Item')
  ..set('ary', ['a', 'b', 'c', 'd']);
await item.save();
item.addUnique('ary', ['a', 'e']);
await item.save();
await item.fetch();
item.get('ary'); // -> ['a', 'b', 'c', 'd', 'e']

コード

コードはオープンソースで、GitHub上で公開しています。ライセンスはMIT Licenseになります。

NCMBMania/ncmb-dart: NCMB library for Dart and Flutter.

Flutter依存の部分を削除していますので、純粋なDartライブラリとして利用可能です。また、ネイティブアプリ部分も削除していますので、Flutter for Webでも利用可能です。

まとめ

Flutterを覚えればiOS、Androidアプリともに一つのコードで書けるようになります。DartはJavaScriptライクな言語で、JavaScriptをマスターしている人であれば、それほど苦労せずにDartを書けるようになるでしょう。ぜひFlutterを使ったアプリ開発にNCMBをご利用ください!

ncmb | Dart Package

中津川 篤司

中津川 篤司

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