2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Tokyo Ruby Kaigi 11に行ってきた。

Last updated at Posted at 2016-06-01

 TokyoRubyKaigi11に行ってきました。プログラムは以下のとおり、

表題 発表者
Streem "日経Linuxライター" まつもとゆきひろ
mruby/c 九州工業大学 田中 和明
Rubyに型があると便利か 株式会社spice life 栗原 勇樹
最速ウェブサーバの作り方 株式会社ディー・エヌ・エー 奥一穂
アプリケーションへのRubyインタープリターの組み込み 株式会社クリアコード 須藤功平
Re: Pattern Matching in Ruby 株式会社野村総合研究所 辻本 和樹
Image Recognition and Code that shouldn't exist Aaron Patterson
IMF: Image Manipulation Framework リクルートホールディングス 村田 賢太
Optcarrot:  A pure-ruby NES emulator 遠藤侑介

この中で最も私が関心を持ったのは 九州工業大学 田中 和明 先生の mruby/c のセッションです。発表内容にはコードを含む(つまり実装、開発の話をする)ことということでしたので、mruby/cという言葉が初耳(しかもweb畑)のわたしはすこし遠くからmruby/cを眺めてみようと思います。 
田中先生の発表を概要を傾聴させていただいた限りでまとめ、その後それについて自分なりに考察していきたいと思います。
(田中先生の発表のスライドはこちら, 事前インタービューはこちら

mruby/cについて(発表の内容)

しまねソフト研究開発センターで開発されているmrubyよりもさらに小型なrubyの実装です。
mrubyのVMはだいたい400KB以下ほどの容量であるのに比べ、mruby/cは40KBのほどに抑えられているそうです。
このサイズになるとArmよりもさらに小さいワンチップマイコン(そのなかで比較的大きめのもの)で実装が可能になるようでそこを目指しているということで、以下のような特徴があるということでした。

##GC(garbage collecter)がない
mruby/cにはガベージコレクターがありません。
ではどうやって動かしているのかというと実行するプログラムは非常に小さなものにかぎり、
そのプログラムが終了したタイミングで固有メモリ領域を一度初期化するという方法をとっています。
もし長いプログラムを実行したい場合、どうすれば良いのかについては次のConcurrencyで実現しているとのことでした。

##Concurrencyの確保
mruby/cはOSなし(つまりベアメタル)で動作するにもかかわらず
Concurrencyを確保しています。
マイコンクラスのコンピュータで動作させることを前提としているので、
複数コアでの実行ではなく、1コアでの実行になるため、
CPU時間を分割して複数のプログラムが同時に実行される(ように見える)
ようにしています。

##起動時間の特性
プログラムの起動時には以下のプロセスを実行します。
小さなプログラムコードを起動する際に非常に高速に起動するようになっています(ruby, mrubyとの比較については田中先生のスライドを参照ください)

  • VMを初期化します
  • クラスを作成します
  • クラス、メソッドをメモリーに登録します
  1. メソッドのエントリーポイントを作成します
  2. メソッドのシンボルを作成します
  3. メソッドのハッシュテーブルにエレメントを追加します
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?