mruby組み込み活用テクニック(1) ―― mrubyのビルド・ツールRakeを知る

邑中 雅樹

tag: 組み込み

技術解説 2013年4月19日

●Rakefileの基礎

 mrubyのRakefileに当たる前に,まずは基礎をざっと流しておきたいと思います.仮に図1のようなプロジェクトがあったとします.

 

図1 サンプル・プロジェクト

 

 

 これをMakefileで書くと,リスト2のようになります.これと同等の動作をするRakefileは,リスト3のようになります.

 

リスト2 Makefileの例

all: hello

main.o: main.c hello.c

hello.o: hello.c

hello: main.o hello.o

clean:
  -rm -f hello *.o

 

リスト3 Rakefileの例(その1)

require 'rake/clean'
CLEAN.include %w(hello *.o)

task :default => ['hello']

file 'main.o' => ['main.c', 'hello.h'] do
  sh 'gcc -c -o main.o main.c'
end

file 'hello.o' => ['hello.c'] do
  sh 'gcc -c -o hello.o hello.c'
end

file 'hello' => ['main.o', 'hello.o'] do
  sh 'gcc -o hello main.o hello.o'
end

 

 require文があったり,do~endでくくっているところが見られたりと,Ruby言語を感じさせるところはあります.しかし,Ruby言語の知識が無くてもおおむね理解できそう,という気分になるのではないでしょうか.

 リスト3は,さらに短くすることもできます(リスト4).

 

リスト4 Rakefileの例(その2)

require 'rake/clean'
CLEAN.include %w(hello *.o)

rule '.o' => ['.c'] do |task|
  sh "gcc -c -o #{task.name} #{task.source}"
end

task :default => ['hello']

file 'main.o' => ['main.c', 'hello.h']

file 'hello.o' => ['hello.c']

file 'hello' => ['main.o', 'hello.o']

 

 #{task.name}のあたりで,Ruby言語っぽさがにじみ出てはいます.しかし,全体としては,さらにリスト2に近い表記になったかと思います.このように,Rakeは,実はRuby言語でありながらも,Ruby言語っぽさを可能な限り隠しています.


*   *   *

 

 今回は,mrubyのビルド環境を理解するために必要な背景のみを概観しました.次回からは,mrubyのソース・ツリーを参照しながら,ビルド環境を説明していきます.

 また,本家のmrubyは,機器組み込みだけでなくアプリケーション組み込みに用いることも想定しているため,機器組み込みでのみ求められる機能については採用が遅れる傾向にあります.ビルド環境についても,同様の傾向があります.そこで,mrubyからの分家であるmonami-ya.mrbを例題に,機器組み込みに必要な機能追加の方法についても説明する予定です.

 

むらなか・まさき

 
組み込みキャッチアップ

お知らせ 一覧を見る

自分のスキルや傾向を無料で診断できる! 「全国スキル調査2014」,8/17まで

『FPGAマガジン No.4』,書店とWebで好評発売中! ダウンロード版(PDF)も!

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る

東京エレクトロン デバイス,D2Cコンテスト参加者限定でCPUボード「Armadillo-440」と「FEZ Spider」を特価で提供

Rochester Electronics,ルネサス エレクトロニクスの保守供給終了製品を同社に代わって提供

福岡県Ruby・コンテンツビジネス振興会議と福岡県,秋葉原にてmrubyの技術&ビジネス振興イベントを開催

u-blox,アンテナを内蔵したGPS/QZSSモジュールを開発

OTSL,自動車産業の機能安全規格に対応するためのファイル変換ツールを開発

Tech Villageブログ

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

ET2013でDevice2Cloudコンテスト優勝チームが堂々展示

2013年11月25日

Hamana Project

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

2012年6月26日