ページの先頭です
2012年5月8日
最終更新日:2012年11月27日
「軽量Ruby」と呼ばれる組み込み向けプログラミング言語の開発プロジェクトが進行する中、IIJはその取り組みとして、IIJ独自開発のサービスアダプタ「SEIL」にmruby(軽量Rubyの実装)を載せた動作検証を行いました。本稿では、軽量Rubyの概要と、SEILに軽量Rubyを組み込むことで解決されるような計画についてご紹介します。
軽量Rubyは、家電製品などの開発生産性を向上させることを目指して設計されたRuby言語です。現在、軽量Rubyは産学共同プロジェクトとして開発が進められ、経済産業省の「地域イノベーション創出研究開発事業」に採択されています。主な開発メンバーは、福岡CSK、ネットワーク応用通信研究所(NaCl)及び九州工業大学で、IIJは評価協力企業として2011年秋頃より参加しています。
近年は、家電などの開発生産性の向上が情報産業全体としての課題となっていますが、Ruby言語は組み込みシステムで広く用いられるC言語などと比べて開発生産性が高いことから、Web上のサービスで広く使われています。IIJでも「MOGOK」(2012年11月現在オープンβ版)という名前でRuby on RailsのPaaSを提供しています。軽量Rubyプロジェクトでは、こうした背景の下、Ruby言語を組み込み分野に適用する際に発生する課題を解決するために、軽量Rubyと呼ばれる新たなRuby言語のアーキテクチャを設計しました。
具体的には、以下の課題が解決されます。
軽量Rubyのソフトウェア構成は、下図のようになります。
RiteVMは軽量Ruby実行基盤であり、軽量Ruby向けに新たに設計されました。RiteVMは、Rubyスクリプトを逐次解釈して実行するのではなく、コンパイル結果のバイナリコード(Rite中間表現)を直接実行することが特徴です。OSは、RTOS(ITRON、VxWorks、組み込みLinux)、Windows、Linux及びMacOSなどに対応していますが、OSの無い環境で動作させることも可能です。バイナリコードとして生成された軽量Rubyアプリケーションは、デバイスに依存しないため、同じコードを様々なデバイス上で動作させることができます。
軽量Rubyを用いた開発の流れは、下図のようになります。
まず、開発環境(手元のPCなど)で軽量Rubyソースファイルを作成し、軽量Rubyコンパイラを用いてRiteバイナリファイルを生成します。次に、RiteVM上でRiteバイナリファイルを実行します。RiteVMの実行環境には、ターゲットデバイス上のRiteVMや手元のPCなどが使えます。
軽量Rubyライブラリには、以下の4種類が規定されています。本プロジェクトではミニマルライブラリのみの提供が予定されており、スタンダード及びフルについてはコミュニティを通じて順次提供されることになります。
軽量Rubyのライブラリ | 内容 |
---|---|
ミニマル | RiteVMの実行に必要な最低限の機能 |
スタンダード | JIS X 3017規格相当 |
フル | MRI(CRuby)のフル機能相当 |
ドメイン別 | 製品ドメイン別の拡張ライブラリ |
なお、軽量Rubyの開発中のソースコードについては、2012年4月20日にGitHub上で公開されました。また、IIJも様々な拡張ライブラリを組み込んだmrubyを公開しましたので、ご興味のある方は、是非お試しください(GitHub iij/mruby)。IIJでは、今後も積極的にmrubyの開発に参加していく予定です。
IIJでは、インターネット利用者が直面する課題にISPの立場で柔軟に対応するために、独自開発のルータ「SEIL」を開発しました。しかしながら、インターネットの役割が社会インフラとして重要になればなるほど、既存の機能だけでは十分に対応できない特殊な用途への要求が増加していきます。また、従来の開発手法では、利用者からのニーズを分析、ファームウェアの設計、テストを経て晴れてファームウェアがリリースされるという流れを取るため、機能がリリースされるまでには最低でも数ヵ月を要していました。
そこで、SEILに軽量Rubyスクリプト機能を載せることで、ユーザが独自に機能拡張をできるようにすることを計画しています。あらゆる機能をスクリプトで記述することは難しいですが、ちょっとした「痒いところに手の届く」機能であれば、ユーザが独自にスクリプトを作りこむことで迅速に提供することができるようになります。一例としては、特定の経路で障害が発生した場合、ルータが能動的にWeb APIを叩き、ユーザに障害を通知したりルータの動作を切り替えたりするような使い方が考えられます。
本プロジェクトを通じて、IIJはSEILシリーズへ軽量Rubyを実際に組み込み、評価をする機会を得ました。2013年2月にはNPO法人軽量Rubyフォーラムが設立される予定ですので、今後は、IIJが得た経験やコードを、フォーラムなどを通じて積極的にフィードバックしていく予定です。
2012年11月14日から16日にかけて、パシフィコ横浜にて組込み総合技術展(Embedded Technology 2012)が開催されました。今回、IIJのmrubyチームはmruby関連の展示をいくつか見学してきましたので、概要をご報告します。
執筆者プロフィール
曽我部 崇(そがべ たかし)
IIJ プロダクト本部 アプリケーション開発部 戦略的開発室
2001年IIJ入社。関西支社で法人向け専用線インターネット接続サービスやISP向けネットワークコンサルティングに従事。2005年からは、ISPとしては世界的にも希少な「モノづくり」ができるSEIL事業部に移籍し、ソフトウェアの不具合と格闘しつつ日々面白い技術を探し回っている。週末になるとバイクでオフロードを走るのが何よりの楽しみで、平日のアーバンライフとは真逆の泥まみれの生活を送る。
関連リンク
ページの終わりです