データにユニークキーと名前をつける

IoTでは、様々なデータを収集しそのデータを見える化・分析して、現場の改善・改革や新規事業の開発に役立てます。そのためには、収集したデータに他と特別のできるユニークなIDが付与されなければなりません。単に数値やON/OFFなどの状態が収集されても、それがどこの何の何時のデータなのかが分からないと有効活用できないのです。

ia-cloudでは、製造業のIoTデータを構造化(階層化)し、名前をつけて、タイムスタンプを打って、格納するためのデータ構造モデルを定義しています。ちょっと難しいかもしれませんが、基本中の基本なので理解しておいてください。ia-cloudのデータの塊をia-cloudオブジェクトと呼び、このオブジェクトの中に複数の名前付きのデータを格納できる構造になっています。

  • ia-cloudオブジェクト
    • objectKey(オブジェクトに与えたユニークなキー名称)
    • objectDescrption(オブジェクトに関する任意の説明)
    • timestamp(そのオブジェクトが生成された時刻)
    • objectContent(データの塊を入れる箱)
      • contentType(仕様書で決められたデータモデルのタイプ)
      • contentData(複数の収集データの配列)
        • dataName:データ名称, dataValue: データの値, unit: 単位(個別の収集データ)
        • dataName:データ名称, dataValue: データの値, unit: 単位(個別の収集データ)
        • 複数のデータが記述できる・・・・・

ia-cloudで扱うデータは原則として、データ名称(dataName or commonName)、データの値(dataValue)、単位(unit)で構成されます。無単位のデータの場合は単位は省略されることがあります。このデータが複数配列となって、ia-cloudオブジェクトのcontentDataを構成しています。この構造は、さらに階層化ができ複雑なデータ構造を記述できるようになっています。詳細を知りたい場合はGithub上の、ia-cloud Web API仕様書を参照してください。

ia-cloudのサービスやNode-REDのia-cloudカスタムノードを使用する上では、ia-cloudオブジェクトは、ユニークキーとタイムスタンプ

  • objectKey
  • timestamp

で特定され、そのオブジェクトに格納されたデータは、データ名称

  • dateName

で区別されることを覚えておいてください。データベースやデータ処理において、データの衝突が起きないようにそれぞれのアプリケーションでユニークな命名をすることはもちろん、複数のアプリケーションや複数のユーザ間での連携も考慮するとユーザの特定ができる命名規則も必要になります。ia-cloudプロジェクトが実施しているハンズオンワークショップでは、各参加ユーザに個別のユーザIDを付与し、このユーザIDをobjectKeyの接頭詞として使用するようにしています。

広く、全世界でユニークな名称の付け方にURIがあります。このURI表記に従えば、グローバルに被りのない唯一のオブジェクトキーが設定できます。URI表記は、

  • 組織のドメイン.(ドット)組織内でユニークな名称

で表されます。具体的には、

  • jp.co.company.sub-domain.objectKey

のようになります。jp.co.company.sub-domain. 部分を接頭語としてオブジェクトキーを設定すると、グローバルにユニークとすることができます。ia-cloud仕様書では、これを推奨しています。お試し利用や実証実験の段階では不要ですが、組織が判別できる接頭語はつけた方が良いでしょう。