Object Body のアクセス
ファイルなどの大きなデータを KiiObject に紐付けて管理することができます。このデータのことを Object Body と呼びます。
たとえば、ある動画に関するメタデータをキーと値のペアとして KiiObject に保存しつつ、実際の動画ファイルは Object Body としてこの KiiObject に紐付けた形で Kii Cloud に保存することができます。
Kii Cloud では、Object Body に対して次のような機能を提供しています。
- 中断/再開可能な転送 - ファイルを Object Body としてアップロードしたりダウンロードしたりできます。転送途中での中断と再開をサポートした方式です。この方式は Android、iOS、REST API のみでサポートしています。 - iOS では、Background Transfer と Kii Cloud SDK 共通の構成による転送の両方をサポートします。Background Transfer を使うと、ファイル転送のプロセスを OS 側に依頼することで効率的にファイルを転送できます。 
- 一括転送 - ファイルを Object Body としてアップロードしたりダウンロードしたりできます。転送途中での中断と再開をサポートしない方式です。 
- Object Body の移動 - ある KiiObject の Object Body を、他の KiiObject に移動できます。この機能は JavaScript と REST API のみでサポートしています。 
- Object Body の公開 - Object Body を Web ブラウザーから閲覧できる形で Web 上に公開できます。 
- Object Body の削除 - Object Body だけを削除することができます。キーと値のペアや KiiObject そのものは、そのまま残ります。 
各プラットフォームで利用できる機能は以下のとおりです。
| 機能 | Android | iOS | JavaScript | REST | 
|---|---|---|---|---|
| 中断/再開可能な転送 | ◯ | ◯※1 | - | ◯※2 | 
| 一括転送 | ◯ | ◯ | ◯※3 | ◯ | 
| Object Body の移動 | - | - | ◯ | ◯ | 
| Object Body の公開 | ◯ | ◯ | ◯ | ◯ | 
| Object Body の削除 | ◯ | ◯ | ◯ | ◯ | 
※1 Background Transfer による方式もサポートしています。
※2 中断/再開操作に伴うデータの分割制御をユーザープログラムで行う必要があります。
※3 Node.js より Kii Cloud SDK for JavaScript を使用する場合、Object Body のアップロードおよびダウンロードは利用できません。
Object Body についての特記事項
Object Body についての特記事項は以下のとおりです。
- 概念的には JSON ドキュメントと Object Body を 1 つの KiiObject として認識できますが、API ではキーと値のペアと Object Body は別に扱います。 - キーと値のペアを設定し、KiiObject を作成したあと、別の API を使って Object Body の作成を行います。 
- Object Body は 1 つの KiiObject に対して 1 件だけ格納することができます。複数の Object Body を格納することはできません。 - たとえば、KiiObject ごとに複数のアイコンを持つような場合、Object Body の代わりに BASE64 等のデータとしてキーと値のペアで保存する設計も選択できます。この場合、キーと値のペアの JSON 形式での表現がサイズ上限の 65534 文字を超えるとエラーになります。 - 逆に、サイズが限定されるような場合、キーと値のペアとして格納しておくと、KiiObject のクエリーによって他のデータと BASE64 データを同時に取得できるメリットもあります。 
- Object Body を持った KiiObject のキーと値のペアを更新した場合も、Object Body は元の状態を保持し続けます。