デブサミ2013【15-e-2】ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?...

43
Summit Developers Dꝏ S 2013 Aꝏ ! Ruby開発者のなさ 開発者のなさ 開発者のなさ 開発者のなさ、 mruby楽しく 楽しく 楽しく 楽しく快 快な組込 な組込 な組込 な組込開発 開発 開発 開発 始せ 始せ 始せ 始せか ? 曽我 曽我 曽我 曽我 崇 株式会社 株式会社 株式会社 株式会社 本 開発 開発 開発 開発 15-E-2 #devsumiX

Post on 19-Oct-2014

1.226 views

Category:

Documents


5 download

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で楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

Ruby開発者のみなさん開発者のみなさん開発者のみなさん開発者のみなさん、、、、mrubyでででで

楽しく楽しく楽しく楽しく快適快適快適快適な組み込みな組み込みな組み込みな組み込みアプリ開発アプリ開発アプリ開発アプリ開発をををを始めません始めません始めません始めませんかかかか?

曽我部曽我部曽我部曽我部 崇崇崇崇株式会社インターネットイニシアティブ株式会社インターネットイニシアティブ株式会社インターネットイニシアティブ株式会社インターネットイニシアティブ

プロダクト本部プロダクト本部プロダクト本部プロダクト本部 アプリケーション開発部アプリケーション開発部アプリケーション開発部アプリケーション開発部

15-E-2

#devsumiX

Page 2: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

SEIL(ザイルザイルザイルザイル)作っています作っています作っています作っています

• ISPのノウハウを結集してIIJが開発した企業向けアクセスルータ

• Firmwareは独自開発、Hardwareは国内製造

• 仮想化環境(VMWare, KVM, Hyper-V)対応

3

Page 4: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

質問質問質問質問

•組込ソフトの開発をして組込ソフトの開発をして組込ソフトの開発をして組込ソフトの開発をしている人はどれくらいいいる人はどれくらいいいる人はどれくらいいいる人はどれくらいいらっしゃいますからっしゃいますからっしゃいますからっしゃいますか?

Page 6: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

C言語でコード書くのは結構大変言語でコード書くのは結構大変言語でコード書くのは結構大変言語でコード書くのは結構大変

• エラー処理のコードが煩雑

• 特に文字列処理が大変

–文字列領域の踏み抜き..

–確保したメモリの解放忘れでメモリリーク..

– FDの解放し忘れでFDリーク..

– etc...

油 断 す る と 、 す ぐ に バ グ が 入 り ま す ; - (

8

Page 9: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

1. バックボーン遅延測定バックボーン遅延測定バックボーン遅延測定バックボーン遅延測定「「「「QUILL」」」」

IIJの取り組み事例の取り組み事例の取り組み事例の取り組み事例

14

Page 15: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

事例事例事例事例1: Quillシステムシステムシステムシステム

• IIJバックボーンの遅延等を測定

• 国内外の中継施設にプローブを配備

–プローブの開発にはrubyを使用

15

Page 16: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

Quillプロジェクトの課題プロジェクトの課題プロジェクトの課題プロジェクトの課題

• プローブはすぐにオペレータが対応できない場所にも置いてある

–従来は汎用PCサーバを使用

–できる限り壊れてほしくない

–交換するときは誰でも簡単にできるようにしたい

SEIL/X1 を使うことにしたを使うことにしたを使うことにしたを使うことにした

16

Page 17: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

crubyは大きすぎたは大きすぎたは大きすぎたは大きすぎた..

• リリース版のfirmwareに入りきらない

–社内専用版を作って、使わない機能はザックリと削除

–今の所支障はないが、今後firmwareをメンテナンスし続けるのは大変

mruby版firmwareへ移行を検討中

17

Page 18: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

2. 柔軟な柔軟な柔軟な柔軟なルータ「ルータ「ルータ「ルータ「SEIL(ザイルザイルザイルザイル)」」」」

IIJの取り組み事例の取り組み事例の取り組み事例の取り組み事例

18

Page 19: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

3. ネットワーク管理サービスネットワーク管理サービスネットワーク管理サービスネットワーク管理サービス「「「「SACM」」」」

IIJの取り組み事例の取り組み事例の取り組み事例の取り組み事例

22

Page 23: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

SACM 新サービスの特長新サービスの特長新サービスの特長新サービスの特長

• 「富山の置き薬」タイプのネットワーク接続サービス

–機能自体に課金

• ネットワーク機器「SA-W1」は無償で提供

• IPsec-VPNレシピ、又は無線LANレシピ

–必要なネットワークを迅速に構築できる

24

Page 25: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

概要概要概要概要

SA-W1

Page 26: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

SA-W1ににににmrubyを搭載しましたを搭載しましたを搭載しましたを搭載しました

• コンフィグ管理システム「レシピフレームワーク」はmrubyを用いて開発されています

設定パラメータ

レシピフレームワーク

内部内部内部内部プログラム向けのプログラム向けのプログラム向けのプログラム向けの設定ファイルに変換設定ファイルに変換設定ファイルに変換設定ファイルに変換

中間形式の設定ファイル

26

Page 27: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

mrubyを使って分かったことを使って分かったことを使って分かったことを使って分かったこと(1)

• 開発効率が上がった

–文字列処理やロジックが簡潔に記述できるようになった

–いちいちfirmwareをビルドしなくてもプログラムを差し替えできるのは便利

27

Page 28: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

mrubyを使って分かったことを使って分かったことを使って分かったことを使って分かったこと(2)

• たくさん地雷を踏みました..

– mrubyのバグ潰しに結構時間を費やしました ;-)

– これからmrubyを使う人は割と安心して使える

• 沢山の人がmrubyを使えば、さらにバグが減って安定します!

28

Page 29: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

まとめまとめまとめまとめ

29

Page 30: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

組込機器の開発プロセスが進化する組込機器の開発プロセスが進化する組込機器の開発プロセスが進化する組込機器の開発プロセスが進化する

• 今までの組み込み機器開発– ドライバ、アプリ(ロジック)全てC言語又はアセンブリ

言語で開発

• これからの方向性これからの方向性これからの方向性これからの方向性– 速度やリソースの制約がある箇所だけC言語やアセ

ンブリ言語で記述

– その他のロジック部分は、出来る限り開発効率の良い言語で開発

– テスト駆動開発

30

Page 31: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

ruby+mruby = Internet of Things

• ruby + mrubyで、様々なモノやクラウドをインターネットを介して結び付けることができる

照明、家電、冷暖房、蓄電池、各種センサ,etc.

33

Page 34: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

It’s your turn.

Page 35: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

皆さんも皆さんも皆さんも皆さんもmruby始めてみませんか始めてみませんか始めてみませんか始めてみませんか?

• 組込機器の開発をしている皆さん

– mrubyが載りそうであれば、開発効率が高められるかどうか試してみませんか?

• サーバ用のソフトを開発している皆さん

–アプリ内のミニ言語などに使ってみませんか?

35

Page 36: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

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で楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

IIJが作るが作るが作るが作るPaaS = MOGOK

• http://mogok.jp/

Page 43: デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

Summit

Developers

Developers Summit 2013 Action !

IIJエンジニアセミナー開催!!エンジニアセミナー開催!!エンジニアセミナー開催!!エンジニアセミナー開催!!

詳細はコチラ↓

【セミナー情報】

http://www.iij.ad.jp/company/recruit/career/re

cruit/0309seminar.html【問い合わせ先】

[email protected]

IIJのエンジニアとお話しませんか?IIJのソフトウェア開発現場に興味を持ったアナタ!

「3/9(土)@IIJ本社」にて、エンジニアがIIJの開発業務を紹介するセミナーを行います!お気軽にご参加ください。

43