mrubyに関する論文を読む2017

今年度の下半期に[放送大学](http://www.ouj.ac.jp/)に入学したのでそれっぽい話でもしようかと思い考えたりしてました。
結果、学徒として論文でもいくつか読んでみようかと思い4本ほど読んでみたのでそれについて軽く書いてみます。

ちなみに放送大学に入ってから気がついたのですが、大学生の特権として大学で一括して契約しているおかげでIEEEなど登録しないと読めない論文などが読み放題で今回とても役に立ちました。

## 1本目: [mruby -- Rapid Software Development for Embedded Systems](http://ieeexplore.ieee.org/document/7166160/)

九州に引っ越すきっかけを作ってくださった大学の先生の論文です。
mrubyの基本アーキテクチャなどの解説が主体で、ある程度の内部構造も把握した上で入門したい方におすすめしたい論文でした。

- スクリプト言語による開発効率の向上
- スクリプト言語でありながらコンパイルできる特性
- 逐次（incremental）GCによる停止時間の短さ
- プラットフォーム非依存性

などについてそこそこ書いてあるのでmruby開発者には持っておきたい基礎知識がだいぶつくかと思います。
mrubyはCRubyなどと比べると大分開発手法などの毛色が違うので、そういったところで発生しがちな誤解などを減らせるので、mrubyを選択肢として考えたい場合にもよいかもしれません。

性能評価にCore 2 Duo搭載マシンを使っているのは、2015年の論文とはいえちょっと謎です。
マシンとしては大分古いかCPU性能が低いと言ってもいい気がするので。

## 2本目: [mruby on TECS: Component-Based Framework for Running Script Program](http://ieeexplore.ieee.org/document/7153813/)

[TECS](https://www.toppers.jp/tecs.html)というTRONなどで利用されるソフトウェア部品を組み合わせる仕組みをmrubyと連携させる研究なようです。
C言語で実装したコンポーネントをmrubyと連携させるといったことが主体なようですが、インターフェース宣言言語などを用いるため普通にmrbgemを書くよりも負担が少なくてよいかもしれません。
マルチRiteVMなど、RTOSの特性を活かした部分もかなりあるので、そういった用途でmrubyを使いたい方に参考になるかと思います。

通常、ほとんどの処理をRubyスクリプトで書きがちな部分をRubyが得意な分野に絞って書くとかなりの性能向上が見込めるといったことも書いてあって興味深い研究でした。

## 3本目: [Lightweight Ruby Framework for Improving Embedded Software Efficiency](http://ieeexplore.ieee.org/document/7796587/)

2本目に上げた論文の研究の続きと見るべき論文かと思います。
上の論文での研究成果とフレームワーク化していくつかの追加機能でさらに開発効率を上げたものでした。

- Bluetooth loaderというBluetoothを用いたソフトウェア更新による開発
- VMスケジューラーなどのVM管理機構の追加

などフレームワークとしてふさわしく仕上がってきているようです。

Bluetooth loaderは、mrubyのバイトコードしかやりとりできないため、C言語で書いた部分の更新はできないようですが、mrubyで書かれた部分ならSDカード書き換えなどが不要になって開発効率がとても上がっているようです。
VMスケジューラーは、従来開発者たちがそれぞれでやっていたことフレームワークとして管理してくれるようにして、不要な再開発を減らしてくれることに期待を持てます。

## 4本目: Component-Based Framework of Lightweight Ruby for Efficient Embedded Software Development

2本目、3本目の論文をまとめたものみたいです。
[コンピュータソフトウェア誌 34巻 4号](https://www.jstage.jst.go.jp/browse/jssst/34/4/_contents/-char/ja)に載っていたのを偶然図書館で見つけて今回の記事を書くきっかけになった論文になります。
（そういえば、最近J-STAGEのデザインがかなり変わってとても驚きました）

J-STAGEにアクセスするとわかるかと思いますが、論文自体が載っているのかわからない状況で、論文誌を買わないと読めませんでした。
丸善書店で注文して数日前にやっと入手できた状況でこの記事を書くのになかなか苦労させられました。

内容としては、2本目と3本目の論文をまとめたものでかつ3本目の部分で洗練や追加情報がある感じでした。
VMスケジューラーの性能評価やバイトコードの読み込みなどとても参考になる部分が増えています。

ただ、難点として関連研究との比較として挙げられているのがほとんど言語処理系にも関わらず今回のフレームワークと比較を行っていて比較として疑問を感じることです。
（Ruby処理系（CRubyやJRuby）などとRuby on RailsやHanamiを比較するようなことなので優位性を示すのには不適切かと思います）

2本目の論文と3本目の論文を読む時間がなければこの論文をおすすめする程度かと思いました。

## おまけ

短いのや、少しだけ出てくるのを取り上げます

### [EV3RT: LEGO Mindstorms EV3用リアルタイム・ソフトウェア・プラットフォーム](https://www.jstage.jst.go.jp/article/jssst/34/4/34_4_91/_article/-char/ja)

EV3RTに関する論文ですが、ちらっとだけmrubyが出てきます。

### [組込み向け軽量Rubyに関する研究・開発：ハードウェア支援について](https://www.jstage.jst.go.jp/article/jceeek/2012/0/2012_402/_article/-char/ja)

RiteVMを一部FPGA化する研究のようです。
なかなかおもしろいのですが、RiteVMはJVMのハードウェア化と同じかより難しいのではと思ったり。

### [組み込み向けRubyの開発と実装に関する研究: RiteVMの実装と検証について](https://www.jstage.jst.go.jp/article/jceeek/2012/0/2012_403/_article/-char/ja)

RiteVMの実行時メモリに関して評価を行っているようです。
Ruby 1.8よりも低いみたいなので、技術的な進歩を感じれていいですね。

### [軽量Rubyを利用した教育教材の開発と評価に関する研究](https://www.jstage.jst.go.jp/article/jceeek/2013/0/2013_375/_article/-char/ja)

[GR-SAKURA](http://sakuraboard.net/gr-sakura.html)の紹介みたいです。

### [軽量Rubyを使った組込みアプリケーションの開発](https://www.jstage.jst.go.jp/article/jceeek/2013/0/2013_378/_article/-char/ja)

Androidでのmruby開発に関することのようです。

### 参考 [Google Scholar](https://scholar.google.co.jp/scholar?hl=en&as_sdt=0%2C5&q=mruby&btnG=)

検索した限りだと、Rubyのいち実装として取り上げられることもあるようです。

## ざっくりとしたまとめ

ざっくりとしか読んではいない上にまだ本数もそれほど多い状況ではないので研究分野としていいのか迷う感じがします。
ただ、極めて制限された環境で動くRubyとなると現状mrubyが最有力なので、Rubyの応用を考えるともっとあってもよいのではと思ったり思わなかったり。