Javaが切り開く “Internet of Things”の可能性──【後編】デモで実感! IoTプラットフォームの実装技術がJavaであるべき理由

Oracle Java & Developers編集部
2014-01-27 15:00:00
  • このエントリーをはてなブックマークに追加

OEPなら、デバイスとサーバのロジック実装がJavaで効率的に行える


日本オラクル 製品戦略事業統括本部 ISV/OEM営業本部の鮏川哲生氏

 鮏川氏によれば、一般にエンタープライズ・システムで扱うような意味のあるデータと比較して、センサーが発するRAWデータは大量でノイズが多く、しかも単体では意味をなさないことが多いという。そのため、通常は最終的なイベント処理をかける前に、何らかの処理(データのフィルタリングやサンプリング、変換など)を施し、有意なデータを抽出する。しかも、センサー・デバイス内で行える処理はあくまでも限定的であり、なおかつデバイスの種類によって異なる。そのため、オラクルのIoTプラットフォームが実現しているように、データ処理のロジックを必要に応じて柔軟に配置できることが極めて重要になる。

 また当然のことながら、処理ロジックの開発生産性も高いことが望ましく、Javaとオラクルのテクノロジーは、その要件も満たしていると日本オラクルの鈴木氏は説く。

 鈴木氏によれば、OEPを用いた処理フローの作成は非常にシンプルに行える。

 例えば、GWサーバ上の処理フローにおける中核コンポーネントは「アダプタ」と「チャネル」、「プロセッサ」、および「リスナ」の4種類である。このうち、センサーからのデータ入力を受け付けるのがアダプタ・コンポーネントであり、同コンポーネントは受け付けたデータをチャネル・コンポーネント経由でプロセッサ・コンポーネントに渡す。プロセッサ・コンポーネント上ではCQL※1による「イベント判定」が行われ、その結果として「有意のデータ」が抽出される。このデータがリスナ・コンポーネント経由で上位サーバへと伝達される仕組みだ。

※1 CQLはContinuous Query Languageの略称。ストリーム・データのためのクエリ言語(SQL拡張)としてANSI標準化が検討されている。これについては前編の記事も併せて参照されたい。


日本オラクル 製品戦略事業統括本部 ISV/OEM営業本部の鈴木浩司氏

 鈴木氏らは、この一連のフローを構成するために、まずセンサーから送られてくるデータをPOJO(Plain Old Java Object)として定義し、Socket通信でセンサー・データを受信するアダプタ・コンポーネントをJavaで作成した。具体的には、Socket通信用のコードと、受信データをJavaオブジェクト化するコードを記述した。

 一方、プロセッサ・コンポーネントにおける「イベント判定」とは、CQLによる「集計」、「フィルタリング」といった処理を指す。「例えば、特定ユーザーの加速度センサーの値について、3秒ごとに平均値を算出するといった処理を記述しています」と鈴木氏は説明する。

 このように、GWサーバの処理フローを実装する際には、相応のコーディングが必要となる。ただし、上位サーバの処理フローの作成では、その手間を大幅に軽減できる。なぜなら、上位サーバとGWサーバの処理フローに大差はなく、GWサーバ上に実装したCQL/Javaコードを、上位サーバの処理フローにほぼそのまま適用できるからだ。追加したJavaコードは、CQLによるイベント判定で抽出したデータ(ビジネス・イベント・データ)をOracle Coherenceのキャッシュに格納する処理だけであったという。ちなみに、イベント・データをOracle Coherenceのキャッシュに格納することで、他のアプリケーションでイベント・データを活用することも可能になる。

 以上のような処理フローの実装を経験した見地から、鈴木氏はIoTにおけるデータの処理ロジックを考えるうえでの留意点として、次の3点を挙げた。

  • デバイス/GWサーバのスペック
  • デバイスとGWサーバ間、およびGWサーバと上位サーバ間のネットワーク帯域
  • データ送受の頻度(バッチ型か、リアルタイム型か)

 このうち、データ送受の頻度について言えば、バッチ型のデータ送受はログ解析などの用途に適しており、リアルタイム型の送受はパターン・マッチングによるアラート判定などに向いているという。

 また鈴木氏は、前出の鮏川氏と同様にこうも説いた。

 「IoTサービスの実装で何よりも大切なのは、さまざまな制約事項を加味しながら、処理ロジックの配置を柔軟に行うことです。それを実現する最良の方法は、Javaという単一のプラットフォームでIoTシステム全体を構成することにほかならず、今回のデモ・システムの実装を通じて、そのメリットを改めて確認することができました」

 周知のとおり、Javaはオープンなコミュニティに支えられた業界標準のテクノロジーである。その根底には、長年にわたるJavaコミュニティの知の集積があり、開発作業を効率化する標準フレームワークやツールも数多く存在する。

 しかも今後は、Java SEとJava MEとの間で言語仕様/APIの統一が進み、Java SEを使う数百万人のエンジニアのノウハウ/経験が、そのまま組み込みシステムの開発にも生かせるようになる。これにより、IoTプラットフォームとしてのJavaの有用性がさらに高まることは確実だ。そのJavaとオラクルのテクノロジーが融合することで、IoTプラットフォームはどのように進化/発展していくのだろうか。IoTを巡るJavaとオラクル・テクノロジーの今後にご注目いただきたい。