はじめに
mrubyについて2ヶ月触ってなかったらきれいさっぱり忘れていたので、ここでメモがてら記録を残してみることにします。
環境
- mruby 1.2.0
- OSX 10.11.6 El Capitan
ビルド
mruby 1.2.0をGitHubからダウンロードして、展開します。
[~/work]$ wget https://github.com/mruby/mruby/archive/1.2.0.zip --2017-01-12 22:30:54-- https://github.com/mruby/mruby/archive/1.2.0.zip Resolving github.com... 192.30.253.113, 192.30.253.112 Connecting to github.com|192.30.253.113|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://codeload.github.com/mruby/mruby/zip/1.2.0 [following] --2017-01-12 22:30:55-- https://codeload.github.com/mruby/mruby/zip/1.2.0 Resolving codeload.github.com... 192.30.253.121, 192.30.253.120 Connecting to codeload.github.com|192.30.253.121|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 501087 (489K) [application/zip] Saving to: ‘1.2.0.zip’ 1.2.0.zip 100%[==================================>] 489.34K 96.6KB/s in 6.0s 2017-01-12 22:31:02 (82.0 KB/s) - ‘1.2.0.zip’ saved [501087/501087] [~/work]$ [~/work]$ mv 1.2.0.zip mruby-1.2.0.zip [~/work]$ unzip mruby-1.2.0.zip Archive: mruby-1.2.0.zip 22464fe5a0a10f2b077eaba109ce1e912e4a77de creating: mruby-1.2.0/ inflating: mruby-1.2.0/.gitignore inflating: mruby-1.2.0/.travis.yml inflating: mruby-1.2.0/.yardopts inflating: mruby-1.2.0/AUTHORS inflating: mruby-1.2.0/CONTRIBUTING.md inflating: mruby-1.2.0/ChangeLog (省略) inflating: mruby-1.2.0/test/t/typeerror.rb inflating: mruby-1.2.0/test/t/unicode.rb inflating: mruby-1.2.0/travis_config.rb [~/work]$ cd mruby-1.2.0 [~/work/mruby-1.2.0]$
その後、minirakeコマンドを実行するとビルドが行われます。
[~/work/mruby-1.2.0]$ ./minirake (in /Users/miyohide/work/mruby-1.2.0) CC src/array.c -> build/host/src/array.o CC src/backtrace.c -> build/host/src/backtrace.o CC src/class.c -> build/host/src/class.o CC src/codedump.c -> build/host/src/codedump.o CC src/compar.c -> build/host/src/compar.o CC src/crc.c -> build/host/src/crc.o CC src/debug.c -> build/host/src/debug.o (省略) mruby-random - Random class mruby-object-ext - Object class extension mruby-objectspace - ObjectSpace class mruby-fiber - Fiber class mruby-enumerator - Enumerator class mruby-enum-lazy - Enumerable::Lazy class mruby-toplevel-ext - toplevel object (main) methods extension mruby-compiler - mruby compiler library mruby-bin-mirb - mirb command - Binaries: mirb mruby-bin-mruby - mruby command - Binaries: mruby mruby-bin-strip - irep dump debug section remover command - Binaries: mruby-strip mruby-kernel-ext - Kernel module extension mruby-test - mruby test ================================================ [~/work/mruby-1.2.0]$
作られたバイナリはbinディレクトリに作成されます。試しにmrubyのバージョンを出力してみます。
[~/work/mruby-1.2.0]$ ./bin/mruby --version mruby 1.2.0 (2015-11-17) [~/work/mruby-1.2.0]$
Hello World
定番ですが、Hello Worldを出力してみます。
まずはソースです。mrubyはRubyと文法が同じなので、Hello Worldは次のようにかけます。
p 'Hello mruby World.'
これを実行します。mrubyコマンドを使ってファイル名を指定することで実行できます。
[~/work/mruby-1.2.0]$ cat hello_world.rb p 'Hello mruby World.' [~/work/mruby-1.2.0]$[~/work/mruby-1.2.0]$ ./bin/mruby hello_world.rb "Hello mruby World."
mrubyはソースをコンパイルすることができます。コンパイルするにはmrbcコマンドを使います。
[~/work/mruby-1.2.0]$ ./bin/mrbc hello_world.rb [~/work/mruby-1.2.0]$ ls -l hello_world.* -rw-r--r-- 1 miyohide staff 105 1 12 22:51 hello_world.mrb -rw-r--r-- 1 miyohide staff 24 1 12 22:47 hello_world.rb [~/work/mruby-1.2.0]$
作成されたバイナリ(hello_world.mrb)を実行するには、mrubyコマンドに-bオプションを付けます。
[~/work/mruby-1.2.0]$ ./bin/mruby -b hello_world.mrb "Hello mruby World." [~/work/mruby-1.2.0]$