SamsungのSAMIは,IoTデバイスのデータの送受信と保管を行うためのデータ駆動開発(Data-driven Development/D3)プラットフォームだ。任意のデバイスが送信するさまざまな形式のデータを,JSON形式に正規化し,クラウド内にストアする。ストアされたデータは,他のデバイスから要求することが可能だ。
SAMIは次のような概念で動作する。
- デバイス – センサや家電製品,アプリケーション,サービスなど,任意のデータソース。
- デバイスタイプ – Samsung Galaxy Gear Fitなどといった,デバイスのカテゴリ。
- デバイスID – デバイスインスタンスに関連付けられたユニークなID。
- メッセージ – デバイスからSAMIへ,あるいは他のデバイスに送信されたデータと,それに関連付けられたメタデータ。
- 認証 – SAMIはユーザ認証にOAuth2を使用する。
- マニフェスト – データ正規化に使用される,デバイスタイプ毎のデータインタプリタ。マニフェストには,シンプルなsimple manifestと高度なadvanced manifestの2種類がある。前者はWeb形式で生成されて,SAMIに送信されるJSONデータを解釈するために使用されるもので,後者はGroovyスクリプトとして記述される。後者にはSamsungによる認証が必要で,悪質な処理を試みるものや,メモリリークのあるものなどは拒否される。
ストアされたデータは,RESTあるいはWebSocket APIコールを使って要求する(API仕様)。現時点ではデバイス毎,ユーザ毎,アプリケーション毎に,APIコール数の制限が設けられている。
SAMIプラットフォームでは,さまざまなツールを開発者向けに提供している。Developer Portal – デバイスタイプおよびアプリケーションを作成するための,Webベースのインターフェース,User Portal – デバイスの登録やデータ可視化を行うためのユーザ用ツール,API Console – APIをコールするオンラインツール,Device Simulator – SAMIにシミュレーションメッセージを送信するコマンドラインツール,などだ。
SamsungはSAMIの使い方を示すために,AndroidやiOS,Node.js,Arduino,あるいはブラウザ(JavaScript)用のシンプルなアプリケーションを数多く公開している。Java/Android, Objective-C/iOS, PHP, Python, Rubyを使ったアプリケーション開発を支援するSDKも多数提供されている。