LoginSignup
3
0

紹介(introduction)

mrubyは、Rubyの小型版です。
mruby/cは、mrubyコンパイラを利用して生成した拡張子mrbファイルを実行できるさらに小規模なruby実行環境です。
http://www.s-itoc.jp/activity/research/mrubyc/

mrubyはRubyの基本機能を持っており、
mrubyコンパイラは、Rubyコンパイラのまつもとゆきひろさんが書かれています。
https://github.com/mruby/mruby

基本的なrubyプログラムは、mruby, mruby/cで動きます。

<この項は書きかけです。順次追記します。>

要点1

mruby/cの実行は、拡張子mrbファイルをmrubcコマンド(Vertual Machine)で呼ぶ

要点2

mrbファイルは、mrbcコマンド(mrubyコンパイラ)でrbファイルから変換して作る.

要点3

mruby環境は
http://github.com/mruby/mrubyから
mrubyc環境は
http://github.com/mrubyc/mrubycから
取得しそれぞれmakeコンパイルする。

要点4

gcc, ruby, mruby, mrubycの版が違うと対応しないかもしれない

要点5

mrubycは小さく、各種CPUに対応して作り易い

経緯(history)

田中和明さんのmrubyの講義を聞いたのは過去2回。
田中和明さんのmruby/cの講義を聞くのは3回目。

これまでもすごく興味は持っていたが、自分が何をするといいか見当がついてなかった。

http://swest.toppers.jp/
swestでRuby, mruby, mruby/cの関係者6人の方とお話しをした。
まつもとゆきひろさんはじめ、Ruby, mruby, mruby/c関係者と同時に話をしたのは初めて。

自分が発言したのは「キーワード引数をコンパイラでmrubyで対応できるようにならないか」
参加者から「静的な解決をすればできるはずだけど、、、」

swestに参加していただいた方々の議論の中で、音楽関係のプログラムを組みやすくするためのdelayについてよい提案があった。

記事(article)

俄然やる気になり、mruby/cを触ろうと qiitaに
mruby/cを導入してみた(Mac編) 課題11(1つ解決)
https://qiita.com/kaizen_nagoya/items/ae733370b5ca1b5b2e46
という記事を書いている。

mruby/cはまだ、brewもapt も対応していないことがわかった。

そこで、docker でmruby/cを導入し、結果をhubにあげた。利用の仕方は下記

docker mrubycの利用方法

$ docker pull kaizenjapan/mrubyc
$ docker run -it kaizenjapan/mrubyc
root@f5fb4d1350a8:/# cd mrubyc
root@f5fb4d1350a8:/mrubyc# cd sample_ruby
root@f5fb4d1350a8:/mrubyc/sample_ruby# /mruby-1.3.0/bin/mrbc basic_sample01.rb
root@f5fb4d1350a8:/mrubyc/sample_ruby# ../sample_c/mrubyc basic_sample01.mrb
30
-10
30

作成(production)

docker pushまでの経緯
##公式gcc。
gccを使うため、今回は公式gcc dockerを利用。
なぜかbisonが入っていないので入れる。

$ docker run -it --name gcc gcc
bash
$ apt update; apt -y upgrade
$ apt install bison ruby wget

##mruby 1.3.0
なぜかdockerだと1.4.1だとmrubyc実行時にエラーになる。
mac だとmruby 1.4.1 でもエラーにならなかったはず。

$ wget https://github.com/mruby/mruby/archive/1.3.1.zip  
$ unzip 1.3.0.zip
$ cd mruby
$ make

mrubyc

$ git http://github.com/mrubyc/mrubyc.git
$ cd mrubyc
$ make

docker hubへの登録

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
04cbd59912eb        mrubyc:latest       "/bin/bash"         23 seconds ago      Up 21 seconds                           sharp_franklin
$ docker tag 0d4197b2f770  kaizenjapan/mrubyc:latest
$ docker images
REPOSITORY                                              TAG                 IMAGE ID            CREATED             SIZE
kaizenjapan/mrubyc                                      latest              0d4197b2f770        14 minutes ago      1.86GB
$ docker push kaizenjapan/mrubyc:latest

課題

課題1 Path

まだPath設定をしていない。コマンドはfull pathもしくは相対pathで実行

mrc.sh
#!/bin/bash
/mrubyc/sample_c/mrubyc $1.mrb

mrcの実行

root@04cbd59912eb:/mrubyc/sample_ruby# chmod +x mrc.sh
root@04cbd59912eb:/mrubyc/sample_ruby# ./mrc.sh basic_sample01    
30
-10
30

この項は、まだdocker hubに反映していない。

課題2 apt

apt install mrubyは、1.2.1を導入する。
mruby 1.2.1 だと, mrubycでError: Illegal bytecode.

課題3 brew

brew install mrubycがない

課題4 dockerfileをまだ書いてない

課題5 sampleがmrbになっていない

mrb.sh
#!/bin/bash
for rb in `ls -1 *.rb`
do
	/mruby-1.3.0/bin/mrbc $rb
done

mrb.shの実行

root@04cbd59912eb:/mrubyc/sample_ruby# chmod +x mrb.sh
root@04cbd59912eb:/mrubyc/sample_ruby# ./mrb.sh

この項は、まだdocker hubに反映していない。

課題6 編集

現状では普段使うエディタが入っていない。
vim導入はまだdocker hubに反映していない。

root@04cbd59912eb: apt install vim

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>

文書履歴(document history)

ver. 0.10 初稿 20180905
ver. 0.11 要点、課題追記 20180906朝
ver. 0.12 エディタ 追記 20180906 昼
ver. 0.13 docker hubへの登録 追記 20180906 午後2時
ver. 0.14 ありがとう追記 20230413

最後までおよみいただきありがとうございました。

いいね 💚、フォローをお願いします。

Thank you very much for reading to the last sentence.

Please press the like icon 💚 and follow me for your happy life.

3
0
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
3
0