組み込みC言語プログラマのためのmruby入門(前編) ―― Rubyとmruby,何が違う? どう違う?

邑中 雅樹

tag: 組み込み

技術解説 2012年10月19日

 Rubyは,まつもと ゆきひろ氏(通称Matz)が開発したプログラミング言語です.Rubyは2004年に発表されたWebアプリケーションのためのフレームワーク「Ruby On Rails」の爆発的ヒットによって,広く知られるようになりました.Rubyは,日本で開発された言語としては初めてISO規格となり,最近では経済紙でもRubyへの言及を見かけるようになりました.

 Rubyは,「純粋オブジェクト指向」注1というパラダイムを取りつつも,プログラマのストレスを軽減することを第一として設計されています.そのため,ワン・ライナ(コマンド・ライン1行で済ませる作業)から,twitter.comのような大規模なWebアプリケーションまで,幅広い分野で活用されています.

注1:純粋オブジェクト指向とは,あらゆる値をデータとメソッド(C言語の関数に相当)を持つオブジェクトとして扱うことを指す.詳しくは後述する.

 

 Rubyは,広義には言語仕様です.そして,Rubyには,その言語仕様に準拠した,いくつかの処理系(実装)があります.その一つが,組み込み分野への適用をねらったmruby(eMbeddable Ruby)です.筆者は,このembeddableという単語には,二つの意味が含まれていると考えています.一つは組み込みシステムへの適用という意味で,もう一つはソフトウェア部品としてRubyをアプリケーションに組み込むという意味です.

 mrubyは,ほかのいかなるRuby実装とも異なっています.また,ISOで標準化されたRuby言語仕様を踏襲しつつ,大胆に仕様変更している部分もあります.ここでは,Rubyおよびmrubyについて解説し,組み込みシステムへの適用の有効性について考えてみたいと思います.

 

1.これまでのRuby処理系とmruby,どこが違う?

 Rubyには既に,オープン・ソースの実装が複数存在しています.この状況で,mrubyを新規に実装する必要があったのはなぜなのでしょうか.


●アプリケーションからmrubyの環境を呼び出す

 mruby以外のRuby処理系は,OS上の1プロセスとして存在し,それ自身が環境として動作します(図1).C言語による拡張を許してはいますが,基本的にRubyで記述されたアプリケーションは,処理系が提供した砂箱の中で動作することが期待されます.

 

図1 一般的なRuby処理系とアプリケーション・プログラムの関係

 

 

 一方,mrubyは,既に存在するアプリケーションに埋め込むことを想定しています.アプリケーションからmrubyの環境を呼び出すようなイメージです(図2).mrubyのソース・ツリーには,のちほど紹介するように,MRI(Matz' Ruby Implementation)注2と同様の対話型シェルやコマンド・ライン・ツールがサンプルとして提供されてはいます.しかし,mrubyの使われ方を考えると,それらはあくまでもサンプルと考えるべきです.

注2:MRI(Matz' Ruby Implementation)は,Rubyの開発者であるまつもとゆきひろ氏自身が開発したRuby処理系であり,公式な実装とされている.1.9系のRubyはMRIと区別されることもあるが,本稿では広義に捉えている.

 

図2 mrubyとアプリケーション・プログラムの関係

 

 

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日