型と値

概要

Platioは、レコードに値を保存するときに幾つかの型を使用します。例えば、テキストを保存するにはString型が使われ、数値を保存するにはNumber型が、画像やビデオのような添付ファイルを保存するにはAttachment型が使われます。

Platio StudioでMiniAppを作るときには、テキスト、通貨、画像のような型のフィールドをデータポケットに追加します。Platio API プログラミングガイドにあるように、フィールドを作成すると、そのフィールドの値を保存するためのカラムが作成されます。この時、カラムの型は、フィールドの型に基いて決められます。例えば、テキストフィールドを作成すると、String型のカラムが作成されます。通貨フィールドにはNumber型のカラムが、画像フィールドにはAttachment型のカラムが作成されます。

カラムの型を確認するには、データビューアーの開発者ページを参照するか、アプリケーション定義を取得してください。

それぞれの型の値は、専用のJSON形式で表現されます。例えば、String型の値は以下のようになります。

{
  "type": "String",
  "value": "This is a string value."
}

Attachment型の値は以下のようになります。

{
  "type": "Attachment",
  "id": "ac2lzz2afdvguze5znhselxd4oe",
  "name": "photo.jpeg",
  "contentType": "image/jpeg",
  "size": 1542161
}

レコードを取得すると、これらの値がそれぞれのレコードに含まれます。レコードを作成・更新するときには、正しい形式で値を作成する必要があります。

値の集合を作るときには、カラムIDをキー、そのカラムの値を値とするオブジェクトを作成します。

{
  "values": {
    "c002c2c0": {
      "type": "String",
      "value": "Scott Tiger"
    },
    "cfe0266a": {
      "type": "Attachment",
      "id": "ac2lzz2afdvguze5znhselxd4oe",
      "contentType": "image/jpeg",
      "name": "image.jpeg",
      "size": 254179
    },
    "c915a0bc": {
      "type": "Number",
      "value": 28
    }
  }
}

特定のカラムの値を含めたくない場合には、そのカラムをオブジェクトに含めないようにします。以下の例では、c002c2c0というIDのカラムの値のみを設定し、その他のカラムには値を設定していません。

{
  "values": {
    "c002c2c0": {
      "type": "String",
      "value": "Scott Tiger"
    }
  }
}

値自体や、値の属性にnullを設定することはできません。以下のようなオブジェクトを使用するとエラーになります。

{
  "values": {
    "c002c2c0": {
      "type": "String",
      "value": null
    },
    "c915a0bc": null
  }
}

単純型

String

String型の値は、任意の文字列を表現します。

{
  "type": "String",
  "value": "String value"
}

ソート

String型のカラムでレコードをソートすると、文字列値自体で大文字小文字を区別してソートされます。

Platio式での型

文字列型になります。デフォルト値は空文字列です。

Number

Number型の値は、任意の有限な数値を表現します。整数、または浮動小数が使用できます。

{
  "type": "Number",
  "value": 123456
}

ソート

Number型のカラムでレコードをソートすると、数値自体でソートされます。

Platio式での型

数値型になります。デフォルト値は0です。

Boolean

Boolean型の値は、真偽値を表現します。

{
  "type": "Boolean",
  "value": true
}

ソート

Boolean型のカラムでレコードをソートすると、真偽値自体でソートされます。falsetrueよりも小さいと判断されます。

Platio式での型

真偽値型になります。デフォルト値はfalseです。

DateTime

DateTime型の値は、日時を表現します。JSON表現では、ISO 8601のYYYY-MM-DD'T'hh:mm:ss.sssZ形式でフォーマットされます。

{
  "type": "DateTime",
  "value": "2016-05-18T11:16:34.348Z"
}

レコードを作成・更新する時には、ISO 8601形式に加えて、POSIXタイム形式で指定することができます。

{
  "type": "DateTime",
  "value": 1510625619
}

この形式でレコードを作成・更新した場合でも、取得する時にはISO 8601形式で返されることに注意してください。

ソート

DateTime型のカラムでレコードをソートすると、日時の値自体でソートされます。

Platio式での型

日時型になります。デフォルト値はundefinedです。

Date

Date型の値は、日付を表現します。JSON表現では、ISO 8601のYYYY-MM-DD形式でフォーマットされます。

{
  "type": "Date",
  "value": "2016-05-15"
}

ソート

Date型のカラムでレコードをソートすると、日付の値自体でソートされます。

Platio式での型

YYYY-MM-DD形式の文字列型になります。デフォルト値はundefinedです。

Time

Time型の値は、時間を表現します。JSON表現では、ISO 8601のhh:mm:ss形式でフォーマットされます。

{
  "type": "Time",
  "value": "11:16:34"
}

ソート

Time型のカラムでレコードをソートすると、時間の値自体でソートされます。

Platio式での型

HH:mm:ss形式の文字列型になります。デフォルト値はundefinedです。

Location

Location型の値は、緯度と経度、省略可能な高度で、位置を表現します。すべての値は浮動小数です。

{
  "type": "Location",
  "latitude": 35.685,
  "longitude": 139.7513889,
}
{
  "type": "Location",
  "latitude": 35.685,
  "longitude": 139.7513889,
  "altitude": 54.3
}

ソート

Location型のカラムでレコードをソートすることはできません。

Platio式での型

latitude, longitude, altitudeプロパティを持つオブジェクト型になります。デフォルト値はundefinedです。

User

User型の値は、IDと名前でユーザーを表現します。

{
  "type": "User",
  "id": "uf598c3f",
  "name": "user1"
}

ソート

User型のカラムでレコードをソートすると、ユーザーの名前で大文字小文字を区別してソートされます。

Platio式での型

ユーザー名を表す文字列型になります。デフォルト値はundefinedです。

添付ファイル型

Attachment

Attachment型の値は、ID、名前、内容の形式、サイズで、添付ファイルを表現します。

Attachment型の値を作成するには、予めファイルを添付ファイルとしてアップロードし、返されたID、名前、内容の形式、サイズを使用します。

{
  "type": "Attachment",
  "id": "ac2lzz2afdvguze5znhselxd4oe",
  "name": "photo.jpeg",
  "contentType": "image/jpeg",
  "size": 1542161
}

ソート

Attachment型のカラムでレコードをソートすると、添付ファイルの名前で大文字小文字を区別してソートされます。

Platio式での型

ファイル名を表す文字列型になります。デフォルト値はundefinedです。

複合型

複合型は、内部に複数の値を持ちます。

Object

Object型の値は、幾つかのキーから値へのマッピングを表現します。単純型が内部の値として使用できます。

各Object型のカラムに対して、キーの名前とその型を定義するスキーマが存在します。Object型のカラムのスキーマを確認するには、データビューアーの開発者ページを参照してください。

{
  "type": "Object",
  "value": {
    "systolic": {
      "type": "Number",
      "value": 121
    },
    "diastolic": {
      "type": "Number",
      "value": 53
    },
    "pulseRate": {
      "type": "Number",
      "value": 66
    }
  }
}

スキーマ

アプリケーション定義を取得することでも、カラムのスキーマを取得することができます。アプリケーション定義には、スキーマを含む、カラムの定義が含まれています。

{
  "id": "cd234a8a",
  "name": "Blood Pressure",
  "type": "Object",
  "scheme": {
    "keys": [
      {
        "name": "systolic",
        "type": "Number"
      },
      {
        "name": "diastolic",
        "type": "Number"
      },
      {
        "name": "pulseRate",
        "type": "Number"
      }
    ]
  },
  "unique": false,
  "sortable": false,
  "searchable": false
}

ソート

Object型のカラムでレコードをソートすることはできません。

Platio式での型

オブジェクト型になります。各キーの値もそれぞれの型に合わせて変換されます。デフォルト値はundefinedです。

Array

Array型の値は、値の配列を表現します。配列中の各値は同じ型である必要があります。単純型、またはObject型が、内部の値として使用できます。

各Array型のカラムに対して、配列中の値の型を定義するスキーマが存在します。Array型のカラムのスキーマを確認するには、データビューアーの開発者ページを参照してください。

{
  "type": "Array",
  "value": [
    {
      "type": "Number",
      "value": 10.1
    },
    {
      "type": "Number",
      "value": 14.34
    }
  ]
}
{
  "type": "Array",
  "value": [
    {
      "type": "Object",
      "value": {
        "timestamp": {
          "type": "DateTime",
          "value": "2017-05-03T11:32:65.312Z"
        },
        "temperature": {
          "type": "Number",
          "value": 21.3
        }
      }
    },
    {
      "type": "Object",
      "value": {
        "timestamp": {
          "type": "DateTime",
          "value": "2017-05-04T11:32:65.312Z"
        },
        "temperature": {
          "type": "Number",
          "value": 18.8
        }
      }
    }
  ]
}

スキーマ

アプリケーション定義を取得することでも、カラムのスキーマを取得することができます。アプリケーション定義には、スキーマを含む、カラムの定義が含まれています。

Array型の値が単純型の値を含む場合、スキーマは以下のようになります。

{
  "id": "cd234a8a",
  "name": "Values",
  "type": "Array",
  "scheme": {
    "element": {
      "type": "Number"
    }
  },
  "unique": false,
  "sortable": false,
  "searchable": false
}

Array型の値がObject型の値を含む場合、スキーマにはそのObject型のスキーマが含まれます。

{
  "id": "cd234a8a",
  "name": "Values",
  "type": "Array",
  "scheme": {
    "element": {
      "type": "Object",
      "scheme": {
        "keys": [
          {
            "name": "timestamp",
            "type": "DateTime"
          },
          {
            "name": "temperature",
            "type": "Number"
          }
        ]
      }
    }
  },
  "unique": false,
  "sortable": false,
  "searchable": false
}

ソート

Array型のカラムでレコードをソートすることはできません。

Platio式での型

配列型になります。各値もそれぞれの型に合わせて変換されます。デフォルト値はundefinedです。

参照型

参照型は、アプリケーション内の異なるコレクションにあるレコードを参照するために使用されます。

ReferenceString

ReferenceString型の値は、レコードとそのレコード内のString型の値への参照を表現します。

各ReferenceString型のカラムに対して、どのコレクションのどのカラムを参照するかを定義するスキーマが存在します。ReferenceString型のカラムのスキーマを確認するには、データビューアーの開発者ページを参照してください。

ReferenceString型の値は、参照先のレコードを識別するための、コレクションID、レコードのID、レコードのハッシュを持ちます。さらに、参照先のレコードの特定のカラムの値を参照するために、カラムIDと実際の値を持ちます。

{
  "type": "ReferenceString",
  "collectionId": "t5957d3a",
  "columnId": "c89c762f",
  "recordId": "refo5otf6fbb2lhgnwvhbc7jg5i",
  "recordHash": "f82b820234d79d99082318996ecc1c95cace3753",
  "value": {
    "type": "String",
    "value": "String value"
  }
}

参照先のレコードが、そのカラムの値を持たない場合には、値を持ちません。

{
  "type": "ReferenceString",
  "collectionId": "t5957d3a",
  "columnId": "c89c762f",
  "recordId": "refo5otf6fbb2lhgnwvhbc7jg5i",
  "recordHash": "f82b820234d79d99082318996ecc1c95cace3753"
}

ReferenceString型の値を設定する時には、valuerecordHashの指定を省略し、type, collectionId, columnId, recordIdのみを指定することができます。valuerecordHashはサーバーで補完されます。

スキーマ

ReferenceString型のカラムが、どのコレクションのどのカラムを参照しているのかは、アプリケーション定義を取得することでも確認できます。アプリケーション定義には、スキーマを含む、カラムの定義が含まれています。

{
  "id": "cd234a8a",
  "name": "Author",
  "type": "ReferenceString",
  "scheme": {
    "collectionId": "t5957d3a",
    "columnId": "c89c762f"
  },
  "unique": false,
  "sortable": true,
  "searchable": false
}

ソート

ReferenceString型のカラムでレコードをソートすると、参照先のString型の値でソートされます。

Platio式での型

文字列型になります。デフォルト値は空文字列です。

ReferenceNumber

ReferenceNumber型の値は、レコードとそのレコード内のNumber型の値への参照を表現します。

各ReferenceNumber型のカラムに対して、どのコレクションのどのカラムを参照するかを定義するスキーマが存在します。ReferenceNumber型のカラムのスキーマを確認するには、データビューアーの開発者ページを参照してください。

ReferenceNumber型の値は、参照先のレコードを識別するための、コレクションID、レコードのID、レコードのハッシュを持ちます。さらに、参照先のレコードの特定のカラムの値を参照するために、カラムIDと実際の値を持ちます。

{
  "type": "ReferenceNumber",
  "collectionId": "t915a0bc",
  "columnId": "c002c2c0",
  "recordId": "ri5f3cykexfbkzk7ohzqm2oocni",
  "recordHash": "8b96a445815ca366aac07c70c722c9fdaa5bc932",
  "value": {
    "type": "Number",
    "value": 1234.56
  }
}

参照先のレコードが、そのカラムの値を持たない場合には、値を持ちません。

{
  "type": "ReferenceNumber",
  "collectionId": "t915a0bc",
  "columnId": "c915a0bc",
  "recordId": "ri5f3cykexfbkzk7ohzqm2oocni",
  "recordHash": "8b96a445815ca366aac07c70c722c9fdaa5bc932"
}

ReferenceNumber型の値を設定する時には、valuerecordHashの指定を省略し、type, collectionId, columnId, recordIdのみを指定することができます。valuerecordHashはサーバーで補完されます。

スキーマ

ReferenceNumber型のカラムが、どのコレクションのどのカラムを参照しているのかは、アプリケーション定義を取得することでも確認できます。アプリケーション定義には、スキーマを含む、カラムの定義が含まれています。

{
  "id": "cd234a8a",
  "name": "Author ID",
  "type": "ReferenceNumber",
  "scheme": {
    "collectionId": "t915a0bc",
    "columnId": "c915a0bc"
  },
  "unique": false,
  "sortable": true,
  "searchable": false
}

ソート

ReferenceNumber型のカラムでレコードをソートすると、参照先のNumber型の値でソートされます。

Platio式での型

数値型になります。デフォルト値は0です。

ReferenceUser

ReferenceUser型の値は、レコードとそのレコード内のUser型の値への参照を表現します。

各ReferenceUser型のカラムに対して、どのコレクションのどのカラムを参照するかを定義するスキーマが存在します。ReferenceUser型のカラムのスキーマを確認するには、データビューアーの開発者ページを参照してください。

ReferenceUser型の値は、参照先のレコードを識別するための、コレクションID、レコードのID、レコードのハッシュを持ちます。さらに、参照先のレコードの特定のカラムの値を参照するために、カラムIDと実際の値を持ちます。

{
  "type": "ReferenceUser",
  "collectionId": "td5949fa",
  "columnId": "c79bc617",
  "recordId": "rvwoel2tefbd6zgx6qxqeogl4ey",
  "recordHash": "2fbd3fb6a9b6a76e9686dbcef38ec9b08b5f6787",
  "value": {
    "type": "User",
    "id": "uf598c3f",
    "name": "user1"
  }
}

参照先のレコードが、そのカラムの値を持たない場合には、値を持ちません。

{
  "type": "ReferenceUser",
  "collectionId": "td5949fa",
  "columnId": "c79bc617",
  "recordId": "refo5otf6fbb2lhgnwvhbc7jg5i",
  "recordHash": "2fbd3fb6a9b6a76e9686dbcef38ec9b08b5f6787"
}

ReferenceUser型の値を設定する時には、valuerecordHashの指定を省略し、type, collectionId, columnId, recordIdのみを指定することができます。valuerecordHashはサーバーで補完されます。

スキーマ

ReferenceUser型のカラムが、どのコレクションのどのカラムを参照しているのかは、アプリケーション定義を取得することでも確認できます。アプリケーション定義には、スキーマを含む、カラムの定義が含まれています。

{
  "id": "cd234a8a",
  "name": "Author",
  "type": "ReferenceUser",
  "scheme": {
    "collectionId": "td5949fa",
    "columnId": "c79bc617"
  },
  "unique": false,
  "sortable": true,
  "searchable": false
}

ソート

ReferenceUser型のカラムでレコードをソートすると、参照先のUser型の値でソートされます。

Platio式での型

ユーザー名を表す文字列型になります。デフォルト値はundefinedです。