My-IoT開発概要

My-IoTは、利用者がMy-IoTエッジ上で動作する 「エッジアプリケーション」 と、My-IoTクラウド上で動作する 「クラウドアプリケーション」 を組み合わせてシステムパッケージを作成、システムを構築します。
開発者は、このエッジアプリケーションとクラウドアプリケーションを開発し、My-IoT上で公開することができます。

My-IoTアーキテクチャ

My-IoTで構築できるシステムの基本的なアーキテクチャとしては、エッジアプリケーション、クラウドアプリケーション、My-IoTデータストアの3つから構成されます。
エッジアプリケーションでデータをMy-IoTデータストアに送信して蓄積し、クラウドアプリケーションでMy-IoTデータストアに蓄積されたデータを利用して解析や各種処理を行うようなアーキテクチャとなります。

my-iot-arch

そのほかにもクラウドアプリケーションからエッジ方向への制御データなどの送信や、エッジアプリケーションだけの構成、複数種類のエッジアプリケーションとクラウドアプリケーションからなる構成なども可能です。

アプリケーションの公開範囲

公開されているアプリケーションは、テナントに関わらず全てのユーザーが共通で使用することが可能です。

IoTストア

IoTストアは、My-IoTを利用するためのWebアプリケーションです。
ブラウザでIoTストアにアクセスすることで、利用者はMy-IoTエッジの管理やIoTシステムの構築を行うことができます。
開発者は、IoTストアに公開されるアプリの登録や管理を行うことができます。

My-IoTデータストア

My-IoTデータストアとは、My-IoTクラウド上に存在するテナントIDごとのデータベースです。
AWS上のAmazon Elasticsearch Serviceを基にしており、エッジアプリケーションやクラウドアプリケーション、APIを通じてデータを蓄積、利用することができます。

エッジアプリケーション

エッジアプリケーションとは、My-IoTエッジ上にインストールされ動作するアプリケーションのことです。
エッジアプリケーションは、Node-REDで構築されたNode-REDフローと呼ばれるアプリケーションと、その他スクリプトなどのコンポーネントから構成されています。

edge_app

開発者は、My-IoTエッジ上でエッジアプリケーションの開発を行うことができます。

Node-RED

Node-REDとは、フローベースドプログラミングツールと呼ばれ、ブラウザ上のエディタでプログラムを開発することのできるツールです。
Node.js上で実行環境が構築されており、ブラウザ上でノードと呼ばれるパーツを組み合わせて、フローと呼ばれるアプリケーションを作成することができます。
Node-REDについての詳細は、 Node-RED日本ユーザ会 を参照してください。

インストール / アンインストールスクリプト

エッジアプリケーションのインストール / アンインストール時に動作させるスクリプトです。
センサーのドライバをエッジアプリケーションと同時にインストールを行いたい場合などに使用します。
スクリプトはシェルスクリプト形式で記述します。

開始 / 停止スクリプト

Node-REDサービスが起動/停止する際に実行されるスクリプトです。
インストールしたエッジプログラムの起動やセンサーの準備などを行いたい場合に使用します。
スクリプトはシェルスクリプト形式で記述します。

エッジプログラム

Node-REDフローと同時にインストールすることのできるプログラムです。
下記のプログラムをインストールして動作させることが可能です。

  • npmで配布されていないNode-REDのノード

  • wheel形式のPythonプログラム

  • CMakeでビルド可能なプログラム

  • ROS(Robot Operating System)プログラム

エッジプログラムとNode-REDフローを連携させて動作させることで、複雑な処理や既存のアプリケーションを利用することが可能となります。

クラウドアプリケーション

クラウドアプリケーションとは、My-IoTクラウド上にインストールされ動作するアプリケーションのことです。
クラウドアプリケーションは、My-IoTクラウドのバックエンドになっているAWS上で動作し、CloudFormationファイルとLambda関数スクリプトによって構成されています。
クラウドアプリケーションで利用できるAWSのサービスは下記のとおりです。

  • Lambda関数のデプロイ

  • LambdaからMy-IoTデータストアへのアクセス

  • LambdaからIoT Coreを利用したMy-IoTエッジへのメッセージ送信

  • API Gatewayのデプロイ

cloud_app

クラウドアプリケーションをインストールするとAWS CloudFormationによってデプロイが行われ、スタックとしてAPI GatewayやLambda関数などのリソースが作成されます。
デプロイしたLambda関数からは、My-IoTデータストアへのアクセス用Lambdaを介して蓄積されたデータにアクセスが可能です。

また、クラウドアプリケーション以外にもプロキシアプリケーションというアプリケーションを介して、API経由で直接My-IoTデータストアのデータにアクセスすることも可能です。

コネクタ

エッジアプリケーションとクラウドアプリケーションを連携するには、エッジアプリケーションで送信したデータをクラウドアプリケーションから読み出す必要があります。
My-IoTでは、さまざまなエッジアプリケーションとクラウドアプリケーションを組み合わせてシステムを構築するため、アプリケーション間で扱うデータ形式が異なっている場合は連携することができません。

この問題を解決するため、My-IoTではエッジアプリケーションとクラウドアプリケーションで扱うデータ形式を定義した、「コネクタ」という仕組みを利用します。
「コネクタ」とは、JSONスキーマによって定義されたデータ形式(インターフェース)のことです。
エッジアプリケーションが送信するデータの形式と、クラウドアプリケーションが利用するデータの形式をコネクタによって定義します。
コネクタをアプリケーションに設定することで、同じコネクタを使用しているアプリケーション同士で共通してデータを扱うことが可能となり、システムを構築することが可能になります。

エッジアプリケーションやクラウドアプリケーションのみで動作する場合など、アプリケーション間での連携が必要ない場合はコネクタを使用せずにアプリケーションを開発することも可能です。

connector

システムパッケージ

システムパッケージは、My-IoTに公開されているエッジアプリケーションとクラウドアプリケーションを組み合わせたシステムの単位です。
利用者はシステムパッケージを作成することでシステムを構築することができます。
作成の際には、エッジアプリケーションとクラウドアプリケーションが同一のコネクタを使用している必要があります。

system_package

アプリケーションを開発するには

初めてアプリケーションを開発する場合は、 開発ガイド でアプリケーションの開発方法について学ぶことができます。
また、仕様ではMy-IoTのプラットフォームについての詳細や、アプリケーションの詳細な仕様について確認することができます。