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

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

"モノのインターネット(IoT:Internet of Things)"の基盤技術は、なぜJavaであるべきなのか? 実際にデバイス・サイドとサーバ・サイドを連携させたデモ・システムを実装したエンジニアの声を聞いてみよう。

IoTで本領を発揮するJavaの"Write Once, Run Anywhere"

 日本オラクルは2013年12月19日、「Javaが拓く"Internet of Things"の可能性」と銘打ったセミナーを都内で開催した。本企画では、その内容を2回にわたってリポートしながら、"モノのインターネット(IoT:Internet of Things:IoT)"を支えるIoTプラットフォームとしてのJavaおよびオラクルのテクノロジーの有効性を考察している。後編となる今回は、IoTプラットフォームとしてのJavaの可能性をデバイス・サイドから見てみよう。併せて、IoTサービスの実装におけるJava/オラクル・テクノロジーの利点を、セミナーで披露されたデモの内容を基に掘り下げてみたい。

 「多種多様なモノ(デバイス)をインターネットに接続し、新たなサービス、産業、あるいは社会基盤を形成する」──IoTのコンセプトは、このように極めてシンプルだ。このコンセプトの下では、インターネットへの接続対象となるデバイス/機器に制限や制約はない。PCやスマートフォン、タブレットといった情報端末はもちろん、ありとあらゆるデバイスがIoTの環境に取り込まれることになる。


日本オラクル Java Embeddedグローバル・ビジネス・ユニット シニアセールスコンサルタントの阿部修英氏

 「その世界は、まさに"Write Once, Run Anywhere"、つまり『一度書いたプログラムは、どこでも動かせる』というJavaの強みがフルに発揮される世界です」と語るのは、日本オラクルの阿部修英氏(Java Embeddedグローバル・ビジネス・ユニット シニアセールスコンサルタント)である。氏は今回のセミナーで、「Javaにより加速するInternet of Thingsサービス」と題した講演を行った。講演の主なテーマは、IoTサービス・プラットフォームとしての"組み込みJava(Embedded Java)"の有用性だ。説明を行うにあたり、阿部氏はデバイス・サイドから見たIoTサービス・プラットフォームの要件として、次の4点を挙げた。

  • 多種多様なデバイスに向けたサービス開発が可能であること
  • エンド・ツー・エンドでのセキュリティを確保できること
  • 長期にわたる製品ライフサイクルを実現すること
  • オフライン・モードでの稼働を可能にすること

 阿部氏によれば、これらすべての要件に適合するのが組み込みJavaのプラットフォームである。例えば、組み込みJavaはすでに多くのデバイス/機器で利用されており、さまざまなハードウェア上の制約に柔軟に対応できることが実証されている。

 また、Javaの場合、エンド・ツー・エンドでセキュリティを確保できるほか、組み込みシステムにおける「マルチアプリケーション実行基盤/モジュール化技術」としても高い実績を誇る。

 こうしたJavaの特性を生かすことで、デバイス/ハイテク機器メーカーは組み込みシステムのライフサイクルを長期化したり、コア・モジュールの開発に注力したり、セキュリティ・サービスのモジュール化と共有化を実現したりすることが可能になると阿部氏は説明する。

 加えて、Javaの場合は「ロジックを隠蔽」することにより、ネーティブ・ソフトウェア資産(デバイスにネーティブな言語で開発されたソフトウェア資産)を再利用することができる。そのため、メーカーは適材適所でネーティブ・ソフトウェア資産の活用を進めながら、Javaへの段階的な移行を図ることができるのだ。

 さらに、Javaには高い表現力を備えたユーザー・インタフェース(UI)の開発を簡素化するフレームワーク「JavaFX」や、JavaFXを使ったアプリケーションの開発も可能な開発環境「NetBeans」が用意されている。これらを使うことで、ハイエンド・デバイスに向けたリッチ・コンテンツから小型デバイスに向けたソフトウェアまで、広範な組み込みシステムを効率的に開発することが可能となっているのだ。

Raspberry PiとEmbedded OEP、Oracle Coherenceを使い、スマートフォンの状態をリアルタイムに可視化

 これまで見てきたように、オラクルは現在、"Write Once, Run Anywhere"というJavaのポータビリティ/デバイス非依存性をフルに生かしたIoTプラットフォームにより、IoT環境の進化と変革を牽引しようとしている。そうしたオラクルのIoTプラットフォームが具体的にどのようなものかを示すために、今回のセミナーではIoTサービスのサンプル実装とデモが披露された。

 このデモ・セッションを担当したのは、日本オラクル 製品戦略事業統括本部 ISV/OEM営業本部に所属する鮏川哲生氏と鈴木浩司氏である。両氏のデモの内容は、「スマートフォンに搭載された加速度センサーなどの情報をリアルタイムに収集してフィルタリングし、スマートフォンの"傾き"などの状態をサーバ・サイドでグラフィカルに表示する」というもの。デモで使われたIoTシステムは、大きく次の3つの要素で構成される。

  • Android端末(スマートフォン)に搭載されたセンサーの情報を収集する「センサー・デバイス」
  • ARMプロセッサ・ベースのボード・コンピュータ「Raspberry Pi」上に構築された「ゲートウェイ(GW)サーバ」
  • 「上位サーバ(イベント処理/アプリケーション・サーバ)」

 このうち「上位サーバ」には、前編で紹介した複合イベント処理基盤「Oracle Event Processing(OEP)」とメモリグリッド「Oracle Coherence」が使われており、GWサーバにはOEPの組み込み版である「OEP for Java Embedded(Embedded OEP)」が使用されている。

 なお、Embedded OEPをRaspberry Pi上にセットアップする作業は非常に簡単に行える。基本的には、組み込みJavaスイートの「Oracle Java Embedded Suite」と「Oracle Event Processing for Oracle Java Embedded(Embedded OEP)」をオラクルのサイトからダウンロードし、展開するだけで作業は完了だ。

 また、上記のシステム構成の中で実装されたデータ処理フローは次のようになる。

(1)スマートフォンのセンサーから、OSが提供するSensor APIを使用して「加速度」と「傾き角度」という2タイプの生データ(RAWデータ)を取得し、GWサーバのEmbedded OEPに(Socket通信で)送信する

(2)GWサーバのEmbedded OEPにより、RAWデータから「有意なデータ」をリアルタイムに抽出するための処理(フィルタリングやデータ整形といった処理)を実行する

(3)GWで抽出した「有意なデータ」に対し、上位サーバのOEPを通じて「意味抽出(ビジネス・イベント・データの抽出)」のための処理(パターン・マッチングや相関分析)を行う

 今回のデモでは、この一連のフローで抽出したデータを、JavaFXを使ってグラフィカルに可視化し、ユーザーが携帯するスマートフォンの傾き具合などをリアルタイムに示して見せた。