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

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

Xamarin用NCMB SDKを開発しています(データストア検索編)

f:id:mbaasdevrel:20200710131602p:plain

XamarinはC#を使ったクロスプラットフォームなスマートフォンアプリ開発環境です。最近、コロナウイルス追跡アプリを作ったフレームワークとして注目されるようになりました。

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

ここでは現在開発中のXamarin用SDK(非公式)の使い方を紹介します。今回はデータストアの検索についてです。

注意点

XamarinではNuGetを使ったライブラリ管理が行えます。しかし、試してみた限りではライブラリの依存関係が解決できず、開発できませんでした。現在はiOSプロジェクトでXamarinを作っている中に組み込む形での提供になります。

ダウンロード

NCMBMania/ncmb_xamarin: Xamarin SDK for NCMBのコードをダウンロードします。Xamarinプロジェクトにて、例えばNCMBといったフォルダを作成して、その中にファイルを放り込みます。

なお、ネームスペースが ncmb_xamarin になっていますので、適宜修正してください。また、依存ライブラリとして Json.NET(Newtonsoft.Json)を追加してください。

初期化

まず最初にSDKを初期化します。

var ncmb = new NCMB("ea5...265", "fe3...615");

検索用のクエリクラスの作成

検索はクエリクラスを使います。呼び出しは次のように、検索対象のクラス名を指定して実行します。

var query = ncmb.Query("Hello");

検索条件の指定

検索条件は他のSDKと同等の名前を指定しています。メソッドチェーンで指定可能です。

query
  .equalTo("message", "Test message")
  .equalTo("number", 500);

検索の実行

検索は find メソッドで実行します。レスポンスは NCMBObject の配列です。

var results = query.find();
Console.WriteLine(results[0].get("objectId"));

検索のオペランドについて

検索に使えるメソッドは次のようになっています。

  • equalTo(string name, object value)
  • notEqualTo(string name, object value)
  • lessThan(string name, object value)
  • lessThanOrEqualTo(string name, object value)
  • greaterThan(string name, object value)
  • greaterThanOrEqualTo(string name, object value)
  • inString(string name, object value)
  • notInString(string name, object value)
  • exists(string name, bool value = true)
  • regularExpressionTo(string name, object value)
  • inArray(string name, object value)
  • notInArray(string name, object value)
  • allInArray(string name, object value)

これらを使うことで、例えば次のような条件指定が可能です。

// 配列を検索
var query = ncmb.Query("Hello");
query.inString("message", new JArray("Test message"));
var results2 = query.find();

// 数値を使った検索
var query2 = ncmb.Query("Hello");
query2.greaterThan("number", 500);
var results3 = query2.find();

// 日付を使った検索
var query3 = ncmb.Query("Hello");
query3.greaterThan("time", DateTime.Parse("2020-07-10T08:40:00"));
var results4 = query3.find();

コードについて

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

まとめ

データストアはさらに深く検索条件を指定できますが、現時点のSDKではこれがすべてです(位置情報用のクラスなどを作れば、さらに条件を広げられます)。Xamarinは個人というよりも法人での利用が多いプラットフォームになるかと思います。企業内、クライアント案件などでニフクラ mobile backendを使う際にはぜひXamarin SDKをお試しください。

中津川 篤司

中津川 篤司

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