[MBaaS][Data Store] Parseで簡単モバイルバックエンド構築 – 【データストア基本】

2014.04.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Data Store概要

Parseでは通常のRDBと同じような型を持ったデータを使って、データストアとして使うことが出来ます。
無料で使えるStorageの容量は1GBとなっています。
スクリーンショット 2014-04-20 15.33.03

概要はこちら - Data & Security
概念としてはほぼ同じなので分かりやすいのですが、一部特殊なデータの型があるため、少しだけ注意が必要です。

クラス

RDBでテーブルに相当するものは、Parseでは「クラス」と呼ばれます。
デフォルトで便利なクラスもいくつか用意されています。

スクリーンショット 2014-04-20 14.43.52

Custom

Class names must only contain numbers, letters, and underscore, and can only begin with a letter.

汎用クラス。データを保存する場合はこれを使って好きなデータ定義を作りましょう。
クラス名には数値、文字、アンダースコアが使える模様

User

The User class is a special class that can be authenticated, allowing users of your app to log in, sign up, and more.

ユーザーを管理するテーブルを作ります。主にユーザー認証に使います。
サインアップ、ログインすると自動的に作られます

Installation

The Installation class is a special class that stores push notification subscriptions for each device running your app.

Push通知を使う時に端末情報を管理するテーブルはこちら

Role

The Role class is a special class that allows you to specify groups of users with shared permissions.

ユーザーをまとめてグループとして管理するテーブルはこちら

Product

The Product class is a special class that stores your in-app product data.

プロダクトのデータを保存する・・・?

デフォルトで初めから設定される項目

これらのクラスは共通して以下のカラムを持つことになります。(生成時に強制的に作成される)
これらは変更、削除ができないカラムなのでご注意あれ。カラムの細かい説明は次項にて。

objectId

アイテムひとつひとつに割り当てられる一意なKey。文字列型。Hash値のようなランダムな値になります

createdAt

生成日時。Date型。アイテムが生成された日時が格納されます

updatedAt

更新日時。Date型。アイテムが更新された日時が格納されます

カラム

クラス内に定義されるデータは「カラム」と呼ばれます。
利用できる基本的なデータの型は次の通り。
基本的にParseのデータストアで扱うのはほとんどJSONになっていますが、型を利用して割と厳格に縛られているので意外と安全(な気がします)

スクリーンショット 2014-04-20 14.44.46

String

文字列型。基本的にどんな文字列でも入る模様。

Number

数値型。負数や小数点の値も含めて四則演算できる数値などはこの型で格納するのが良い模様。

Boolean

真偽値。

Array

配列型。配列はJSONの配列となるようです。それ故中身の型はまた別

Object

オブジェクト型(JSONで表記される模様)。汎用的なオブジェクト型。
JSONで表現できる範囲でカスタムデータの定義が可能のよう

Date

日付型。JSONで表現されます。Localeなどの情報と共に各種日付に関するデータが格納されます。

Bytes

バイト型。小さめのバイナリデータのbyte配列

File

ファイル型。巨大なファイルのバイナリデータを保存する型。
これはFileを保存したデータへのPointerとなるため、実体がここに格納されるわけではない模様。

Null

Null

その他ちょっと特殊な型。この辺は次回細かく

  • ACL: オブジェクトの権限(JSON)
  • Pointer: オブジェクトへの関連付け。1:多の対応付けできるデータに対応
  • Relation: オブジェクトへの関連付け。多:多の対応付けできるデータに対応

データの作り方

クラスなどのデータ定義の作り方はブラウザのData Browserから行うのが楽です。基本的にクラス名は大文字始まり, カラム名は小文字始まりがお作法のようです。
さらに複数の単語でなる名称は「createdAt」のようにキャメルケースで表記するのが正しいようです

スクリーンショット 2014-04-20 14.02.29

作ってみる

Blogエントリーとしてデータ格納するクラスを作成してみます。
少々乱暴ですがこんな定義にしてみます。
entryデータ定義

「New Class」をクリックします

スクリーンショット_2014-04-20_14.04.50

「Custom」を選択します。「Entry」というクラス名にします

スクリーンショット 2014-04-20 15.03.38

追加されました。
スクリーンショット 2014-04-20 15.04.29

カラムの追加

Entryクラスに必要なデータを追加していきます。「+ Col」をクリックします
スクリーンショット_2014-04-20_15.06.20

「title」を追加します。Typeを「String」で選択し、Nameを「title」にします
スクリーンショット 2014-04-20 15.07.45

「Create Column」をクリックすると追加されます
スクリーンショット_2014-04-20_15.09.27

残りのデータもそれぞれ作っていきます
スクリーンショット 2014-04-20 15.12.38

これでデータの定義は完成しました。

アクセスすることが可能に

データ定義を作っただけですが、Parseではこの時点ですでにREST APIによって基本的なデータのCRUD操作が可能になっています。

今回作成したクラスは「Entry」という名前なのでURLを作成すると以下のとおりです

  • POST : https://api.parse.com/1/classes/Entry
    データを新規作成
  • GET : https://api.parse.com/1/classes/Entry/【objectId】
    指定したobjectIdのデータを取得
  • PUT : https://api.parse.com/1/classes/Entry/【objectId】
    指定したobjectIdのデータを更新
  • GET : https://api.parse.com/1/classes/Entry
    クエリを発行してEntry内のデータを取得する(複数)
  • DELETE : https://api.parse.com/1/classes/Entry/【objectId】
    指定したobjectIdのデータを削除

これでデータのCRUDはバッチリだれでも出来ます(セキュリティは今のところガタガタですが)

まとめ

  • Parseのデータストアはクラスで定義する
  • データのカラムはそれぞれ型によって厳格に縛られる
  • データの作成、参照などはData Browserで行う
  • ちょっと特殊な型がいくつかある
  • REST APIでそのままアクセス可能

こんなもんでしょうか。
次回は、特殊な型を中心にセキュリティ方面も含めて書く予定です。その前にCloud Codeのことを書くかもしれませんが。
予定は未定

以上、Parseのデータストアの基本。

参考