ARM社は、米国サンタクララ市で開催したイベントARM TechCon 2014(2014年10月1日~3日。現地時間)で、IoTデバイス向けのオペレーティングシステム「mbed OS」を発表した。mbed OSは、ARM社のCortex Mシリーズプロセッサ向けに最適化されたIoT用のオペレーティングシステム。無料で提供され、IoTデバイスの開発が容易になることから、今後多くのIoTデバイスが登場し、本格的なIoT時代がやってくることになると予想される。
mbed OSは、ARM社のmbed IoT Device Platformの一部として提供され、このほかにARM社は、IoTデバイスを管理するための「mbed Device Server」、「mbed tools」といった技術を提供する。また、多くの半導体メーカーやSI企業、クラウドサービス企業などがパートナーとしてmbedに参加している。
IoTとは、簡単にいうと通信機能を持つ組み込み系デバイスのことだ。組み込み系とは、機器を製造する側の呼び方で、マイクロプロセッサを応用した製品のことだ。現在では多くの家電や玩具、健康機器など、さまざまな「組み込み系デバイス」が存在する。また、既存のプロセッサがなくても動作できる機器(たとえば、コーヒーメーカーやトースターなど)にマイクロプロセッサを搭載し、IoT化することで、こうした機器からのさまざまな情報が通信によって交換可能となる。これを収集することでいわゆるビックデータとなり、そこから新しい知見が登場する可能性もある。また、いわゆる「ウェアラブルデバイス」も、ハイエンドのものを除くと「身につける」IoTデバイスだ。こうしたウェアラブルデバイスには、心拍計や歩数計などがある。
これまでARM社は、Cortex-Mシリーズに対して、開発環境やツールなどを提供していた。一般的に組み込み系の開発は、組み込み用オペレーティングシステムを使い、その上でアプリケーションを開発する場合と、オペレーティングシステムを使わずにハードウェア上に直接アプリケーションを開発する2つの方法があった。オペレーティングシステムを使うメリットの1つは、システム管理や通信など、さまざまな処理を任せ、通信プロトコルやデバイス制御などを開発する必要がないという点だ。特に通信のプロトコルは、相手の実装といった問題もあり、開発が難しく、時間もコストもかかってしまう。これに比べて、ある程度利用実績のあるオペレーティングシステムは、十分にこなれた通信プログラムを持っており、これを使うことで、その部分の開発やデバッグを省略できる。同様にシステムの初期化やデバイスの制御などもオペレーティングシステム側に組み込まれたプログラムコードを使うことで、開発のコストを低減できる。
こうした通信を行う組み込み系では、Linuxがつかわれることも少なくないが、もともと組み込み系に比べるとPCなどの大規模なハードウェア向けに作られたLinuxは、組み込み系で使われる小規模なデバイスでは、メモリサイズやハードウェアの機能などで利用が困難な場合もある。たとえば、テレビやレコーダーといった家電製品には搭載できても、歩数計のような小規模で低消費電力な機器には搭載困難(搭載するとコストが大きくなってしまう)なことがある。mbed OSは、こうしたLinuxが利用困難な規模のシステムでも動作できるため、比較的低価格な機器のIoT化に寄与する可能性がある。
IoTとは、前述のように「通信」が可能な組み込み系デバイスであり、mbed OSにより、これまでよりも容易にIoTデバイスを開発することが可能になる。また、対象がmbed OSとなることで、実機が登場する以前から開発が可能になり、自社開発コードのライブラリ化やコードの再利用が可能になる。それ以外に、複数の機器の開発でmbed OSという同一のプラットフォームを使うことになるため、開発者の技能の向上やノウハウの蓄積が可能といったメリットもある。
ARM社のCortex-Mは、組み込み向けのプロセッサで、ARMのThumb/Thumb-2命令セット(短縮命令と呼ばれる命令長の短い簡易な命令セット。ARM社のプロセッサアーキテクチャ定義であるARMv6/v7の一部となっている)を使うプロセッサだ。超低消費電力、極小フットプリントのCortex-M0から組み込み系としては性能が高いM7まで6種のプロセッサコアがある。最上位となる組み込み系プロセッサCortex-M7は、Techcon直前に発表されたものだ。
mbed OSの特徴の1つは、IoT用にさまざまな通信デバイス、通信プロトコル、通信暗号化などの機能をアプリケーションに提供すること。IoTでは、必ず通信相手があり、比較的大規模なものでは、無線、有線ネットワークなどによりTCP/IPなどで、インターネット側のサービスと直接通信が可能であり、小規模なものでは、Bluetoothなどの低消費電力な通信や近距離通信を使ってスマートフォンやPC、タブレットなどに接続、これらの上で動作するアプリケーションと対になってインターネット接続を利用する。
また、mbed OSは、イベント駆動で、一般的なオペレーティングシステムが持つプリエンプティブなスケジューラーは搭載していない。割り込みで発生するイベントであらかじめ指定されたプログラム(タスク)が起動し、処理が終了すれば、待機状態に戻り、電力をほとんど消費しない状態で待つという動作となると思われる。たとえば、ユーザーが機器のボタンを押したり、センサーが何かを検出するとイベントが発生し適切なプログラムコードが実行されるという感じだ。なお、mbed OSは、ARM社がゼロから開発したものでプロジェクト自体は数年前からあり、具体的にmbed OSとしての開発には3年ほどかかっているという。
Cortex-Mシリーズには、非常に小規模だがフットプリントが小さく、超低消費電力のM0/M0+から高性能なM7までのバリエーションがあり、実際にmbed OSが動作するのは、これらの設計を購入して半導体メーカーが製造するSoCが対象となる。このため、全体がモジュール構造となっていて、必要なモジュールのみを組み合わせることが可能になるという。
こうしたさまざまな構成に対して、いわゆる「プロファイル」のような形で、システム構成を「雛形」化することを想定しているようだ。おそらく、それらに対して、標準的なSoCのリファレンス設計なども作られると思われる。
mbed OSが行うのは、システムの初期化などの起動関連の処理とさまざまなコンポーネントによるハードウェアの抽象化だ。この上で動作するアプリケーションは、たとえば、Bluetoothのハードウェアの違いを見ることなく、Bluetoothによる通信が可能になる。これまで、直接アプリケーションを書いていた場合、Bluetoothのハードウェアに合わせた初期化や制御が必要だったが、mbed OSでは、より「抽象的」な「通信」を行うプログラムを書くだけで、Bluetoothによる通信が可能になる。また、電力管理もmbed OSが請け負う主要な処理となるという。
さらに、この上で動作する「データ交換」のためのプロトコルや、通信の暗号化といった処理もmbed OSが請け負うことになる。詳細は公開されていないが、基調講演のスライドやmbedのサイトには、「HTTP」、「MQTT」(MQ Telemetry Transport。機器同士の通信のための軽量プロトコル)、「CoAP」(Constrained Application Protocol。機器同士の非同期通信をサポートする軽量プロトコル)、「LWM2M」(Open Mobile Allianceが提案している軽量の機器同士の通信プロトコル)などの上位通信プロトコルに加え、TLSやDTLSといった暗号化方式、IPv4/IPv6、6LoWPAN(IPv6 over Low Power Wireless Personal Area Network)などの用語がある。また、通信方式にもBluetooth、Wi-Fi、2G/3G、Zigbee、イーサネットなどが利用できるようだ。
こうした標準的な通信プロトコルがサポートされるため、スマートフォンやPC、タブレット側で動作する「デバイス用アプリケーション」も、標準的なやり方で開発が可能で、機器独自の通信プロトコルに対応する必要がない。このため、開発期間の短縮、開始時期の前倒し(機器の仕様を定義した段階で開発を開始できる)、コストダウンが可能になると予想される。
mbed OSは、オープンソースで無料で利用できる。ただし、一部のモジュールは、ソースコードが公開されずバイナリ(Cortex-Mプロセッサが前提となるため)での提供となるようだ。
具体的には、mbed OSは、ARMからコードが提供され、これをSoCを製造する半導体メーカーが自社SoCに移植、SoC内のデバイス制御に必要なドライバやソフトウェアモジュールと組み合わせて、SoC用のmbed OSを作って、顧客に提供するという形態になるようだ。
mbed OSは、今年10月にAlpha版として最初の提供が行われ、来年の8月にベータ版、10月(つまり来年のTechConのタイミング)には、mbed OS v3.0として正式リリースされる予定だという。
ARM社のプロセッサはすでに組み込み系で広く使われており、このmbedの登場でIoTデバイスの開発が容易になることから、多くのIoT機器が登場することが予想できる。mbed OSの正式版のリリースは来年であり、その後、本格的なIoT時代が到来すると思われる。