ニフクラmBaaSお役立ちブログ

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

ニフクラ mobile backendをExcelから使えるようにするクラスモジュールの紹介(データ保存)

https://cdn-ak.f.st-hatena.com/images/fotolife/m/mbaasdevrel/20171212/20171212211755.png

ニフクラ mobile backendを仕事で使っている場合、どうしても手放せないのがExcelではないでしょうか。クラスデータをダウンロードしてExcelで分析したり、マスターデータになるクラスへデータ登録を行う前にExcelでメンテナンスしているかも知れません。

そこでExcelからニフクラ mobile backendを直接操作できるように、マクロライブラリを作成しています。今回はデータの簡単な保存方法について紹介します。

動作対象

このマクロはWindows 10のMicrosoft Office 2016で開発しています。それ以外の環境で動作する保証はありません。なお、HMAC SHA256を使っているので、 .NET 3.5 をインストールする必要があります(via Windows10にしたらVBAから.Net Frameworkが使えなくなった - Qiita)。

使い方

簡単な使い方です。Dataというデータクラスを作ってデータを保存しています。

Dim ApplicationKey As String
Dim ClientKey As String
ApplicationKey = "YOUR_APPLICATION_KEY"
ClientKey = "YOUR_CLIENT_KEY"

Dim ncmb As clsNCMB
Set ncmb = New clsNCMB
ncmb.ApplicationKey = ApplicationKey
ncmb.ClientKey = ClientKey

Dim dataClass As clsDataStore
Set dataClass = ncmb.dataStore("Data")

Dim dataItem As clsDataItem
Set dataItem = dataClass.newData
dataItem.Field "message", "Hello World"
If dataItem.Save() Then
    Debug.Print ("保存できました")
Else
    Debug.Print ("保存失敗")
End If

クラス構造

現在、下記のクラスがあります。

  • clsNCMB
  • clsRequest
  • clsDataStore
  • clsDataItem
  • clsError

clsNCMBを初期化して開始します。VBAではインスタンスの初期化をしながら引数を渡すことができないので、アプリケーションキーとクライアントキーを別途渡す必要があります。

後は ncmb.dataStore メソッドでデータストアのクラスを作成します。その後、dataStore.newData を使って新しいデータを作成します。

外部ライブラリ、参考情報

外部ライブラリとして、

が使われています。

また、ソート処理についてVBAでDictionary(連想配列)を辞書順にソートする - Qiitaのコードを使わせてもらっています。SHA256によるハッシュ化はjavascript - Base64 HMAC SHA1 String in VBA - Stack Overflowのコードを参考にしています。

最後に

やはり問題になるのは署名処理になるでしょう。また、VBAはクラスの概念が特殊だったり、配列や連想配列の扱い勝手がよくありません。しかし、そこさえ乗り切ってしまえば、後はデータをクラウドにアップロードしたり、逆にダウンロードするのが簡単になります。ぜひ業務でお役立てください。

コードは goofmint/ncmb-excel: NCMBのExcel用クラスモジュールです。 にアップロードしてあります。

中津川 篤司

中津川 篤司

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