後藤弘茂のWeekly海外ニュース

Intelが「COOL Chips」カンファレンスでIoTソフトウェア戦略を説明

エクサスケールスパコンと似通うIoTの特性

IntelのMichael McCool氏

 「IoT(The Internet of Things)は、見方によっては巨大な分散コンピュータと考えることができる」。

 IntelのソフトウェアアーキテクトのMichael McCool氏(Principal Engineer, Developer Products Division, Technology Pathfinding and Innovation, Intel)は、4月14日〜16日に横浜で開催された半導体チップ学会「COOL Chips XVII」で、IoTをこのように形容した。McCool氏は、IoTの定義を、従来の組み込みとは異なり、ネットワーク接続機能を持つデバイスやモノ(Thing)とした上で、IoTの特質は5つのポイントだと指摘した。

○スケール(Scale)
○自律性(Autonomous)
○弾力性/回復性(Resiliency)
○耐久性(Durability)
○接続(Connected)

 IoTでは、特定の用途のデバイス/モノが膨大な数になる可能性があり、また、長期間に渡って利用される。そのため長期の使用に耐える耐久性と、障害から自動回復したり障害が発生したデバイスを回避してネットワークのトポロジを変化させたりなどの弾力性/回復性、そうした対応を自律的に行なう機能が重要となる。また、ネットワークコミュニケーションは、人間対マシン(H2M)だけでなくマシン対マシン(M2M)も重要となるとMcCool氏は説明する。

 その上で「面白いことに、こうした特性はエクサスケールシステム(ExaFLOPS規模の次々世代スーパーコンピュータ)と共通している」と語る。また、大規模なデータセンターやクラウド側で行なっている並列分散型の処理のいくつかの技術は、IoTに降ろしてくることができると展望した。ソフトウェアアーキテクトの視点では、IoTは自律的なコンピューティングリソースの海に見えるようだ。ただし、IoTのリソースを活かすためには、プログラミングでIoTの複雑性を隠す必要があるという。ちなみに、McCool氏はもともと並列コンピューティングなどの専門で、データ並列プログラミング言語のベンチャー、RapidMindの元共同創業者だった。

 McCool氏はIoTアーキテクチャの概念図として下のスライドを示した。Intelは現在、IoTゲートウェイに力を注いでおり、ゲートウェイ向けの開発キットなどを発表している。McCool氏はメッシュ型のトポロジで低電力で接続するための無線通信規格が重要になると説明。また、UIが使いやすいモバイルデバイスがIoTデバイス/モノに接続するためのインターフェイスになるだろうと語った。

IoTアーキテクチャの概念図

Webと組み込みの2つのプログラミング世界の融合が求められるIoT

 IntelのMcCool氏は、IoTのプログラミング上の大きなチャレンジは、「Web」と「組み込み」という、全くプログラミングスタイルが異なる2つの世界に橋渡しをすることだとCool Chipsで語った。Webプログラミングの世界はスクリプティング言語での生産性の高いスタイルに慣れている。一方、組み込みプログラミングの世界は、ローレベルな言語で性能効率の高いプログラミングをして来た。

 問題は、組み込みレベルのデバイスをインターネットに接続して、新しいサービスを生み出そうとするIoTの特性にある。そうしたサービスを、Webプログラミングの開発スピードとメインテナンス性で実現できることを目指している。つまり、WebプログラマがIoTデバイスを使ったサービスを簡単かつ迅速にプログラムし、また変更できるようにしたい。そのために、IoTでは、組み込みの世界にWebプログラミングの手法を融合させなければならないという。

 McCool氏は、そのためのIoTプログラミングの手段としてJavaScriptが重要だと説明した。JavaScriptがWebプログラミングのネイティブ言語であり、開発環境が整っており、セキュアで、非同期リモートファンクションコールをサポートするためにイベントドリブン(イベント駆動型)なハードウェアプログラミングにも向いており、JavaScriptのエンジンが高性能(C/C++より50%遅いだけとMcCool氏は主張する)からだという。そのため、IntelはJavaScriptでIoTデバイスを自由に制御できるようなソフトウェアインフラを整えようとしている。

IoTにおけるJavaScriptの優位性

 実際には、IoTをJavaScriptでプログラムしようという発想はIntelのものではない。すでに、JavaScriptとHTML5でIoTをプログラムしようという動きが各所で起こっており、Intelの構想はそれを後追いしたものだ。しかし、プロセッサメーカーであるIntelが、ハードウェアネイティブ言語ではなく、JavaScriptをIoTで重視していることは重要だ。

分厚いQuark向けのソフトウェアスタック

 下の図は、今月(4月)に中国の深センで開催されたIntelの技術カンファレンス「Intel Developer Forum(IDF) Shenzhen 2014」で示されたIoT向けSoC(System on a Chip)である「Quark SoC」向けのソフトウェアスタックだ。起動はトラステッドブートROMで、ファームウェアはUEFI(Unified Extensible Firmware Interface)ベースで、マイクロコードアップデートも可能な仕様となっている。どことなく、ARMのスタックと似ているが、Quark SoCではその上に、基本はLinuxを載せて、ドライバスタックやミドルウェアが載る。ミドルウェア層ではIntelが以前買収したWind Riverのスタックが中核となっていることが分かる。

Quarkのソフトウェアスタック図
Quark SoC X1000の概要

 Intelの内部にソフトウェア開発者の心を理解している人がいることがよく分かるのは、上のソフトウェアスタックの図の色分けがライセンス形態で付けられている点だ。オープンソースに慣れたソフトウェア開発者が一番に関心を持つポイントが一目で分かるようになっており、BSDライセンスとGPL(GNU General Public License)ライセンス、あるいはデュアルライセンスも区別されている。

 このチャートをパっと見て分かる通り、Quark系SoCのソフトウェアスタックは、かなり厚い。IoTと言っても、ARMの最小のCPUコアであるCortex-M系のコアを使うようなデバイスとは根本からソフトウェアの発想が異なることが分かる。ちなみに、Cortex-Mは、ARMがMMU(Memory Management Unit)を実装しないため、高度な汎用OSを使うことができないという制約がある。そのため、Cortex-MベースのIoTデバイスでは、ソフトウェアスタックはメタル(チップハードウェア)に近い極めて薄い層が一般的だ。

 もっとも、IntelもこのソフトウェアスタックとQuarkで、IoTの世界を全て押し通そうという気はない。IntelのMcCool氏は、IoTではデバイスでは、相互運用性が重要で標準規格が重要と語っている。Intel Developer Forum(IDF)でのスライドを見ても、他社CPUコアのデバイスも含めて相互運用性を重視するソフトウェア戦略を示唆している。JavaScriptによるプログラミングモデルは、そうした枠組みの上に乗る。

 具体的には、ミドルウェアを介して分散コンポーネント型のコンピューティングモデルを取る。ミドルウェア層によって、UIがリッチなPCやモバイルデバイスと、IoTのデバイス/モノを連携させる。

 下の例は、モバイルデバイスからWebプログラミングの手法で、照明IoTを制御するものだ。これは至極単純な例だが、同様の手法でIoTデバイスを制御して行くことを構想している。

ミドルウェアをコンピュータとIoTの双方に走らせる

 この構想の一環としてIntelは「Moon Island Platform Technology」のソフトウェアスタックを提供している。これは、IoTデバイスにIntelがプロプラエタリに提供するソフトウェアキットで、多彩なIoTの接続性をサポートし、Webインターフェイスベースでのデバイス/モノ管理を可能にし、セキュリティを保つ。Intelが買収したWind RiverとMcAfeeの技術をそこに適用する。先ほどのQuarkソフトウェアスタックの図では上から2層目のコンポーネントとランタイムの層に当たる。

Moon Island Platform Technologyの要点
McAfeeによるIoTのセキュリティ
QuarkソフトウェアスタックにおけるMoon Islandの位置付け

 これらを見れば分かる通り、Intelは各デバイス/モノで走るミドルウェアを介し、共通したAPIをベースにして、プログラミングできるモデルを提供しようとしている。その下のネイティブOSやハードウェアは抽象化してしまう。もちろん、このミドルウェアをIntel 1社で提供しようとするところに危うさがあるわけだが、構想としては理解できる。また、IntelはIoTアーキテクチャの中で、現実的に現在のQuark SoCが適用できるインテリジェントゲートウェイにまずフォーカスしようとしている。ゲートウェイをテコに、Moon Islandのミドルウェアスタックを浸透させようという戦略だ。

Intelが構想するソフトウェアスタック

 こうしたIoTプログラミングモデルの構想をベースに、IntelはIoT戦略を組み立てつつある。IntelはCOOL ChipsでのIoTプログラミングモデルの講演の直後に、東京でIoT戦略の説明会を開催した。そちらでは、Intelは打って変わって、同社のハードウェアをベースにしたIoT構想を説明した。

 そうしたIntelの強気のマーケティング姿勢は、実際の組み込み市場がARMアーキテクチャを始めとする非Intelの組み込みプロセッサに占められている実情と乖離している。そのため、現場のエンジニア達からは非現実的だと見られている。現在のIntelが提供するSoCソリューションでは、とてもARMベースのチップの全ての領域に対抗することができないからだ。

 しかし、Intelで実際の技術戦略を組み立てる側の視点は、そうした表向きのIntelのIoT戦略とは大きく異なっていることがCOOL Chipsでよく分かる。IntelはヘテロジニアスなIoTの現実に即したプログラミングモデルやサービスのインフラを組み立てようとしており、その中でIntelが確固とした位置を築くことができるようにしようとしている。

 1週間の間に行なわれたCOOL ChipsでのIntelのIoT技術説明と、マスコミ向けのIntelのIoT戦略発表会の内容は、対極的な方向を向いた部分があり、同じ会社のプレゼンテーションに見えないほどだ。問題は、Intelの上層部が、強気のIntelハードウェア推進路線と、現実的で柔軟なインフラ構築路線の、どちらに振れるかだろう。

(後藤 弘茂 (Hiroshige Goto) E-mail