Web界から組み込みに向けられた刺客「mruby」はこう使われているmruby適用最新事例(1/4 ページ)

「Rubyの良さを組み込みに」を合言葉とする開発言語「mruby」は公開以来、着実な進歩を遂げ、さまざまな場面での利用も進んでいます。ここでは「Web界から組み込みに向けられた刺客」(まつもとゆきひろ氏)たる、mrubyの採用事例を紹介します。

» 2016年01月12日 07時00分 公開

 mruby(軽量Ruby)は経済産業省「地域イノベーション創出研究開発事業」として2010年に始まり、2012年4月にオープンソース(MITライセンス)として公開された組み込み向け開発言語です。「Rubyの良さを組み込みに」を合言葉に開発されたmrubyは発表よりはや3年、たくさんの人々の協力でさまざまな形の改良がくわえられ、現在ではライブラリは170を超え、デバッガー対応の安定版「mruby V1.2.0」が発表(2015年11月)されるなど着実に進化しています。

 Rubyは開発しやすい、生産性の高い言語としてWeb開発などに広く使われている言語です。世界で使われている言語の10位に選ばれる(出典:TIOBE index)など実績も豊富です。そのRubyを軽量化し(RAM 100Kb程度)、組み込み開発に適用できるようにしたものがmrubyです。このmrubyの公開により今までハードウェアを扱うことのなかったWeb系、業務系の技術者が組み込みに容易に参入することが可能になりました。まさにmrubyはWeb界から組み込みに向けられた刺客、IoTでのスピードが必要な開発において大いに活用して頂きたい言語です。

mrubyの特徴を生かした適用例

 mrubyには以下のような特徴があります。

  • ISO、JIS規格のRubyに準ずる言語仕様と高い生産性
  • コンパクトで処理系(MPU、OS)に依存しない実装(Windows、Linux、Mac OS、ITRON、μCLinux、Android、iOSなどでも動作。さらにOSなしでも動作)
  • 既存C言語資産との高い互換性(mrubyからCアプリ呼び出しやCからmrubyアプリ呼び出し可能)
  • ソフトリアルタイムとインクリメンタルGCI
  • クロス開発不要のコンパイラ言語(スクリプト実行も可能)

 これらを生かした実例をご紹介します。

生産性の高さとプロトタイピングのしやすさを生かした IIJ「SA-W1」

IIJの「SA-W1」 インターネットイニシアティブ(IIJ)のインターネットルーター「SA-W1」

 インターネットイニシアティブ(IIJ)は日本でも有数の通信キャリアであり、企業向けルーターの販売も行っています。そのルーター「SA-W1」の制御インタフェース開発効率向上にmrubyが使われています。

 まず取り組まれたのがイベントスクリプト機能です。経路障害、CPU負荷上昇、インタフェースのUP/Downなどイベントをトリガにしてmrubyスクリプトが動作し、Ping、statusチェックなどの最低限の切り分け作業や監視システムへのアラートなど、外部システムへの連携が自動化されています。

 またルーターにはさまざまな機能がありますが、それを全てのユーザーが使うわけではありません。必要な機能のみ組み合わせて使うことができ、機器の利用料金を機能に応じて課金する「レシピモデル」を実現されています。この部分を含め、機器の設定管理を柔軟に管理するためにmrubyが使われています。

SA-W1 ブロック図 SA-W1 ブロック図

 mruby利用の目的は開発効率の向上であることは述べましたが、特に以下がポイントとされています。

  • コンフィグ管理など文字列処理が多い部分にmrubyが利用しやすい
  • 文字列処理やロジックが簡単に記述できる
  • スクリプトによる機能追加時など、いちいちファームウェアをビルドしなくてもプログラムの差し替えが可能
SACMにおけるmrubyの活用 SACMにおけるmrubyの活用

 また、機器の自動接続や一元管理を可能にするIIJのマネージメントシステム基盤「SACM(Service Adaptor Control Manager)」においてセンサーへのアクセス、定期取得、閾値設定などをmrubyで柔軟に記述、特殊なエージェントの実装も不要としています。

 さらに今後のIoT市場をにらみ、mruby経由で収集した各種データを蓄積し、条件判定による通知やグラフ化を可能にした「Machinst(仮)」というプラットフォームの提供も準備されています。

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.