SlideShare a Scribd company logo
Kansai.mrb 2014 Dec
西村備山(@lipoyang)
mrubyでC使う?
Cでmruby使う?
自己紹介
西村備山 (@lipoyang)
mrubyは一昨日はじめたばかり
僕は組込み屋
・C/C++で文字列の切り貼り
・C/C++でWebサーバ
・C/C++でWeb APIを実装
・C/C++ でJSON解析
・C/C++ で暗号化/復号 etc.
C/C++めんどくさい
mruby使いたいけど…
末長く使えるプラットフォーム
→ ポーティングする苦労の甲斐あり
GR-SAKURA や Wakayama.rbボード
たいていの組込み系のターゲット
まいどまいど特注仕様
→ 誰がI/O周りポーティングしてくれるん?
C + mruby で行こう!
C mruby
リアルタイム性
H/Wまわり テキスト
処理
Web系
柔軟性
抽象度
+
どっちを主体に?
mrubyでC使う?
Cでmruby使う?
どっちを主体に?
mrubyでC使う?
Cでmruby使う?
まず実務に導入しやすいのはこちら?
書いてみたが…
require ’base64’
# Base64エンコード
def myBase64Encode str
return Base64.encode64(str)
end
# Base64デコード
def myBase64Decode str
return Base64.decode64(str)
end
hoge.rb
requireがない!
じゃあ、
どうやってライブラリを
ロードするの?
build_config.rb
MRuby::Build.new do |conf|
toolchain :gcc
enable_debug
conf.bins = %w(mrbc mruby mirb)
conf.gembox 'default'
conf.gem :git => 'https://github.com/iij/mruby-io.git'
conf.gem :git => 'https://github.com/mattn/mruby-json.git'
conf.gem :git => 'https://github.com/mattn/mruby-base64.git'
end
動的にrequireするんじゃなく
mrubyのビルド時に抱き込む
サンプル(mruby側)
# Base64エンコード
def myBase64Encode str
return Base64.encode(str)
end
# Base64デコード
def myBase64Decode str
return Base64.decode(str)
end
myBase64.rb
サンプル(C言語側)
#include "mruby.h"
#include "mruby/string.h"
#include "mruby/proc.h"
#include "mruby/compile.h"
int main(void){
mrb_state* mrb = mrb_open();
FILE* f = fopen("myBase64.rb", "r");
mrb_load_file(mrb, f);
fclose(f);
・・・
mrb_close(mrb);
return 0;
}
hoge.c(抜粋)
サンプル(C言語側)
char plain[] = "Hello, world!";
printf("Plain Text = %s¥n", plain);
mrb_value arg = mrb_str_new_cstr(mrb, plain);
mrb_value ret = mrb_funcall(
mrb, mrb_top_self(mrb), "myBase64Encode", 1, arg);
char *encoded = mrb_str_to_cstr(mrb, ret);
printf("Encoded Text = %s¥n", encoded);
arg = mrb_str_new_cstr(mrb, encoded);
ret = mrb_funcall(
mrb, mrb_top_self(mrb), "myBase64Decode", 1, arg);
char *decoded = mrb_str_to_cstr(mrb, ret);
printf("Decoded Text = %s¥n", decoded);
hoge.c(抜粋)
コンパイルと実行
$ ln -s ~/tool/mruby ./mruby
$ gcc -Imruby/include -Imruby/src
hoge.c mruby/build/host/lib/libmruby.a
-lm
$ ./a.out
Plain Text = Hello, world!
Encoded Text = SGVsbG8sIHdvcmxkIQ==
Decoded Text = Hello, world!
おしまい
型 C→mruby mruby→C
整数 mrb_fixnum_value mrb_fixnum
浮動小数点 mrb_float_value mrb_float
文字列 mrb_str_new_cstr mrb_str_to_cstr
型変換のAPI? (調査中)

More Related Content

PPTX
Ruby と C# をつなぐ
PDF
mrubyボードを使って こんなことしてみました Kansai.mrb 2014 dec
PDF
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
PDF
RubyではじめるIoT(Wakayama.rb活動報告)
PDF
GR-CITRUSの紹介
PDF
Wakayama.rbボードの使い方
PDF
C#からSORACOMを管理できるようにした話(SoraCommonNet)
PDF
Rubyボードハンズオン
Ruby と C# をつなぐ
mrubyボードを使って こんなことしてみました Kansai.mrb 2014 dec
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
RubyではじめるIoT(Wakayama.rb活動報告)
GR-CITRUSの紹介
Wakayama.rbボードの使い方
C#からSORACOMを管理できるようにした話(SoraCommonNet)
Rubyボードハンズオン

What's hot (15)

PDF
Rubyボードハンズオンテキスト
PDF
ET2016 小さなRubyボード GR-CITRUSの紹介
PDF
極小Rubyボードの紹介
PDF
Esp32 cam and raspberry pi 4 b over SORACOM
PPTX
俺とモデリング
PDF
Fuji sakuraでmbedを!
PDF
Ruby関西76 gr citrusの使い方#2
PPTX
この実装には問題がある!
PDF
KyotoLT(Online) 第26回
PDF
ルネサスナイト10発表資料 Rubyで作るラムネシュータ
PDF
ピタゴラスイッチでAWS自動化(JAWS-UG-LT @shimy_net )
PDF
楽しいVR空間を作る技術と支える技術 #osc19do
PDF
Meguro.rb#3LT「Ruby入門書を書いてて得られた知見5選+3α」
PDF
RGで生き抜くためのレンタルサーバー講座ヽ(•̀ω•́ )ゝ✧
PDF
円環の理(Garbage Collection)
Rubyボードハンズオンテキスト
ET2016 小さなRubyボード GR-CITRUSの紹介
極小Rubyボードの紹介
Esp32 cam and raspberry pi 4 b over SORACOM
俺とモデリング
Fuji sakuraでmbedを!
Ruby関西76 gr citrusの使い方#2
この実装には問題がある!
KyotoLT(Online) 第26回
ルネサスナイト10発表資料 Rubyで作るラムネシュータ
ピタゴラスイッチでAWS自動化(JAWS-UG-LT @shimy_net )
楽しいVR空間を作る技術と支える技術 #osc19do
Meguro.rb#3LT「Ruby入門書を書いてて得られた知見5選+3α」
RGで生き抜くためのレンタルサーバー講座ヽ(•̀ω•́ )ゝ✧
円環の理(Garbage Collection)
Ad

Similar to mrubyでC使う? Cでmruby使う? (20)

PDF
ET2017資料: 開発言語mruby・mruby/cが開く新たなIoTプラットフォーム
PDF
組込み向けスクリプト言語mrubyをEV3で動かしてみよう
PDF
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
PPTX
mruby/c機能紹介20160329
PDF
PPT
Mrubyの始め方
PDF
mrubyのすすめ
PDF
ET West 2017資料:mruby/c、mrubyで実現される効率的なIoT開発
PDF
Introduction of mruby & Webruby script example
PDF
MobiRubyでiOSアプリをつくろう
PDF
mrubyでゲームを書いてみた
PDF
Mac ruby
PDF
mruby VM を調べてみた話
PDF
Ruby東京プレゼン 資料
PPTX
Xcodeでmrubyをステップ実行してみた
PDF
mruby搭載ボード GR-CITRUS の新しい開発環境の紹介
PDF
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
PDF
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
PPTX
Led cube lt
PDF
mrubyのJIT
ET2017資料: 開発言語mruby・mruby/cが開く新たなIoTプラットフォーム
組込み向けスクリプト言語mrubyをEV3で動かしてみよう
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
mruby/c機能紹介20160329
Mrubyの始め方
mrubyのすすめ
ET West 2017資料:mruby/c、mrubyで実現される効率的なIoT開発
Introduction of mruby & Webruby script example
MobiRubyでiOSアプリをつくろう
mrubyでゲームを書いてみた
Mac ruby
mruby VM を調べてみた話
Ruby東京プレゼン 資料
Xcodeでmrubyをステップ実行してみた
mruby搭載ボード GR-CITRUS の新しい開発環境の紹介
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
Led cube lt
mrubyのJIT
Ad

More from Bizan Nishimura (20)

PDF
光る縄文土器を作る
PDF
IoT渾天儀で太陽の運行を知る
PDF
ALGYAN 6th IoT基板で倒立振子
PDF
GR-MANGOでEtherCAT
PDF
TeXで多言語文書作成! (2011年ごろの資料)
PDF
GR-SAKURAでEtherCAT
PDF
だんグラ用お玉コントローラ
PDF
可視光を利用したIoTエッジデバイスとの通信
PDF
IoTマニ車でクラウドに功徳を積む
PDF
Arduino系IDE設定切替ツール inoSwitch
PDF
二足歩行ロボットKXR-L2をGR-ROSEで動かす
PDF
ラジコンで演奏する楽器
PDF
CANとCANopen
PDF
GRでシリアルサーボ
PDF
Esp8266でラジコン基板
PDF
BLEラジコン基板でIoTしてみた
PDF
ミニ四足 ~歩くミニ四駆~
PDF
SerialScreen
PDF
GR-KURUMIでミニ四駆をラジコン化
PDF
GR-KURUMIで倒立振子
光る縄文土器を作る
IoT渾天儀で太陽の運行を知る
ALGYAN 6th IoT基板で倒立振子
GR-MANGOでEtherCAT
TeXで多言語文書作成! (2011年ごろの資料)
GR-SAKURAでEtherCAT
だんグラ用お玉コントローラ
可視光を利用したIoTエッジデバイスとの通信
IoTマニ車でクラウドに功徳を積む
Arduino系IDE設定切替ツール inoSwitch
二足歩行ロボットKXR-L2をGR-ROSEで動かす
ラジコンで演奏する楽器
CANとCANopen
GRでシリアルサーボ
Esp8266でラジコン基板
BLEラジコン基板でIoTしてみた
ミニ四足 ~歩くミニ四駆~
SerialScreen
GR-KURUMIでミニ四駆をラジコン化
GR-KURUMIで倒立振子

mrubyでC使う? Cでmruby使う?