C#で作られているSDKとしてはUnity SDKがありますが、Unity以外の環境では利用できません。そこで有償のテクニカルサポートは提供していませんが、コミュニティSDKとしてC# SDKを開発中です。こちらは純粋なC#で作られており、Xamarinや.NETアプリケーション開発に利用できます。
今回はこのC# SDKを使って、CLIアプリケーションを開発してみました。
ベースを作成する
ベースになるコードはVisual Studioのウィザードに沿って勧めていきます。
今回のプロジェクト名は NCMB_CLI
としています。生成されたコードは次のような形になるでしょう。対象のフレームワークは.NET Core 3.1としています。
using System; namespace NCMB_CLI { class Program { static void Main(string[] args) { Console.WriteLine("Hello world"); } } }
C# SDKの追加
NuGetの管理を使って、NCMBClient を追加します。
さらにコマンドラインのオプションをパースする CommandLineParser
を追加します。
コマンドラインオプションの作成
コマンドラインオプションは Options.cs
というファイルを作成して記述します。今回は a/c/m 、3つのパラメータを指定可能としています。
パラメータ名 | 内容 |
---|---|
a | NCMBのアプリケーションキー |
c | NCMBのクライアントキー |
m | データストアに保存するメッセージ |
using System; namespace NCMB_CLI { public class Options { public Options() { } //String型のオプション [CommandLine.Option('a')] public string ApplicationKey { get; set; } //String型のオプション [CommandLine.Option('c')] public string ClientKey { get; set; } //String型のオプション [CommandLine.Option('m')] public string Message { get; set; } } }
メインのコード
メインファイルでは NCMBClient と CommandLineParser、そして非同期処理用に System.Threading.Tasks を読み込みます。
using System; using NCMBClient; using CommandLine; using System.Threading.Tasks;
Main関数について
Main関数では、まずコマンドラインオプションを読み込みます。
var options = new Options();
CommandLine.Parser.Default.ParseArguments<Options>(args)
.WithParsed<Options>(opts => options = opts);
その読み込んだ内容でNCMBClientを初期化します。
new NCMB(options.ApplicationKey, options.ClientKey);
Main関数ではasync/await が扱えないので、次のように記述します。
Save(options.Message).Wait();
Save関数について
Save関数はasync/awaitが扱えます。
internal static async Task Save(string message) { try { // この中に記述 } catch (Exception ex) { Console.WriteLine(ex); } }
まずNCMBObjectを用意します。
var obj = new NCMBObject("Hello");
引数で指定したメッセージを受け取ります。
obj.Set("message", message);
awaitで保存処理を待ちます。
await obj.SaveAsync();
保存処理完了のメッセージを出します。
Console.WriteLine("Save successful."); Console.WriteLine(obj.Get("objectId").ToString());
コードの全体像です。
namespace NCMB_CLI { class Program { static void Main(string[] args) { var options = new Options(); CommandLine.Parser.Default.ParseArguments<Options>(args) .WithParsed<Options>(opts => options = opts); new NCMB(options.ApplicationKey, options.ClientKey); Save(options.Message).Wait(); } internal static async Task Save(string message) { try { var obj = new NCMBObject("Hello"); obj.Set("message", message); await obj.SaveAsync(); Console.WriteLine("Save successful."); Console.WriteLine(obj.Get("objectId").ToString()); } catch (Exception ex) { Console.WriteLine(ex); } } } }
テストする
テストを行う際には、プロジェクトのオプションを開いて、コマンドラインオプションを指定します。
この状態でビルドをするとコマンドを実行し、実際にデータが保存されるのが確認できるでしょう。
まとめ
今回はVisual Studio for macを使って開発しています。.NETはマルチプラットフォームで動作しますので、WindowsやmacOSで動作するコマンドも開発可能です。C# SDKを使って、NCMBのデータメンテナンスするコマンドを開発してください。