紹介(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
$ 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で実行
#!/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になっていない
#!/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.