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

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

C#用NCMB SDK(非公式)の使い方(同期処理/非同期処理)

f:id:mbaasdevrel:20200710131602p:plain

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

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

ここでは現在開発中のXamarin用SDK(非公式)の使い方を紹介します。今回はデータストアの処理などで使うネットワーク処理の同期および非同期用メソッドについて解説します。

インストールについて

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

使い方

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

using NCMBClient;

初期化

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

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

var ncmb = new NCMB(applicationKey, clientKey);

同期処理について

同期処理は Save / Delete / Fetch / Find など Async が付かないメソッドとして実装しています。

var message = "Hello, world";
var item = _ncmb.Object("DataStoreTest");
item.Set("message", message);
item.Save();
var newItem = _ncmb.Object("DataStoreTest");
newItem.Set("objectId", objectId)
newItem.Fetch();
item.Delete();

非同期処理について

対して非同期処理は SaveAsync / DeleteAsync / FetchAsync / FindAsync など Async が付与されています。この場合、 async/awaitなどで制御可能です。

var message = "Hello, world";
var item = _ncmb.Object("DataStoreTest");
item.Set("message", message);
await item.SaveAsync();
var newItem = _ncmb.Object("DataStoreTest");
newItem.Set("objectId", objectId);
await newItem.FetchAsync();
await item.DeleteAsync();

データストアの検索について

データストアを検索する場合も同様です。まず同期処理での実装です。

// 文字列、数字の検索
var query = ncmb.Query("Hello");
query.EqualTo("message", "Test message").EqualTo("number", 501);

var results = query.Find();
Console.WriteLine(results[0].Get("objectId"));

非同期処理は FindAsync になります。

// 文字列、数字の検索
var query = ncmb.Query("Hello");
query.EqualTo("message", "Test message").EqualTo("number", 501);

var results = await query.FindAsync();
Console.WriteLine(results[0].Get("objectId"));

コードについて

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

まとめ

例えば会員登録処理であれば user.SignUpuser.SignUpAsync のようにメソッドを分けています。ソフトウェアやアプリの操作がネットワーク処理中はフリーズしてしまうと、とても操作性が悪くなってしまいます。非同期処理を使って快適な操作を提供しましょう。

中津川 篤司

中津川 篤司

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