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

ポインターの保存

ポインターを利用する際には、オブジェクトをそのままデータストアにセットして保存してください。

var item1 = new NCMBObject("QueryTest1");
item1.Set("message", "Test message");
item1.Set("number", 500);
await item1.SaveAsync();

var item2 = new NCMBObject("QueryTest2");
item2.Set("message", "Test message");
item2.Set("number", 500);
item2.Set("obj", item1); // ← オブジェクトを適用
await item2.SaveAsync();

ポインターの取得

ポインターのデータを取得する際には Include メソッドを使います。

var query = new NCMBQuery("QueryTest2");
query
    .EqualTo("objectId", item2.Get("objectId"))
    .Include("obj");
var obj = await query.FetchAsync();

そうすると obj カラムの返却値がNCMBObjectになります。

obj.Get("objectId") == item2.Get("objectId");
// => true
var item3 = (NCMBObject) obj.Get("obj");
item3.Get("objectId") == item1.Get("objectId");
// => true

ポインターを使うことでデータストアをRDBMS風に利用できますので、ぜひお試しください。

コードについて

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

まとめ

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

中津川 篤司

中津川 篤司

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