LoginSignup
9
7

More than 5 years have passed since last update.

mrubyをひとまず触ってみた

Posted at

mruby未体験...

mrubyがリリースされた!というニュースが流れて
長い月日が流れて、一度もmruby処理系に関して触れたことがない自分。

mrubyについてどうすれば良いのか、とか其のところすらわかっていないので、
mruby Advent Calendarができたということで学びつつやってみたいなと思い、
書いてみます。

自分の開発環境はMac OS Xで、
他OS上ではまだ一度もいじったことがない状態です。
ご容赦くださいm(_ _)m

開発環境を整えたい

mrubyの環境を整えるにはどうすればいいのか?ということで
homebrewにFormulaあるかな?と思ってbrew searchしてみました

> brew serach mruby
mruby

あった。ということでインストール。

> brew install mruby

対話環境を触る

Executing Ruby code with mruby を見てみると
mirbが対話環境らしい。ので起動してみる。

> mirb
mirb - Embeddable Interactive Ruby Shell

>

何ができて何ができないのだろう?

2015年も終わる状態でこんなこと書いてますが、わからなかったりします。
Rubyフルセット環境からミニマムにするために切り落としている機能はなんだっけ?って探してみました。

軽く触れてみる

> class Hoge
*   def name
*     puts 'hoge'
*   end
* end
 => :name
> Hoge.new.name
hoge
 => nil

classはある。

(1..100).to_a.delete_if { |x| x % 2 == 0 }
 => [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]

問題なさそう?

> require 'test.rb'
(mirb):13: undefined method 'require' for main (NoMethodError)

おっと、requireないのね...

mrbgemのインストール

とある文字列を一方向ハッシュ化したい場合どうすればよいか

mruby.orb/libraliesで、使いたいライブラリを探して入れる感じになるらしい。

mruby-digestを使ってみる。

mruby-digestのインストール

mrubyでのgem(mrbgem)インストールはどうすればいいのかな?と思ってググってみた。

build_config.rbでビルドの設定をするようだ...(知らなかった)

テスト用のディレクトリにbuild_config.rbファイルを作り、mruby-digestを使えるようにしてみる

ビルドをして自分のmubyを作らないといけない

ミニマムなセットのmrubyにあれこれ追加したい場合、
先ほどあげたbuild_config.rbに入れておきたいmrbgemパッケージを
同梱させる形でビルドしないといけないようだ。

mrubyのソースコードをgithubの公式リポジトリから取ってきてビルドしよう。

> git clone https://github.com/mruby/mruby.git
> cd mruby
> vi build_config.rb

build_config.rbについてmruby-digestを加える。

MRuby::Build.new do |conf|
  conf.gem :git => 'https://github.com/iij/mruby-digest.git' # 今回追加
end

最初間違えてMRuby::Build.new('host-debug')に追加してDigest使えなくてびっくりした。
そしてビルド。

> make
...

しばらく待つ。
ビルドが終わったら、mruby-digestが利用できるか確認してみる。

> cd bin
> ./mirb
> Digest
 => Digest
> Digest::SHA256.digest('hogehoge')
 => "LqmL\362\021\307\267\322\363#<\224\027q\255\005\a\352[\254\371;I'f\252A\256\237r\r"
> Digest::SHA256.hexdigest('hogehoge')
 => "4c716d4cf211c7b7d2f3233c941771ad0507ea5bacf93b492766aa41ae9f720d"

おお、使えてる。

ちょっと触っただけの記事だけど

mrubyについてどうすればよいのかさっぱりわからかったので、
ひとまず一歩、という感じがする。
欲しいライブラリについては自作するか、
Related Projects一覧にあるものを
持ってきてビルドして配布して利用する形になるんだなという感じ。

コアセット以外の機能について欲しいものだけbuild_configに書き込んで利用する、という
わかりやすさがよかった。

小さいセットだから使おう、というのもありそうだけど
用途によっては(ngx_mruby)
通常業務で利用できそう。

薄い内容だけど、そんな感想を持った。
正式公開されて2年以上経つけど、今更mrubyを触ってみた、という記事でした。

9
7
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
9
7