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