組み込み向けRubyとして、まつもとゆきひろ氏が開発した「mruby」。専用の開発ボードが複数発売され、LEGO MINDSTORMSなど様々な環境への移植が進んでいます。今回は数千円で入手できる開発ボードを実際に使って、Lチカ(LEDチカチカ)から始めてみます。
Rubyは近年、「Ruby on Rails」の普及などにより、Webアプリケーションを開発する言語して注目されてきました。しかしRubyは、Web専用の言語というわけではありません。RubyでiOSアプリを構築できる「RubyMotion」や、Androidアプリを構築できる「Ruboto」のように、様々なアプリケーションを構築できる環境があります。
そんな中、Rubyの活用範囲をさらに大きく広げる「mruby」が2012年4月にリリースされました。mrubyはRubyの作者である、まつもとゆきひろ氏が中心となり、組み込み機器などリソースの少ない環境をターゲットとした新しいRubyの実装です。
一見“使えない”言語だが…
mrubyはCPUやOSに依存せず、C99*対応のコンパイラが動く環境であれば、動作します(表1)。そのため、LinuxやWindowsだけでなく、OSレスの環境やTOPPERS(ITRON)でも動作が確認されています。
特徴 |
---|
▽省資源 |
▽ISO/JISをベースしたCRubyのサブセット |
▽不必要な機能を取り外し可能 |
▽CPU非依存 |
▽OS非依存 |
▽C99準拠 |
mrubyは、2011年にJIS、2012年にISO/IECに承認されたRubyの言語仕様を基に作られています。ただし一般的に使われているRuby(以下CRuby)の仕様を網羅しているわけではなく、Rubyと呼べる最小限の機能に限定しています。
mrubyは、パッケージ管理システムの「RubyGems」もサポートしていません。標準添付ライブラリも仕様に含んでいませんし、「String」や「Array」といったコアクラスについても、一部のメソッドは仕様の中に入っていません。
CRuby向けに提供されているライブラリなどもそのままでは利用できません。ライブラリを使っていない場合でも、mrubyで提供されていないメソッドが多くあるので、自分で書いたRubyのプログラムは必ずしも、そのままではmrubyで動かせません。
組み込み機器でこそ生きる
Ruby on Railsも動かないし、その他のライブラリも既存のアプリも動かない、そんなmrubyを使うメリットはどこにあるのでしょうか?
mrubyは今までRubyが動かなかったような少ないリソース環境をターゲットとしています。組み込みシステムと呼ばれる環境で、家電や自動販売機など機械を制御するためのプログラムや、HDDレコーダーやデジカメなどのデジタル機器のプログラムなどをターゲットとしています。そのためmrubyの仕様は、CRubyに比べて非常にコンパクトになっています。
昨今では、家電やデジタル機器もネット対応などプログラムが複雑化している上に、開発期間の問題もあり、C言語など旧来の開発環境では開発が追いつかなくなってきています。
そんな中、開発効率の高いRubyで開発をしたいという需要が高まり、2010年にまつもと氏が中心となって産学共同プロジェクトとしてmrubyの開発が始まりました。その成果が2012年4月にGitHubのmrubyリポジトリーに公開されました(写真)。
mrubyの開発はその後もGitHub上で進められています。メーリングリストはなく、問題の報告や議論は、GitHubの「Issue」ページで行われています。現在、コミッターはまつもとさん1人で、積極的に開発に参加してパッチを送ったり議論をしたりしている人が、筆者も含め十数人います。