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

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

C#用NCMB SDK(非公式)の使い方(リレーション)

f:id:mbaasdevrel:20200710131602p:plain

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

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

ここでは現在開発中のC#用SDK(コミュニティSDK)の使い方を紹介します。今回はリレーションの使い方について解説します。

インストールについて

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
    データストアのリレーション

リレーションの保存

リレーションを利用する際には NCMBRelation オブジェクトを作成し、そこにNCMBObjectを追加してください。追加するNCMBObjectはすべて同じクラスである必要があります。

var item1 = new NCMBObject("RelationTest");
item1.Set("name", "item1").Save();
var item2 = new NCMBObject("RelationTest");
item2.Set("name", "item2").Save();

var relation = new NCMBRelation();
// NCMBObjectを追加
relation
  .Add(item1)
  .Add(item2);

var item3 = new NCMBObject("RelationMaster");
item3.Set("relation", relation).Save();

リレーションの取得

リレーションのデータを取得する場合は、リレーションで連結しているクラスを指定してクエリを実行します。ポインターとはデータの取得方法が異なるので注意してください。メソッドは RelatedTo を使います。

var query = new NCMBQuery("RelationTest");
var items = query
  .RelatedTo(item3, "relation")
  .FetchAll();

リレーションから削除

リレーションから特定のオブジェクトを削除する場合は Remove メソッドを指定します。

relation = new NCMBRelation();
relation.Remove(item1);
item3.Set("relation", relation).Save();

注意点

前述の通り、リレーションで指定できるNCMBObjectはすべて同じクラスでないといけません。また、追加と削除を同時に実行できません。

コードについて

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

まとめ

NoSQL型のデータベースではリレーションの利用は一般的ではありません。ただ、ユーザデータやデータストアの相互連携には必要な機能でしょう。ぜひリレーションの使い方をマスターしてください。

中津川 篤司

中津川 篤司

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