連載
» 2015年07月13日 07時00分 UPDATE

mruby概論(1):“Rubyの良さを組み込みに”を合言葉に開発された「mruby」とは何か (2/2)

[石井宏昌,MONOist]
前のページへ 1|2       

 さらにmrubyは組み込み開発での利用を意識した開発がされており、以下のような特徴を持っています。

コンパクトな処理系「mruby VM」の採用

 ・少ないメモリ(RAM100Kバイト)程度で動作

 ・VM(仮想マシン)上で動作するため環境依存しません。また組み込み開発での安全性を考慮し、Rubyアプリケーションはスクリプトですが、mrubyアプリケーションはmrubyコンパイラによりバイトコードに変換して利用したり、スクリプトのまま利用できたりと自由度が高くなっています(動作確認済OS: Windows、Linux、Mac OS、ITRON、VxWorks、μCLinux、Android、iOS)。

既存C言語資産との高い互換性

 ・mrubyからC/C++の呼び出し可能

 ・C/C++からmrubyアプリの呼び出し

 ・mrbgemsというライブラリフレームワークによって容易に機能拡張可能(ビルド時に必要なライブラリを組み込めます)

photo mrubyソフト構成図 「mrbgems(mrubyライブラリ)」の追加によりmrubyの機能拡張が可能で、「mrbgems」はCまたはmrubyで記述可能です。既存のC/C++アプリケーションとハイブリット構成になっています

 mrubyに標準で用意されているライブラリ(ミニマルライブラリ)は下記の通りです。

photo

インクリメンタルGC(ガベージコレクション)採用

 緩やかにGCを行うことでシステムのリアルタイム性を損ないません。GCの実行時間やタイミングはAPIにて設定可能ですし、Generational ModeというGCの頻度を最適化する手法も取り入れています。

クロス開発不要のコンパイラ言語

 環境に合わせたVMを用意することでmrubyアプリケーションは動作しますので、クロス開発は不要になります。また、一般的な組み込み開発ではハードウェア開発の後にソフトウェア開発を行いますが、mrubyではPC上でシミュレートすることで、製品開発を待たずにソフト開発を開始できるのも大きなメリットです。このため、開発環境でのトライ&エラーの繰り返しが容易に行えます。

mrubyのライセンス

 MITライセンスのオープンソースソフトウェアとして公開されています。利用/改造した場合にソース公開の必要はありません。

mrubyのソフトリアルタイム性

 mrubyは十分高速とはいえ、C言語に比べると動作が遅いこともあり、ハードリアルタイムが必要な部分にはC/C++を、mrubyはソフトリアルタイムな部分にと使い分けていきます。また、mrubyはRuby同様に、メモリの割り当てや解放などの管理が言語処理系により自動で行われ、動的型付け言語(型等も実行時に判断される)であることも特徴です。

photo mrubyとC、C++との比較

 その他の特長として、Rubyは2011年にJIS X 3017として制定され、翌年の2012年には日本発のプログラミング言語としては初めて国際標準規格 ISO/IEC 30170として承認されました。mrubyはそのRubyに準拠しています。

 ここまでmrubyの概略、そのメリット、C/C++との主な相違点について紹介しました。次回は「IoT開発にmrubyを投入する」状況を想定し、mrubyを実際に触ってみることにします。

お知らせ

「軽量Ruby・実用化促進ネットワーク」設立総会が2015年7月23日(木)、福岡にて行われます。Ruby開発者 Matzとのトークセッションやmrubyライブコーディング、mrubyのリファレンスボードである「enzi」が当たる抽選会もあるようです。詳しくはこちら 軽量Ruby普及・実用化促進ネットワーク設立記念講演会・交流会をご参照ください。


前のページへ 1|2       

Copyright© 2017 ITmedia, Inc. All Rights Reserved.