組み込み開発にも高い生産性を――製造業技術者に“軽量Ruby”「mruby」アピール:ETWest2012(2/2 ページ)
コードの肥大化/開発期間短縮/コスト削減などで厳しさを増す組み込みソフトウェア開発に、Rubyの高い生産性が期待されている。ETWest2012の基調講演で、まつもとゆきひろ氏が話題の組み込み機器向け“軽量Ruby”「mruby」について語った。
「いままで届いていなかった分野にも、Rubyの有用性を届けたい」というまつもと氏の思いから、2010年度に経済産業省の地域イノベーション創出研究開発事業によって始まったプロジェクトが「軽量Ruby」だ。Rubyの長所はそのままに、よりコンパクトな構造に軽量化・最適化した新しい処理系を目指して開発が進められた。そして2011年度まで続いた同事業が終了した2011年4月20日に、それまで軽量Rubyと呼ばれていた新しいRubyを「mruby」と改め、GitHub上でMITライセンスとしてソースコードを公開した。
「“軽量Ruby”として始まったがこれはプロジェクトの名前で、ソフトウェア名としてはmrubyにした。まつもとのmじゃないかという説もある(笑)が、mrubyのmは『embedded』のm。文法的にはISO/IEC 30170として承認されたRubyの仕様に準拠するカタチで開発した。ライブラリも“ほぼ”JISやISOに準拠している。なぜ“ほぼ”という表現なのかというと、例えばJISにはファイルI/Oのようなものがあるが、組み込みの場合、ファイルシステムのようなものが必ずしもあるとは限らない。そういうものは当然提供できないので“ほぼISO準拠”ということになっている」(まつもと氏)。
軽量なスクリプト言語としては、ブラジル・リオデジャネイロの大学で開発された「Lua」がある。まつもと氏によると、mrubyの実装やAPIについてはこのLuaをかなり意識して作られているという。
「プログラミング言語としてLuaを見た場合、言語が貧弱でいわゆるオブジェクト指向の機能をあまり持っていない。Lua自体が使えるライブラリもデフォルトではかなり貧弱。つまりLuaを使ってある程度規模の大きなソフトウェアを開発するのは厳しいのではというのが個人的な印象。もし世の中にLuaっぽいRuby――つまり組み込み向けAPIがあって、比較的高性能で比較的コンパクトでかつRubyの豊富で強力な機能が備わっていたらそれって理想的じゃない?……というのが、mrubyのもともとの発想だった」(まつもと氏)。
Rubyが組み込み分野で注目されている理由について、まつもと氏は近年の組み込み機器の“高性能化”を指摘する。
「スマートフォンやゲーム機といった小さなデバイスに対して高級言語を組み込むという流れが話題になっている。その背景にあるのは、組み込み分野でもデバイスの高性能化が加速しているということ。メモリが増え、ストレージも増え、プロセッサのパワー/クロックも高まっている。しかも組み込みがカバーする領域がどんどん広がっており、コード量はどんどん増えている。システム全体でソフトウェアの構成比率が増えているなか、ソフトウェアを高い生産性で開発したいというニーズが高まり、Rubyの“生産性を高める効果”に期待が集まっている」(まつもと氏)。
とはいえ、組み込み機器で必要なリアルタイム性などはmrubyでは弱いなど課題もある。現在広く使われているCRubyでは、スピードがボトルネックとなるものに対してはCやC++を使って機能を追加していくことができる。CRubyという「言語」に対して機能を追加していき、それをアプリ開発に利用していくという考えだ。
「アプリは基本的にRubyで開発して、スピードが必要な部分などはCや他の言語で開発しましょうというのが、現在広く使われているCRubyのアーキテクチャーのパターン。ところが、組み込みの場合……例えば、カーナビのアプリにRubyを組み込もうというとき、カーナビのアプリというものはおそらくCやC++で開発されている。その中で、ごく一部の機能だけRubyで開発したいというニーズが多いのではないだろうか。つまりアプリが主で、Rubyが従のような構成。現在使われているCRubyではAPIがそのようにデザインされていないため、このようなケースには向かない。mrubyのAPIではそこを考慮してデザインされており、他の言語で開発されたアプリからRubyを呼び出すということができる」(まつもと氏)。
通常のRuby(CRubyなど)はスクリプト言語をインタプリタで実行するが、mrubyはRiteVMという実行環境が用意されており、コンパイラによって生成される中間コード(Ruby中間表現)をRiteVM上で実行するという仕組み。コアコンポーネントを組み合わせることで、インタプリタ/コンパイラ/バーチャルマシンなどの機能が実現可能で、文字列処理やI/O処理といったRubyが得意とする処理はmrubyでも継承されている。C言語では開発が面倒なネットワーク機器なども、Rubyでは非常に効率よく開発できるという。
「ソフトウェア全体がコンポーネント構成になっているmrubyでは、これらを自由に組み合わせることができる。例えば、mrubyで書いたプログラムを事前に全てバイトコードでコンパイルしておくと、アプリそのものにはコンパイラが必要なくなり、プログラムサイズを削減できる。デバッグ時にはコンパイラを付けておいて柔軟に開発し、後でコンパイラを外してしまうことも可能」(まつもと氏)。
「いろんな機器で動いてほしいので、特定のプラットフォームに依存しないような構成になっている。WindowsやMac OSでは当然動くし、いままで実験した中ではVxWorksでも動いた。またOSのない環境などでも動くようになっている。さらに、Rubyプログラミングによる組み込みソフトウェア開発の評価を行うための評価ボードも用意した」(まつもと氏)。
2012年4月の公開からまだ間もないmrubyだが、iOSのネイティブコードをmrubyで書ける「MobiRuby」などmrubyの活用例が早速登場している。その他にもApacheのモジュールにmrubyを埋め込む例や、サーバサイドJavaScriptフレームワークの非同期I/O部分をmrubyで機能拡張した例など、さまざまな動きが出てきているという。
「ゲーム開発者にも注目されているし、モバイルにも注力していきたい。iOSだけでなく、Androidでmrubyを動かそうという人も出てきている。メモリやリソースに余裕のあるものは、mrubyが動かせる余地があるのではないか。まだmrubyの強い面、弱い面などあるが、幅広い領域で使われるようにしていきたい」(まつもと氏)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 組み込み向けRubyから“不死身”のマイコンまで――Embedded Technology WEST 2012
組み込み技術展「ET」の関西版「Embedded Technology West(ETWest)2012」が大阪で開催された。スマートエネルギーの専門展との同時開催で例年以上の盛り上がりを見せたETWestから、MONOist編集部が注目した展示をピックアップ。 - 組み込みとスマートエネルギーの融合――ETWestとSEJ in Osakaが同時開催
西日本唯一の組み込み専門展「Embedded Technology WEST」とスマートエネルギー展「Smart Energy Japan」が同時開催へ。電力の配電・給電制御や消費電力の見える化、ZigBee、環境発電など、組み込みとスマートエネルギーの親和性の高さをアピール。 - 【ETWest2011】組み込み技術の最新トレンドが凝縮!! 関西版Embedded Technology展を見てきた
2011年6月16、17日の2日間、インテックス大阪で「Embedded Technology West 2011/組込み総合技術展 関西」が開催された。本稿では、ETWest2011会場で筆者が注目した展示デモの模様を中心にレポートする。 - 【ETWest2011】震災復興への取り組みを広くアピール!! TOHOKUパビリオン
先に行われた「Embedded Technology West 2011/組込み総合技術展 関西」では、宮城県と岩手県に拠点を置く企業5社が「TOHOKUパビリオン」に出展。震災に負けない力強い姿勢で、自社の技術力をアピールしていた。