ページの先頭です


ページ内移動用のリンクです

軽量Rubyへの取り組み

2012年5月8日
最終更新日:2012年11月27日

「軽量Ruby」と呼ばれる組み込み向けプログラミング言語の開発プロジェクトが進行する中、IIJはその取り組みとして、IIJ独自開発のサービスアダプタ「SEIL」にmruby(軽量Rubyの実装)を載せた動作検証を行いました。本稿では、軽量Rubyの概要と、SEILに軽量Rubyを組み込むことで解決されるような計画についてご紹介します。

軽量Rubyとは

軽量Rubyは、家電製品などの開発生産性を向上させることを目指して設計されたRuby言語です。現在、軽量Rubyは産学共同プロジェクトとして開発が進められ、経済産業省の「地域イノベーション創出研究開発事業」に採択されています。主な開発メンバーは、福岡CSK、ネットワーク応用通信研究所(NaCl)及び九州工業大学で、IIJは評価協力企業として2011年秋頃より参加しています。

近年は、家電などの開発生産性の向上が情報産業全体としての課題となっていますが、Ruby言語は組み込みシステムで広く用いられるC言語などと比べて開発生産性が高いことから、Web上のサービスで広く使われています。IIJでも「MOGOKblank」(2012年11月現在オープンβ版)という名前でRuby on RailsのPaaSを提供しています。軽量Rubyプロジェクトでは、こうした背景の下、Ruby言語を組み込み分野に適用する際に発生する課題を解決するために、軽量Rubyと呼ばれる新たなRuby言語のアーキテクチャを設計しました。

具体的には、以下の課題が解決されます。

  • Ruby処理系に必要な資源(メモリ)の削減
  • 実行速度の向上
  • ハードウェアの扱い、I/O及び割り込みへの対応
  • リアルタイム性の向上
  • 直接見えないように変換されたソースコード
  • これまでの資産を活用

軽量Rubyのソフトウェア構成

軽量Rubyのソフトウェア構成は、下図のようになります。

軽量Rubyのソフトウェア構成図

RiteVMは軽量Ruby実行基盤であり、軽量Ruby向けに新たに設計されました。RiteVMは、Rubyスクリプトを逐次解釈して実行するのではなく、コンパイル結果のバイナリコード(Rite中間表現)を直接実行することが特徴です。OSは、RTOS(ITRON、VxWorks、組み込みLinux)、Windows、Linux及びMacOSなどに対応していますが、OSの無い環境で動作させることも可能です。バイナリコードとして生成された軽量Rubyアプリケーションは、デバイスに依存しないため、同じコードを様々なデバイス上で動作させることができます。

軽量Rubyを用いた開発の流れは、下図のようになります。

軽量Rubyを用いた開発の流れ

まず、開発環境(手元のPCなど)で軽量Rubyソースファイルを作成し、軽量Rubyコンパイラを用いてRiteバイナリファイルを生成します。次に、RiteVM上でRiteバイナリファイルを実行します。RiteVMの実行環境には、ターゲットデバイス上のRiteVMや手元のPCなどが使えます。

軽量Rubyライブラリには、以下の4種類が規定されています。本プロジェクトではミニマルライブラリのみの提供が予定されており、スタンダード及びフルについてはコミュニティを通じて順次提供されることになります。

軽量Rubyのライブラリ 内容
ミニマル RiteVMの実行に必要な最低限の機能
スタンダード JIS X 3017規格相当
フル MRI(CRuby)のフル機能相当
ドメイン別 製品ドメイン別の拡張ライブラリ

なお、軽量Rubyの開発中のソースコードについては、2012年4月20日にGitHubblank上で公開されました。また、IIJも様々な拡張ライブラリを組み込んだmrubyを公開しましたので、ご興味のある方は、是非お試しください(GitHub iij/mrubyblank)。IIJでは、今後も積極的にmrubyの開発に参加していく予定です。

今後の取り組み

IIJでは、インターネット利用者が直面する課題にISPの立場で柔軟に対応するために、独自開発のルータ「SEIL」を開発しました。しかしながら、インターネットの役割が社会インフラとして重要になればなるほど、既存の機能だけでは十分に対応できない特殊な用途への要求が増加していきます。また、従来の開発手法では、利用者からのニーズを分析、ファームウェアの設計、テストを経て晴れてファームウェアがリリースされるという流れを取るため、機能がリリースされるまでには最低でも数ヵ月を要していました。

そこで、SEILに軽量Rubyスクリプト機能を載せることで、ユーザが独自に機能拡張をできるようにすることを計画しています。あらゆる機能をスクリプトで記述することは難しいですが、ちょっとした「痒いところに手の届く」機能であれば、ユーザが独自にスクリプトを作りこむことで迅速に提供することができるようになります。一例としては、特定の経路で障害が発生した場合、ルータが能動的にWeb APIを叩き、ユーザに障害を通知したりルータの動作を切り替えたりするような使い方が考えられます。

本プロジェクトを通じて、IIJはSEILシリーズへ軽量Rubyを実際に組み込み、評価をする機会を得ました。2013年2月にはNPO法人軽量Rubyフォーラムが設立される予定blankですので、今後は、IIJが得た経験やコードを、フォーラムなどを通じて積極的にフィードバックしていく予定です。

Embedded Technology 2012 mruby関連ブースを訪問

2012年11月14日から16日にかけて、パシフィコ横浜にて組込み総合技術展(Embedded Technology 2012)が開催されました。今回、IIJのmrubyチームはmruby関連の展示をいくつか見学してきましたので、概要をご報告します。

NPO法人軽量Rubyフォーラムが2013年2月頃に設立される予定

液晶搭載マイコンボード付きmruby学習キット

九州工業大学 情報工学部 田中研究室
産学連携推進パビリオン九州工業大学情報工学部田中研究室のブースでは、mrubyに関連する様々な取り組みが紹介されていました。その中でも、NPO法人軽量Rubyフォーラムが2013年2月頃に設立される予定だというのは、mrubyユーザにとって朗報です。今後はこのフォーラムを通じて、mrubyに関する様々な情報が発信されるでしょう。また、「液晶搭載マイコンボード付きmruby学習キット」の展示では、人だかりができていました。これはマイコンボードにタッチパネル付液晶ボードを載せた製品で、パソコンさえあれば手軽にmrubyを用いたGUIプログラムやI/Oポート処理(LEDやスピーカ等の制御)ができるそうです。筆者が把握している限りでは、これがmrubyを用いた商用製品の第一号になると考えています。(NPO法人軽量Rubyフォーラムblank

マイコンボードに接続された扇風機をmrubyから制御するデモ

東芝情報システム株式会社
東芝情報システム株式会社のブースでは、mrubyに関する取り組みとして、マイコンボードに接続された扇風機をmrubyから制御するデモが展示されました。デモ展示向けのOSにはμITRON(TOPPERS/JSP)を用いており、iPadから無線LAN経由でmrubyで記述されたサーバにアクセスできるそうです。(軽量Ruby「mruby」技術紹介blank

SH7269マイコンボード上でmrubyを動作させるデモ

ルネサス エレクトロニクス株式会社
ルネサス エレクトロニクス株式会社のブースでは、SH7269マイコンボード上でmrubyを動作させるデモが展示されました。このデモにより、mrubyを用いることでクロス開発の煩わしさ(コンパイル、アプリの流し込み)が低減されることが改めて実感できました。mrubyが動作するチップが、今後更に増えていくのではないかと期待しています。(スマートインダストリアルblank

曽我部 崇

執筆者プロフィール

曽我部 崇(そがべ たかし)

IIJ プロダクト本部 アプリケーション開発部 戦略的開発室
2001年IIJ入社。関西支社で法人向け専用線インターネット接続サービスやISP向けネットワークコンサルティングに従事。2005年からは、ISPとしては世界的にも希少な「モノづくり」ができるSEIL事業部に移籍し、ソフトウェアの不具合と格闘しつつ日々面白い技術を探し回っている。週末になるとバイクでオフロードを走るのが何よりの楽しみで、平日のアーバンライフとは真逆の泥まみれの生活を送る。

関連リンク


ページの終わりです

ページの先頭へ戻る