Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
DevelopersSummit   Ruby開発者のみなさん、        mrubyで楽しく快適な組み込みアプリ開発を       始めませんか?15-E-2                                    曽我部 ...
Developers Summit                  自己紹介• 曽我部 崇(@rev4t)   – IIJで企業向けルータの開発などに従事最近の活動場所• mruby (http://github.com/iij/mruby)...
DevelopersSummit             SEIL(ザイル)作っています• ISPのノウハウを結集してIIJが開発した企業向  けアクセスルータ• Firmwareは独自開発、Hardwareは国内製造• 仮想化環境(VMWar...
DevelopersSummit             SEILのアーキテクチャ• NetBSDをベースに、ルーティングエンジンや  コンフィグ管理システム(CLI, WebUI)を組み込  んでいる                   コン...
DevelopersSummit                     質問• 組込ソフトの開発をして  いる人はどれくらいい  らっしゃいますか?             Developers Summit 2013 Action !
Developers Summit              mrubyとの出会い• 2011年春頃   – 社内プロジェクトで、SEILに cruby を組み込んだ• 2011年8月頃   – 社内の先輩 前橋さん(@tmeb4)にmruby...
Developers   Summit                       組込ソフト開発者の苦悩IIJ が提供中のオープンソース ソフト ARMSD                                       よりコー...
Developers Summit     C言語でコード書くのは結構大変油断すると、すぐにバグが入ります   ;-(• エラー処理のコードが煩雑• 特に文字列処理が大変   – 文字列領域の踏み抜き..   – 確保したメモリの解放忘れでメモ...
DevelopersSummit             軽量Ruby(mruby)とは• 家電製品などの開発生産性を向上させることを目指し  て設計されたRuby言語• 2011-2012年にかけて、経済産業省の「地域イノベー  ション創出研...
DevelopersSummitmrubyを使えば開発効率が上がる?        コンフィグ管理システム                                          文字列処理が多い     Quagga        ...
DevelopersSummit                  Small is Beautiful• mruby(ミニマム)はruby言語の最少セットのみ  を提供  – 利用者は、必要なものだけを選んで組み込む  – 不要なものは入れな...
Developers Summit      mrubyが動作する最小構成は?• RX62N(ルネサス 32bitマイコン)   – EAPL-Trainer mruby   – 96MHz CPU, 1MB Flash Rom, 128kB ...
Developers    Summit                 SEIL/X1 ハードウェア構成• CPU: Cavium Octeon (SoC)      – MIPS64アーキテクチャ•    Memory: 256MB•   ...
DevelopersSummitIIJの取り組み事例1. バックボーン遅延測定「QUILL」             Developers Summit 2013 Action !   14
DevelopersSummit             事例1: Quillシステム• IIJバックボーンの遅延等を測定• 国内外の中継施設にプローブを配備  – プローブの開発にはrubyを使用                Develop...
DevelopersSummit             Quillプロジェクトの課題• プローブはすぐにオペレータが対応できない  場所にも置いてある  – 従来は汎用PCサーバを使用  – できる限り壊れてほしくない  – 交換するときは誰...
DevelopersSummit             crubyは大きすぎた..• リリース版のfirmwareに入りきらない  – 社内専用版を作って、使わない機能はザックリと    削除  – 今の所支障はないが、今後firmwareを...
DevelopersSummitIIJの取り組み事例2. 柔軟なルータ「SEIL(ザイル)」             Developers Summit 2013 Action !   18
DevelopersSummit         もっと柔軟なルータが欲しい• イベントスクリプト機能 開発中  – SEILの機能をmrubyスクリプトから操作  – 経路障害、インタフェースのUp/Downなどのイベ    ントをトリガにな...
DevelopersSummit             色々作ってみました(1)• つぶやくルータ  – 電力消費量をtweet  – http://twitter.com/wattmeter2012  – https://github.co...
Developers Summit              色々作ってみました(2)• Amazon S3   – 監視異常をトリガにして、コンテンツをアップロー     ド        • https://github.com/iij/m...
DevelopersSummitIIJの取り組み事例3. ネットワーク管理サービス「SACM」             Developers Summit 2013 Action !   22
Developers Summit                SACMとは• SACM [Service Adapter Control Manager]   – 機器の自動接続、一元管理ができるサービス   – http://www.sa...
DevelopersSummit             SACM 新サービスの特長• 「富山の置き薬」タイプのネットワーク接続  サービス  – 機能自体に課金       • ネットワーク機器「SA-W1」は無償で提供       • IP...
概要SA-W1
DevelopersSummit      SA-W1にmrubyを搭載しました• コンフィグ管理システム「レシピフレームワー  ク」はmrubyを用いて開発されています                    中間形式の            ...
DevelopersSummit      mrubyを使って分かったこと(1)• 開発効率が上がった  – 文字列処理やロジックが簡潔に記述できるように    なった  – いちいちfirmwareをビルドしなくてもプログラムを    差し替...
DevelopersSummit      mrubyを使って分かったこと(2)• たくさん地雷を踏みました..  – mrubyのバグ潰しに結構時間を費やしました ;-)  – これからmrubyを使う人は割と安心して使える• 沢山の人がmr...
DevelopersSummitまとめ             Developers Summit 2013 Action !   29
DevelopersSummit組込機器の開発プロセスが進化する• 今までの組み込み機器開発  – ドライバ、アプリ(ロジック)全てC言語又はアセンブリ    言語で開発• これからの方向性  – 速度やリソースの制約がある箇所だけC言語やアセ...
DevelopersSummit             アプリにmrubyを組み込む• アプリへの組み込みにも向いている• 例  – apache に組み込む => mod_mruby  – iOSアプリに組み込む => MobiRuby  ...
DevelopersSummit                     mrbgem• mruby版のGEM• 2012年12月、本家にコミットされた• mrubyのビルド時にGEMを組み込むことができる  – rubyスクリプト、C言語のコ...
DevelopersSummit    ruby+mruby = Internet of Things• ruby + mrubyで、様々なモノやクラウドをイン  ターネットを介して結び付けることができる   照明、家電、冷暖房、   蓄電池、...
DevelopersSummit             It’s your turn.              Developers Summit 2013 Action !
DevelopersSummit 皆さんもmruby始めてみませんか?• 組込機器の開発をしている皆さん  – mrubyが載りそうであれば、開発効率が高められ    るかどうか試してみませんか?• サーバ用のソフトを開発している皆さん  – ...
Developers SummitPR: SEIL mrubyアプリを作りませんか?• SEIL/x86   – https://www.seil.jp/community/seilx86   – 仮想ルータソフトウェア   – コンフィグ保存...
DevelopersSummit             mrubyのビルド方法(1)• PC環境(Linux, Mac) でビルドに必要なもの  – GCC  – bison  – git  – Rake (Ruby版make) または ru...
Developers Summit              mrubyのビルド方法(2)$ git clone https://github.com/mruby/mruby$ cd mruby$ ./minirake (または、 rake)•...
Developers  Summit               mrubyのビルド方法(3)hello.rbclass Hello                       ソースコードを直接実行 def world            ...
DevelopersSummit                     mrubyのビルド方法(4)                                                           irep 148 nre...
Developers Summit        軽量Rubyフォーラムのご紹介• 2013年2月に発足予定のNPO法人   – http://forum.mruby.org   – IIJも加入予定• このような人・企業は、是非ご参加ください...
Developers Summit              IIJが作るPaaS = MOGOK• http://mogok.jp/                   Developers Summit 2013 Action !
DevelopersSummit      IIJエンジニアセミナー開催!! IIJのソフトウェア開発現場に興味を持ったアナタ! IIJのエンジニアとお話しませんか? 「3/9(土)@IIJ本社」にて、エンジニアがIIJの開発 業務を紹介するセ...
Upcoming SlideShare
Loading in …5
×

Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

9,458 views

Published on

Devsumi2013 2月15日 15-E-2 講演資料をアップロードしました。

Published in: Technology
  • Be the first to comment

Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?

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

×