読者です 読者をやめる 読者になる 読者になる

ちくわ

ちくわにきゅうりを入れるとうまい

【読書メモ】組込Ruby「mruby」のすべて(第1回)

Ruby

以前 sale か何かで購入だけして積読(電子書籍の場合はなんて言うんだろう)していた本です。
Ruby を勉強し始めたし mruby が社内で活用例が出てきたし、平行して覚えていこうという魂胆で読み始めました。 ただ読むだけよりもメモして残していくと記憶にも残るので要約 & ちょうどブログを毎日書く企画に合うということで。とはいえ(自分が)内容を思い出せる程度のメモです。おっと思った方は是非是非ご購入ください。

第1回 組込でも使える時代に

mruby 誕生の背景から、組込に求められる条件や準拠した背景等が書かれており、mrbuy がどういったものかを知ることができました。

  • 組み込みソフトウェアに柔軟で生産性の高級言語で記述したいという需要が高まってきた

    • Lua が注目されているが、Ruby を使えたら便利なのでは
    • そこで mruby が誕生
    • 本家 Ruby は、mruby と区別するとき CRuby と書いている
    • mruby の m は「embed(組み込み)」であり、「Minimalistic」の m でもある
  • mruby の設計方針

    • JIS/ISO 尊重 - 組み込みの領域では標準規格は非常に重視されているらしい。それを意識して。
    • 組み込みAPI - Ruby で書かれたプログラムを呼び出す想定はしてない
      • 必要なデータは構造体に - 「mrb_state」に実行に必要な情報が格納されている。
      • システムに何かを強制しない - mruby の事を意識せず開発したい
    • 移植性 - 多様な環境に対応する為。ファイル入出力すらも外せるようになっている
    • 省メモリー - 組込を意識して可能なかぎり省メモリを意識している
      • コアに必須でない機能は「mrbgem」に纏まっている
    • ソフトリアルタイム - 絶対に時間内に終わらせる処理をハードリアルタイムといい、一方で、長い遅延が無いことを期待される弱いリアルタイム性のこと。mruby はここを目指している。

試してみる

@mac です

~ $ ghq get https://github.com/mruby/mruby
~ $ ghq look mruby
bash-3.2$ make
ruby ./minirake
-- -- snip -- --
bash-3.2$ bin/mirb
mirb - Embeddable Interactive Ruby Shell

>
 => nil
> print "hello world\n"
hello world
 => nil
> puts "Hello World!"
Hello World!
 => nil
> quit

対話型 mruby は CRuby でいう irb に m がついただけなのか。