デブサミ2013【15-e-2】ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?...
Post on 19-Oct-2014
1.226 views
DESCRIPTION
Rubyエンジニアのみなさんは、日々楽しくRubyプログラムの開発をされているこ とと思います。しかしながら、組み込み機器開発の世界では今でもC言語やアセ ンブラ言語などを用いた昔ながらの開発が主流であり、Rubyエンジニアで広く使 われているテスト駆動開発など最新の開発手法が普及しているとは言いにくい状 況です。このような中、2012年4月に軽量Ruby(mruby)がgithub上で公開されまし た。IIJでは、Rubyユーザでも楽しく快適に組み込みアプリを開発できる環境を 提供するために、独自開発のルータ「SEIL」上で動作するmrubyの実行環境を作 りました。本セッションでは、日々のちょっとした不便を改善するためにmruby を活用する方法についてご紹介します。また、mrubyはアプリに組み込むことで も便利に使うことができます。 Ruby好きのエンジニアのみなさん、是非ご参加く ださい。TRANSCRIPT
![Page 1: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/1.jpg)
Summit
Developers
Developers Summit 2013 Action !
Ruby開発者のみなさん開発者のみなさん開発者のみなさん開発者のみなさん、、、、mrubyでででで
楽しく楽しく楽しく楽しく快適快適快適快適な組み込みな組み込みな組み込みな組み込みアプリ開発アプリ開発アプリ開発アプリ開発をををを始めません始めません始めません始めませんかかかか?
曽我部曽我部曽我部曽我部 崇崇崇崇株式会社インターネットイニシアティブ株式会社インターネットイニシアティブ株式会社インターネットイニシアティブ株式会社インターネットイニシアティブ
プロダクト本部プロダクト本部プロダクト本部プロダクト本部 アプリケーション開発部アプリケーション開発部アプリケーション開発部アプリケーション開発部
15-E-2
#devsumiX
![Page 2: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/2.jpg)
Summit
Developers
Developers Summit 2013 Action !
自己紹介自己紹介自己紹介自己紹介
• 曽我部 崇(@rev4t)
– IIJで企業向けルータの開発などに従事
最近の活動場所
• mruby (http://github.com/iij/mruby)
• openstack
– コントリビュータ始めました(IPv6まわりの修正をした程度..)
2
![Page 3: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/3.jpg)
Summit
Developers
Developers Summit 2013 Action !
SEIL(ザイルザイルザイルザイル)作っています作っています作っています作っています
• ISPのノウハウを結集してIIJが開発した企業向けアクセスルータ
• Firmwareは独自開発、Hardwareは国内製造
• 仮想化環境(VMWare, KVM, Hyper-V)対応
3
![Page 4: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/4.jpg)
Summit
Developers
Developers Summit 2013 Action !
SEILのアーキテクチャのアーキテクチャのアーキテクチャのアーキテクチャ
• NetBSDをベースに、ルーティングエンジンやコンフィグ管理システム(CLI, WebUI)を組み込んでいる
NetBSD Kernellibc
コンフィグ管理システムQuagga
(Routing Engine)Other daemons
4
![Page 5: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/5.jpg)
Summit
Developers
Developers Summit 2013 Action !
質問質問質問質問
•組込ソフトの開発をして組込ソフトの開発をして組込ソフトの開発をして組込ソフトの開発をしている人はどれくらいいいる人はどれくらいいいる人はどれくらいいいる人はどれくらいいらっしゃいますからっしゃいますからっしゃいますからっしゃいますか?
![Page 6: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/6.jpg)
Summit
Developers
Developers Summit 2013 Action !
mrubyとの出会いとの出会いとの出会いとの出会い
• 2011年春頃– 社内プロジェクトで、SEILに cruby を組み込んだ
• 2011年8月頃– 社内の先輩 前橋さん(@tmeb4)にmrubyの存在を教
えてもらう
– SEILでも動くか試すべく、関係者にコンタクトを取る
• 2011年12月頃– ソースコードを入手し、SEIL上でもmrubyが問題なく動
作した
6
![Page 7: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/7.jpg)
Summit
Developers
Developers Summit 2013 Action !
組込ソフト開発者の苦悩組込ソフト開発者の苦悩組込ソフト開発者の苦悩組込ソフト開発者の苦悩I I J が 提 供 中 の オ ー プ ン ソ ー ス ソ フ ト A R M S D よ り コ ー ド を 一 部 抜 粋 …
h t t p s : / / g i t h u b . c o m / s e i l - s m f / a r m s d
static int
load_from_file(char *fname, char **bufp)
{
FILE *fp = NULL;
char *buff = NULL;
size_t len;
int nread = -1;
fp = fopen(fname, "r");
if (fp == NULL) {
fprintf(stderr, "failed to open¥n");
nread = -1;
goto failure;
}
fseek(fp, 0, SEEK_END);
len = ftell(fp);
fseek(fp, 0, SEEK_SET);
buff = malloc(len + 1);
if (buff == NULL) {
fprintf(stderr, "malloc failed");
nread = -1;
goto failure;
}
nread = fread(buff, 1, len, fp);
if (nread < len && !feof(fp)) {
fprintf(stderr, "fread() failed¥n");
nread = -1;
goto failure;
}
*(buff + len) = '¥0';
failure:
if (buffp)
*buffp = buff;
if (fp)
fclose(fp);
return nread;
}
7
![Page 8: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/8.jpg)
Summit
Developers
Developers Summit 2013 Action !
C言語でコード書くのは結構大変言語でコード書くのは結構大変言語でコード書くのは結構大変言語でコード書くのは結構大変
• エラー処理のコードが煩雑
• 特に文字列処理が大変
–文字列領域の踏み抜き..
–確保したメモリの解放忘れでメモリリーク..
– FDの解放し忘れでFDリーク..
– etc...
油 断 す る と 、 す ぐ に バ グ が 入 り ま す ; - (
8
![Page 9: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/9.jpg)
Summit
Developers
Developers Summit 2013 Action !
軽量軽量軽量軽量Ruby(mruby)とはとはとはとは
• 家電製品などの開発生産性を向上させることを目指して設計されたRuby言語
• 2011-2012年にかけて、経済産業省の「地域イノベーション創出研究開発事業」として、開発が進められた
• 2012年4月に、MITライセンスとしてgithub上に公開
• 特長– Ruby処理系に必要な資源(メモリ)の削減
– 実行速度の向上
– リアルタイム性の向上
– 直接見えないように変換されたソースコード
9
![Page 10: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/10.jpg)
Summit
Developers
Developers Summit 2013 Action !
mrubyを使えば開発効率が上がるを使えば開発効率が上がるを使えば開発効率が上がるを使えば開発効率が上がる?
コンフィグ管理システムはrubyで書くと開発効率が高まりそう
NetBSD Kernellibc
コンフィグ管理システムQuagga
(Routing Engine)Other daemons
文字列処理が多い
システムプログラミング
C言語必須
10
![Page 11: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/11.jpg)
Summit
Developers
Developers Summit 2013 Action !
Small is Beautiful
• mruby(ミニマム)はruby言語の最少セットのみを提供
–利用者は、必要なものだけを選んで組み込む
–不要なものは入れなくて済むため、コンパクトになる
mruby Virtual Machine
mrbgem A
(IO)
mrbgem B
(Regexp)
mrbgem C
(Socket)
Apps• mrbgem A
• mrbgem B
• mrbgem C
• …
11
![Page 12: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/12.jpg)
Summit
Developers
Developers Summit 2013 Action !
mrubyが動作する最小構成はが動作する最小構成はが動作する最小構成はが動作する最小構成は?
• RX62N(ルネサス 32bitマイコン)
– EAPL-Trainer mruby
– 96MHz CPU, 1MB Flash Rom, 128kB RAM
• 32bit ARM7
– Lego Mindstorms NXT
– 256kB Flash Rom, 64kB RAM
–但し、hash実装などをダイエットしないと64kBのRAMでは動かないらしい
12
![Page 13: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/13.jpg)
Summit
Developers
Developers Summit 2013 Action !
SEIL/X1 ハードウェア構成ハードウェア構成ハードウェア構成ハードウェア構成
• CPU: Cavium Octeon (SoC)
– MIPS64アーキテクチャ
• Memory: 256MB
• Flash: 16MB
• USB: 1ポート
• Ethernet: GbE 3-port
13
![Page 14: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/14.jpg)
Summit
Developers
Developers Summit 2013 Action !
1. バックボーン遅延測定バックボーン遅延測定バックボーン遅延測定バックボーン遅延測定「「「「QUILL」」」」
IIJの取り組み事例の取り組み事例の取り組み事例の取り組み事例
14
![Page 15: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/15.jpg)
Summit
Developers
Developers Summit 2013 Action !
事例事例事例事例1: Quillシステムシステムシステムシステム
• IIJバックボーンの遅延等を測定
• 国内外の中継施設にプローブを配備
–プローブの開発にはrubyを使用
15
![Page 16: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/16.jpg)
Summit
Developers
Developers Summit 2013 Action !
Quillプロジェクトの課題プロジェクトの課題プロジェクトの課題プロジェクトの課題
• プローブはすぐにオペレータが対応できない場所にも置いてある
–従来は汎用PCサーバを使用
–できる限り壊れてほしくない
–交換するときは誰でも簡単にできるようにしたい
SEIL/X1 を使うことにしたを使うことにしたを使うことにしたを使うことにした
16
![Page 17: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/17.jpg)
Summit
Developers
Developers Summit 2013 Action !
crubyは大きすぎたは大きすぎたは大きすぎたは大きすぎた..
• リリース版のfirmwareに入りきらない
–社内専用版を作って、使わない機能はザックリと削除
–今の所支障はないが、今後firmwareをメンテナンスし続けるのは大変
mruby版firmwareへ移行を検討中
17
![Page 18: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/18.jpg)
Summit
Developers
Developers Summit 2013 Action !
2. 柔軟な柔軟な柔軟な柔軟なルータ「ルータ「ルータ「ルータ「SEIL(ザイルザイルザイルザイル)」」」」
IIJの取り組み事例の取り組み事例の取り組み事例の取り組み事例
18
![Page 19: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/19.jpg)
Summit
Developers
Developers Summit 2013 Action !
もっと柔軟なルータが欲しいもっと柔軟なルータが欲しいもっと柔軟なルータが欲しいもっと柔軟なルータが欲しい
• イベントスクリプト機能 開発中
– SEILの機能をmrubyスクリプトから操作
–経路障害、インタフェースのUp/Downなどのイベントをトリガになる
軽量Ruby
スクリプト
•インタフェースインタフェースインタフェースインタフェースDown
•CPU負荷上昇負荷上昇負荷上昇負荷上昇•通信量の増加通信量の増加通信量の増加通信量の増加•経路の変化経路の変化経路の変化経路の変化•etc.
•インタフェースインタフェースインタフェースインタフェースDown
•CPU負荷上昇負荷上昇負荷上昇負荷上昇•通信量の増加通信量の増加通信量の増加通信量の増加•経路の変化経路の変化経路の変化経路の変化•etc.
•最低限の切り分け作業を自動化最低限の切り分け作業を自動化最低限の切り分け作業を自動化最低限の切り分け作業を自動化• ping, show status route, ...
•外部サービスとの連係外部サービスとの連係外部サービスとの連係外部サービスとの連係• IaaSややややPaaSの性能を増減の性能を増減の性能を増減の性能を増減
• 監視システムへアラートを監視システムへアラートを監視システムへアラートを監視システムへアラートを送信送信送信送信
•経路切替経路切替経路切替経路切替
•最低限の切り分け作業を自動化最低限の切り分け作業を自動化最低限の切り分け作業を自動化最低限の切り分け作業を自動化• ping, show status route, ...
•外部サービスとの連係外部サービスとの連係外部サービスとの連係外部サービスとの連係• IaaSややややPaaSの性能を増減の性能を増減の性能を増減の性能を増減
• 監視システムへアラートを監視システムへアラートを監視システムへアラートを監視システムへアラートを送信送信送信送信
•経路切替経路切替経路切替経路切替
Event
Action
19
![Page 20: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/20.jpg)
Summit
Developers
Developers Summit 2013 Action !
色々作ってみました色々作ってみました色々作ってみました色々作ってみました(1)
• つぶやくルータつぶやくルータつぶやくルータつぶやくルータ
–電力消費量をtweet
– http://twitter.com/wattmeter2012
– https://github.com/iij/mruby/tree/iij/app/twitter
USB
The Internet
ついったーついったーついったーついったー電力計電力計電力計電力計 @wattmeter2012
2012/02/01 18:27:47 現在の使用電力は 12 W です!
20
![Page 21: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/21.jpg)
Summit
Developers
Developers Summit 2013 Action !
色々作ってみました色々作ってみました色々作ってみました色々作ってみました(2)
• Amazon S3
–監視異常をトリガにして、コンテンツをアップロード
• https://github.com/iij/mruby-aws-s3
The Internet
Amazon
S3
監視異常
21
![Page 22: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/22.jpg)
Summit
Developers
Developers Summit 2013 Action !
3. ネットワーク管理サービスネットワーク管理サービスネットワーク管理サービスネットワーク管理サービス「「「「SACM」」」」
IIJの取り組み事例の取り組み事例の取り組み事例の取り組み事例
22
![Page 23: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/23.jpg)
Summit
Developers
Developers Summit 2013 Action !
SACMとはとはとはとは
• SACM [Service Adapter Control Manager]
–機器の自動接続、一元管理ができるサービス
– http://www.sacm.jp/
SA=Service Adapter
23
![Page 24: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/24.jpg)
Summit
Developers
Developers Summit 2013 Action !
SACM 新サービスの特長新サービスの特長新サービスの特長新サービスの特長
• 「富山の置き薬」タイプのネットワーク接続サービス
–機能自体に課金
• ネットワーク機器「SA-W1」は無償で提供
• IPsec-VPNレシピ、又は無線LANレシピ
–必要なネットワークを迅速に構築できる
24
![Page 25: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/25.jpg)
概要概要概要概要
SA-W1
![Page 26: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/26.jpg)
Summit
Developers
Developers Summit 2013 Action !
SA-W1ににににmrubyを搭載しましたを搭載しましたを搭載しましたを搭載しました
• コンフィグ管理システム「レシピフレームワーク」はmrubyを用いて開発されています
設定パラメータ
レシピフレームワーク
内部内部内部内部プログラム向けのプログラム向けのプログラム向けのプログラム向けの設定ファイルに変換設定ファイルに変換設定ファイルに変換設定ファイルに変換
中間形式の設定ファイル
26
![Page 27: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/27.jpg)
Summit
Developers
Developers Summit 2013 Action !
mrubyを使って分かったことを使って分かったことを使って分かったことを使って分かったこと(1)
• 開発効率が上がった
–文字列処理やロジックが簡潔に記述できるようになった
–いちいちfirmwareをビルドしなくてもプログラムを差し替えできるのは便利
27
![Page 28: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/28.jpg)
Summit
Developers
Developers Summit 2013 Action !
mrubyを使って分かったことを使って分かったことを使って分かったことを使って分かったこと(2)
• たくさん地雷を踏みました..
– mrubyのバグ潰しに結構時間を費やしました ;-)
– これからmrubyを使う人は割と安心して使える
• 沢山の人がmrubyを使えば、さらにバグが減って安定します!
28
![Page 29: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/29.jpg)
Summit
Developers
Developers Summit 2013 Action !
まとめまとめまとめまとめ
29
![Page 30: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/30.jpg)
Summit
Developers
Developers Summit 2013 Action !
組込機器の開発プロセスが進化する組込機器の開発プロセスが進化する組込機器の開発プロセスが進化する組込機器の開発プロセスが進化する
• 今までの組み込み機器開発– ドライバ、アプリ(ロジック)全てC言語又はアセンブリ
言語で開発
• これからの方向性これからの方向性これからの方向性これからの方向性– 速度やリソースの制約がある箇所だけC言語やアセ
ンブリ言語で記述
– その他のロジック部分は、出来る限り開発効率の良い言語で開発
– テスト駆動開発
30
![Page 31: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/31.jpg)
Summit
Developers
Developers Summit 2013 Action !
アプリにアプリにアプリにアプリにmrubyを組み込むを組み込むを組み込むを組み込む
• アプリへの組み込みにも向いている• 例– apache に組み込む => mod_mruby
– iOSアプリに組み込む => MobiRuby
– 言語内DSL• mruby(ミニマム) + 必要なmrbgemだけを組み込むことで、コ
ンパクトかつ堅牢になる
• 利点– アプリ動作ホストのruby環境に依存しない
• rubyバージョン、gem依存を気にしなくて良い
31
![Page 32: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/32.jpg)
Summit
Developers
Developers Summit 2013 Action !
mrbgem
• mruby版のGEM
• 2012年12月、本家にコミットされた
• mrubyのビルド時にGEMを組み込むことができる
– rubyスクリプト、C言語のコードどちらも組み込み可能
mrbgemに対応した以後、mrubyのエコシステムが急速に進化中
https://github.com/mruby/mruby/wiki/Related-Projects
32
![Page 33: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/33.jpg)
Summit
Developers
Developers Summit 2013 Action !
ruby+mruby = Internet of Things
• ruby + mrubyで、様々なモノやクラウドをインターネットを介して結び付けることができる
照明、家電、冷暖房、蓄電池、各種センサ,etc.
33
![Page 34: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/34.jpg)
Summit
Developers
Developers Summit 2013 Action !
It’s your turn.
![Page 35: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/35.jpg)
Summit
Developers
Developers Summit 2013 Action !
皆さんも皆さんも皆さんも皆さんもmruby始めてみませんか始めてみませんか始めてみませんか始めてみませんか?
• 組込機器の開発をしている皆さん
– mrubyが載りそうであれば、開発効率が高められるかどうか試してみませんか?
• サーバ用のソフトを開発している皆さん
–アプリ内のミニ言語などに使ってみませんか?
35
![Page 36: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/36.jpg)
Summit
Developers
Developers Summit 2013 Action !
PR: SEIL mrubyアプリを作りませんかアプリを作りませんかアプリを作りませんかアプリを作りませんか?
• SEIL/x86– https://www.seil.jp/community/seilx86
– 仮想ルータソフトウェア– コンフィグ保存が不要であれば、無料で使える
• 今春リリース予定のfirmwareでmrubyスクリプトに対応予定
• 今後、アプリコンテストなどを企画する予定です。是非ご参加ください!
36
![Page 37: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/37.jpg)
Summit
Developers
Developers Summit 2013 Action !
mrubyのビルド方法のビルド方法のビルド方法のビルド方法(1)
• PC環境(Linux, Mac) でビルドに必要なもの
– GCC
– bison
– git
– Rake (Ruby版make) または ruby1.8以降
37
![Page 38: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/38.jpg)
Summit
Developers
Developers Summit 2013 Action !
mrubyのビルド方法のビルド方法のビルド方法のビルド方法(2)
$ git clone https://github.com/mruby/mruby
$ cd mruby
$ ./minirake (または、 rake)
• bin/mruby– mrubyインタプリタ
• bin/mrbc– mrubyコンパイラ
• in/mirb– mruby版 irb
38
![Page 39: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/39.jpg)
Summit
Developers
Developers Summit 2013 Action !
mrubyのビルド方法のビルド方法のビルド方法のビルド方法(3)
class Hello
def world
puts "Hello World!"
end
end
a = Hello.new
a.world
$ bin/mruby hello.rb
Hello World!Hello World!Hello World!Hello World!
hello.rb
$ bin/mrbc hello.rb
$ bin/mruby –b hello.mrb
Hello World!Hello World!Hello World!Hello World!
ソースコードを直接実行ソースコードを直接実行ソースコードを直接実行ソースコードを直接実行
バイナリファイルを実行バイナリファイルを実行バイナリファイルを実行バイナリファイルを実行
39
![Page 40: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/40.jpg)
Summit
Developers
Developers Summit 2013 Action !
mrubyのビルド方法のビルド方法のビルド方法のビルド方法(4)
$ bin/mruby $ bin/mruby $ bin/mruby $ bin/mruby ––––v v v v hello.rbhello.rbhello.rbhello.rbmruby - Embeddable Ruby Copyright (c) 2010-2013 mruby
developers
NODE_SCOPE:
local variables:
a
NODE_BEGIN:
NODE_CLASS:
:Hello
body:
NODE_BEGIN:
NODE_DEF:
world
NODE_BEGIN:
NODE_CALL:
NODE_SELF
method='puts' (286)
args:
NODE_STR "Hello World!" len 12
NODE_ASGN:
lhs:
NODE_LVAR a
rhs:
NODE_CALL:
NODE_CONST Hello
method='new' (7)
NODE_CALL:
NODE_LVAR a
method='world' (330)
irep 148 nregs=4 nlocals=2 pools=0 syms=3
000 OP_LOADNIL R2
001 OP_LOADNIL R3
002 OP_CLASS R2 :Hello
003 OP_EXEC R2 I(149)
004 OP_GETCONST R2 :Hello
005 OP_SEND R2 :new 0
006 OP_MOVE R1 R2
007 OP_MOVE R2 R1
008 OP_SEND R2 :world 0
009 OP_STOP
irep 149 nregs=2 nlocals=1 pools=0 syms=1
000 OP_TCLASSR1
001 OP_LAMBDA R2 I(+1)
1
002 OP_METHOD R1 :world
003 OP_LOADNIL R0
004 OP_RETURN R0
irep 150 nregs=4 nlocals=2 pools=1 syms=1
000 OP_ENTER 0:0:0:0:0:0:0
001 OP_LOADSELF R2
002 OP_STRING R3 "Hello
World!"
003 OP_SEND R2 :puts 1
004 OP_RETURN R2
Hello World!
40
![Page 41: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/41.jpg)
Summit
Developers
Developers Summit 2013 Action !
軽量軽量軽量軽量Rubyフォーラムのご紹介フォーラムのご紹介フォーラムのご紹介フォーラムのご紹介
• 2013年2月に発足予定のNPO法人
–http://forum.mruby.org– IIJも加入予定
• このような人・企業は、是非ご参加ください!– 自社製品の開発言語として自社製品の開発言語として自社製品の開発言語として自社製品の開発言語として軽量軽量軽量軽量Rubyを採用を採用を採用を採用してみたいしてみたいしてみたいしてみたい– 軽量軽量軽量軽量Rubyの今後の開発方針をの今後の開発方針をの今後の開発方針をの今後の開発方針をいち早くいち早くいち早くいち早く知りたい、意見したい知りたい、意見したい知りたい、意見したい知りたい、意見したい– 顧客顧客顧客顧客に軽量に軽量に軽量に軽量Rubyを提案することでを提案することでを提案することでを提案することで差別化を図りたい差別化を図りたい差別化を図りたい差別化を図りたい– 軽量軽量軽量軽量Ruby(あるいはその周辺ツール)の開発に(あるいはその周辺ツール)の開発に(あるいはその周辺ツール)の開発に(あるいはその周辺ツール)の開発に関与したい関与したい関与したい関与したい– 自社で軽量自社で軽量自社で軽量自社で軽量Ruby製品を製品を製品を製品をNPOを通じてを通じてを通じてを通じて宣伝したい宣伝したい宣伝したい宣伝したい– 軽量軽量軽量軽量Ruby教育関連事業を教育関連事業を教育関連事業を教育関連事業を企画したい企画したい企画したい企画したい– とにかく軽量とにかく軽量とにかく軽量とにかく軽量Rubyをををを応援応援応援応援したいしたいしたいしたい
41
![Page 42: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/42.jpg)
Summit
Developers
Developers Summit 2013 Action !
IIJが作るが作るが作るが作るPaaS = MOGOK
• http://mogok.jp/
![Page 43: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?](https://reader033.vdocuments.pub/reader033/viewer/2022042623/5443bc06b1af9fbc0e8b461f/html5/thumbnails/43.jpg)
Summit
Developers
Developers Summit 2013 Action !
IIJエンジニアセミナー開催!!エンジニアセミナー開催!!エンジニアセミナー開催!!エンジニアセミナー開催!!
詳細はコチラ↓
【セミナー情報】
http://www.iij.ad.jp/company/recruit/career/re
cruit/0309seminar.html【問い合わせ先】
IIJのエンジニアとお話しませんか?IIJのソフトウェア開発現場に興味を持ったアナタ!
「3/9(土)@IIJ本社」にて、エンジニアがIIJの開発業務を紹介するセミナーを行います!お気軽にご参加ください。
43