0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Go言語向けNCMB SDKの使い方(データストアの取り出し方)

Posted at

NCMBはモバイル向けのBaaS(mobile Backend as a Service)ですが、サーバー側のデータとNCMB上のデータを連係させたいというニーズは良くあります。

そんなときには各言語向けのSDKがあると便利です。サーバー向けにはRuby、Python、PHP、Java、C#のSDKがあります(すべて公式サポート対象外の、コミュニティSDKという位置づけです)。

新しくGo言語向けのSDK開発をはじめたので、その使い方を紹介します。今回はデータの取得方法を解説します。

ソースコード

ソースコードはGitHubにて公開しています。ライセンスはMIT Licenseになります。

NCMBMania/ncmb_go

インストール

SDKのインストールは下記コマンドで行います。

go get -u github.com/NCMBMania/ncmb_go

インポート

続けてSDKをインポートします。

import (
    "github.com/NCMBMania/ncmb_go"
)

初期化

NCMBより取得したアプリケーションキー、クライアントキーを使って初期化します。

ncmb := NCMB.Initialize("YOUR_APPLICATION_KEY", "YOUR_CLIENT_KEY")

データの新規作成

Item メソッドで新規データのインスタンスを作ります。引数はクラス名です。

item := ncmb.Item("Hello")

データの適用

アイテムに対して、データをセットします。利用できる型は string int float64 time.Time bool 配列、Mapなどになります。位置情報を扱うためのGeoPoint型もあります。

今後、NCMB独自の型(ポインターやデータストア)も使えるようにします。

hello.Set("string", "Hello, World!").Set("string2", "こんにちは")
hello.Set("number", 139.77421902)
hello.Set("boolean", true)
hello.Set("array", []interface{}{"a", "b", "c"})
hello.Set("object", map[string]string{"key": "value", "key2": "value2"})
hello.Set("null", nil)
hello.Set("date", time.Now())
geo := ncmb.GeoPoint(35.698683, 139.77421902)
hello.Set("geo", geo)

キーチェーンにも対応していますが、Go言語は改行が使えないので、多用すると見づらくなりそうです。

データの保存

保存は Save メソッドで行います。保存がうまくいっていれば、 bol = true になります。

bol, err := item.Save()

データの取り出し方

データは Get または Get〜 といったメソッドを使って取り出します。Getの場合は interface{} になるので、自分でキャストする必要があります。用意しているメソッドは次の通りです。

  • GetString(key string, defaultValue ...string) (string, error)
  • GetDate(key string, defaultValue ...time.Time) (time.Time, error) {
  • GetArray(key string, defaultValue ...[]interface{}) ([]interface{}, error)
  • GetMap(key string, defaultValue ...map[string]interface{}) (map[string]interface{}, error)
  • GetBool(key string, defaultValue ...bool) (bool, error)
  • GetGeoPoint(key string, defaultValue ...GeoPoint) (GeoPoint, error)
  • GetNumber(key string, defaultValue ...float64) (float64, error)

以下のように使います。

str, err := hello.GetString("string")
num, err := hello.GetNumber("number")
bol, err = hello.GetBool("boolean")
arr, err := hello.GetArray("array")
date, err := hello.GetDate("date")
geo, err = hello.GetGeoPoint("geo")

2つ目の引数はデフォルト値です。もし、該当するフィールドがなかったり、その値が入っていない時には、2つ目の引数を返します。2つ目の引数を指定しておけば、 errのチェックが不要になる場合はありそうです(型が違っている場合もあるので、チェック不要かと言われると難しいですが)。

str, _ := hello.GetString("noField", "なし") // -> "なし"

null の場合は Get を使ってください。

val, err := hello.Get("null")
fmt.Println(val == nil) // true

注意点

数値はすべて float64 で返ってきます。intで入れても float64 になるので注意してください。

まとめ

まだ基本的な機能しかありませんが、徐々にバージョンアップしていきます。

Go言語を使ってWebアプリケーションを開発している方は、そのデータ保存先としてNCMBを利用してみてください。

mBaaSでサーバー開発不要! | ニフクラ mobile backend

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?