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

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

C#用NCMB SDK(コミュニティSDK)の使い方(インクリメント、配列の追加と削除の使い方)

f:id:mbaasdevrel:20200710131602p:plain

XamarinはC#を使ったクロスプラットフォームなスマートフォンアプリ開発環境です。企業向けのアプリ開発などで利用されることが多いようです。

NCMBではC#を使った開発環境としてUnityに対応しています。しかし、そちらはiOS/Android SDKをラッピングしているので、Xamarinでそのまま利用できません。C#のみで実装する必要があります。

ここでは現在開発中のC#用SDK(コミュニティSDK)の使い方を紹介します。今回はデータストアのインクリメント、配列に対するAdd/AddUnique/Removeの使い方を紹介します。

インストールについて

C# SDKはNuGetで公開していますので、Visual Studioなどでインポートできます。

使い方

使い方はまず、NCMBClientを読み込みます。

using NCMBClient;

初期化

初期化は次のようにします。アプリケーションキー、クライアントキーは自分のものに変更してください。

var applicationKey = "70d...934";
var clientKey = "4d0...dff";

new NCMB(applicationKey, clientKey);

初期化さえ終われば、次のようなオブジェクトが利用できます。

  • NCMBObject
    データストアのオブジェクト
  • NCMBQuery
    データストア、会員管理、ロール、Installation、ファイルストア検索用
  • NCMBAcl
    権限管理用
  • NCMBUser
    会員管理用
  • NCMBRelation
    データストアのリレーション
  • NCMBInstallation
    デバイストークン管理用クラス
  • NCMBGeoPoint
    位置情報を扱うクラス

インクリメント

インクリメントは数字を足して保存するものです。データストア上のデータに対して加算(または減算)するので、複数箇所からの更新にも利用できます。コードで書くと次のようになります。

var item = new NCMBObject("DataStoreTest");
item.Set("message", "Hello");
item.SetIncrement("num", 1);
item.Save();

item.Fetch();

item.GetInt("num");
// -> 1

item.SetIncrement("num", 2);
item.Save();
item.Fetch();
item.GetInt("num");
// -> 3

配列の追加

配列で保存しているカラムに対してデータを追加するのが Add メソッドになります。データストア上のデータに対して値を追加するので、複数箇所からの更新にも利用できます。コードで書くと次のようになります。

var item = new NCMBObject("DataStoreTest");
item.Set("message", "Hello");
item.Add("num", "1");
item.Save();
item.Fetch();
item.Get("num");
// -> ["1"]

item.Add("num", 2);
item.Save();
item.Fetch();
item.Get("num");
// -> ["1", 2]

配列の追加(ユニーク)

Addは追加していくだけですが、AddUniqueを使うと重複した値は排除できます。ユニークな配列を作る場合はこちらを使ってください。

var item = new NCMBObject("DataStoreTest");
item.Set("message", "Hello");
item.AddUnique("num", 1);
item.Save();

item.Fetch();
item.Get("num");
// -> [1]

var numbers = new int[2] { 1, 2 };
item.AddUnique("num", numbers);
item.Save();
item.Fetch();
item.Get("num");
// -> [1, 2]

配列の削除

配列の中から特定の値を削除する場合には Remove を使ってください。これもまたサーバ側のデータに対して実行される処理になります。

var item = new NCMBObject("DataStoreTest");
item.Set("message", "Hello");
var numbers = new int[3] { 1, 2, 3 };
item.Add("num", numbers);
item.Save();

item.Fetch();
item.Get("num");
// -> [1, 2, 3];

item.Remove("num", 3);
item.Save();
item.Fetch();
item.Get("num");
// -> [1, 2]

コードについて

コードはNCMBMania/ncmb_xamarin: Xamarin SDK for NCMBにアップロードしています。ライセンスはMIT Licenseになります。

まとめ

今回紹介した SetIncrementAddAddUniqueRemove はすべてサーバ側で処理を行います。同時に複数箇所から更新をかける際に、上書きを避けられるので便利です。ぜひ使いこなしてください。

中津川 篤司

中津川 篤司

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