読者です 読者をやめる 読者になる 読者になる

mrubyのはじめかたメモ

はじめに

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]$