mieki256's diary



2018/03/10() [n年前の日記]

#2 [ruby][mruby] mrubyのmrbgemを試す

mruby に機能を追加していく時は、mrbgem なるものを使うらしい。build_config.rb を編集して、追加したいアレコレを記述してビルドし直して、追加機能入りの mruby を作る…のだとか。

実際試してみないと感じが掴めないなと。試してみたり。

mruby-jsonを追加。 :

JSONのパースができるライブラリがあるらしいので追加してみた。

_mattn/mruby-json

"mrubyのファイル一式を置いてある場所"\build_config.rb を編集。

  # Use mrbgems
と書かれたあたりのところに、以下の行を追加。
  conf.gem :github => 'mattn/mruby-json'

mruby をビルドし直し。自分の環境は、Windows10 x64 + Visual Studio 2015 Community なので、スタートメニューから、Visual Studio 2015 → 開発者コマンドプロンプト for 2015 を起動。cd hoge で目的のディレクトリに移動してから、以下。
ruby ./minirake

出来上がった .exe は、少しファイルサイズが増えた。

mirb を起動して動作確認。
> mirb
mirb - Embeddable Interactive Ruby Shell
> jsontext = '{"x":100, "y":200, "names":["hoge", "fuga", "piyo"]}'
=> "{\"x\":100, \"y\":200, \"names\":[\"hoge\", \"fuga\", \"piyo\"]}"
> hash = JSON::parse(jsontext)
=> {"x"=>100, "y"=>200, "names"=>["hoge", "fuga", "piyo"]}
> hash["x"]
=> 100
> hash["y"]
=> 200
> hash["names"].each {|s| puts s}
hoge
fuga
piyo
=> ["hoge", "fuga", "piyo"]
> exit

機能として追加されたっぽい。なるほど、こういう感じで使うのか…な。

mruby-randomは追加できなかった。 :

疑似乱数が得られる、Random というクラスもあるらしいので追加しようとしたけれど…。エラーが出る…。

_matsumotory/mruby-random: mruby-random

build_config.rb を編集。以下を追加。
conf.gem :git => 'https://github.com/matsumoto-r/mruby-random.git'

ビルド。
ruby ./minirake

エラーが出る…。
rake aborted!
Don't know how to rake D:/Ruby/mruby/mruby/build/host/mrbgems/mruby-random/src/mrb_random.obj

どういう意味のエラーメッセージだろう…。

mruby-tinymtを追加。 :

疑似乱数に関しては、mruby-TinyMT という版もあるらしい。Ruby で使われてる Random、というか _Mersenne twister に、何か制限を加えて軽くした版、とかなんとか。

_matsumotory/mruby-tinymt: rand() and srand() method with TinyMT
_Tiny Mersenne Twister (TinyMT)

build_config.rb を編集。以下を追加。
  conf.gem :git => 'https://github.com/matsumoto-r/mruby-tinymt.git'

ruby ./minirake

こちらはビルドが通った。

> mirb
mirb - Embeddable Interactive Ruby Shell
> tmt = TinyMT.new(0xf50a1d49, 0xffa8ffeb, 0x0bf2bfff)
=> #<TinyMT:0xd28ad0 tinymt32_ctx=#<Object:0xd28ab0>>
> tmt.srand(5)
=> nil
> tmt.rand()
=> 0.061755396425724
> tmt.rand()
=> 0.47946119308472
> tmt.rand(6)
=> 5
> tmt.rand(6)
=> 5
> tmt.rand(6)
=> 3
> tmt.rand(6)
=> 1
> tmt.rand(6)
=> 5
> exit

動いてるっぽい。

その他のライブラリ。 :

以下でその他のライブラリが紹介されてるのでメモ。

_mruby - libraries

以上です。

過去ログ表示

Prev - 2018/03 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project