IoTについて、全体像が見えない議論が多い気がしてきた。
そこで、まず、IoTと、これら周辺を取り巻くビッグデータ,CEP,機械学習,SDN等の全体像をまとめてみた。以下の図になる。

以下、説明
■従来システム
○ブラウザ・アプリ
従来システムは、PCはブラウザ、スマホやタブレット等のモバイルではアプリ(を稼動させる環境)によって、端末からデータがサーバー側に送られる。サーバー側では、データを処理加工して、その結果をRDBに蓄える。
ブラウザではHTML5+Javascriptでアプリケーションが作成され、
端末側はHTML5+Javascript、Javascript(Android),Objective-C,swift(ios)等が使われる。
HTML5で、スマホ、PC,どれにでも対応することが「レスポンシブウェブデザイン」であり、これら端末、さらにGoogleグラス、アップルウォッチ等のウェアラブルも含めて、様々なデバイスが、クライアント側に存在しても大丈夫なようにすることが「ユビキタス」となる。
○サーバーサイド
各種端末から送られてきたデータは、サーブレット等のサーバーサイドのプログラムによって処理され、データベースに格納される。
サーバーサイドのプログラムは、Java,PHP,Python,node.js様々な言語で、フレームワークを利用して記述され、
(トランザクションが重要なので)RDBによって格納される
■IoT
○デバイス
センサーデータを入力し、ネットワーク上にデータを流すまでの処理を行う。ボード上で行うものも多い。
センサーデータは、アナログまたはデジタル信号であり、
この信号をポートから受信し、OS等で利用できるようにする「デバイスドライバ」と
デバイスドライバからの信号をもとに、データを送信する通信部分に分かれる。
(この間にOSが入る場合、入らない場合がある)
Windowsにおいて、デバイスドライバ部分はWindowsPK,通信部分はWindowsSDKにより記述する。
○データ収集
センサーデータは、多くの地点から、短時間に発せられることがあり、このデータをデータウェアハウスで
直接反映させることは難しいので(データウェアハウスは挿入・更新に弱い)、いったんデータを保存する
処理を行う。この処理をデータ収集とここでは呼んでいる。リアルタイムストリーム処理と呼ばれるものの
一つの分野である(残りの分野はCEP,機械学習の一部)
データは、上述のとおり、データウェアハウスには格納しにくく、RDBでは無駄があるので、NoSQL
やインメモリで処理される。
○CEP
1つないしいくつかのセンサーデータ(ウィンドウ)をもとに、異常がおきているなどを判断し、
その旨を通知する等の、ストリームデータを元に処理を行うもの。リアルタイムストリーム処理の
一つの分野である。
○機械学習
CEP同様、センサーデータ(ウィンドウ)をもとに、異常がおきているなどを判断するが、
その判断のアルゴリズムが良く分からないときなどに利用する(分かるのであればCEPでよい)
大きく2つの分野がある。
1つは、大量のデータを使って、学習をする分野
もう一つは、学習結果と、センサーデータをもとに、異常等が起きているか判断する分野
後者の判断する部分は、リアルタイムストリーム処理となるが、前者の学習部分は、
リアルタイムストリーム処理でも良いし、データウェアハウスのデータを利用しても良い。
■ビッグデータ解析
○データ蓄積
ビッグデータを扱うデータウェアハウスは、検索スピードは高いが、編集によわい(時間がかかる)
そこで、従来型のOLTPはRDBに、センサーデータはNoSQL等にいれ、定期的にバッチで
データウェアハウスに更新をかける。ここではそれを「データ蓄積」と呼んでいる。
○オープンデータ収集
天気情報などは、データ解析を行う場合に必要になる。このような、データがオープンになっていて、
解析に必要なものは、あらかじめ取得しておく。ここではそれを「オープンデータ収集」と呼んでいる。
○データ解析
データウェアハウスを検索して、対象データを取得し、処理加工(統計処理も含まれる)する。
○可視化
データウェアハウスで解析した結果を、見やすいようにグラフ化したりする。
■ネットワーク
○既存ネットワーク+一部SDN
上記をつなぐのにネットワークが必要。有線、無線/ REST,MQTT・・・様々あり、
特に、過去のセンサー、機械の通信を生かすのであれば、シリアル(RS-232C)などにも
対応しないといけなくなる。
複数のネットワークが入り乱れ(192.168が様々なネットワークに違ったドメインで現れ)
それらの通信品質はいろいろである。これら通信品質を確保しながら、ネットワーク間で
調節するには、ソフトウェアで柔軟にネットワークを定義する(SDN)必要があると思われている。
今回は概要。
今度機会があったら、具体的な製品を書きたいと思う。