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

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

on

  • 9,016 views

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

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

Statistics

Views

Total Views
9,016
Views on SlideShare
7,971
Embed Views
1,045

Actions

Likes
13
Downloads
71
Comments
0

8 Embeds 1,045

https://twitter.com 401
http://event.shoeisha.jp 299
http://unsolublesugar.com 193
http://namihira.hatenablog.com 135
http://test-event.shoeisha.jp 8
http://intra.iwest.in.infocom.co.jp 7
http://webcache.googleusercontent.com 1
https://abs.twimg.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • DevelopersSummit Ruby開発者のみなさん、 mrubyで楽しく快適な組み込みアプリ開発を 始めませんか?15-E-2 曽我部 崇#devsumiX 株式会社インターネットイニシアティブ プロダクト本部 アプリケーション開発部 Developers Summit 2013 Action !
  • Developers Summit 自己紹介• 曽我部 崇(@rev4t) – IIJで企業向けルータの開発などに従事最近の活動場所• mruby (http://github.com/iij/mruby)• openstack – コントリビュータ始めました(IPv6まわりの修正をし た程度..) Developers Summit 2013 Action ! 2
  • DevelopersSummit SEIL(ザイル)作っています• ISPのノウハウを結集してIIJが開発した企業向 けアクセスルータ• Firmwareは独自開発、Hardwareは国内製造• 仮想化環境(VMWare, KVM, Hyper-V)対応 Developers Summit 2013 Action ! 3
  • DevelopersSummit SEILのアーキテクチャ• NetBSDをベースに、ルーティングエンジンや コンフィグ管理システム(CLI, WebUI)を組み込 んでいる コンフィグ管理システム Quagga Other daemons (Routing Engine) libc NetBSD Kernel Developers Summit 2013 Action ! 4
  • DevelopersSummit 質問• 組込ソフトの開発をして いる人はどれくらいい らっしゃいますか? Developers Summit 2013 Action !
  • Developers Summit mrubyとの出会い• 2011年春頃 – 社内プロジェクトで、SEILに cruby を組み込んだ• 2011年8月頃 – 社内の先輩 前橋さん(@tmeb4)にmrubyの存在を教 えてもらう – SEILでも動くか試すべく、関係者にコンタクトを取る• 2011年12月頃 – ソースコードを入手し、SEIL上でもmrubyが問題なく動 作した Developers Summit 2013 Action ! 6
  • 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
  • Developers Summit C言語でコード書くのは結構大変油断すると、すぐにバグが入ります ;-(• エラー処理のコードが煩雑• 特に文字列処理が大変 – 文字列領域の踏み抜き.. – 確保したメモリの解放忘れでメモリリーク.. – FDの解放し忘れでFDリーク.. – etc... Developers Summit 2013 Action ! 8
  • DevelopersSummit 軽量Ruby(mruby)とは• 家電製品などの開発生産性を向上させることを目指し て設計されたRuby言語• 2011-2012年にかけて、経済産業省の「地域イノベー ション創出研究開発事業」として、開発が進められた• 2012年4月に、MITライセンスとしてgithub上に公開• 特長 – Ruby処理系に必要な資源(メモリ)の削減 – 実行速度の向上 – リアルタイム性の向上 – 直接見えないように変換されたソースコード Developers Summit 2013 Action ! 9
  • DevelopersSummitmrubyを使えば開発効率が上がる? コンフィグ管理システム 文字列処理が多い Quagga Other daemons (Routing Engine) システムプログラミング libc NetBSD Kernel C言語必須コンフィグ管理システムはrubyで書くと開発効率が高まりそう Developers Summit 2013 Action ! 10
  • 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
  • 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
  • Developers Summit SEIL/X1 ハードウェア構成• CPU: Cavium Octeon (SoC) – MIPS64アーキテクチャ• Memory: 256MB• Flash: 16MB• USB: 1ポート• Ethernet: GbE 3-port Developers Summit 2013 Action ! 13
  • DevelopersSummitIIJの取り組み事例1. バックボーン遅延測定「QUILL」 Developers Summit 2013 Action ! 14
  • DevelopersSummit 事例1: Quillシステム• IIJバックボーンの遅延等を測定• 国内外の中継施設にプローブを配備 – プローブの開発にはrubyを使用 Developers Summit 2013 Action ! 15
  • DevelopersSummit Quillプロジェクトの課題• プローブはすぐにオペレータが対応できない 場所にも置いてある – 従来は汎用PCサーバを使用 – できる限り壊れてほしくない – 交換するときは誰でも簡単にできるようにしたい SEIL/X1 を使うことにした Developers Summit 2013 Action ! 16
  • DevelopersSummit crubyは大きすぎた..• リリース版のfirmwareに入りきらない – 社内専用版を作って、使わない機能はザックリと 削除 – 今の所支障はないが、今後firmwareをメンテナン スし続けるのは大変mruby版firmwareへ移行を検討中 Developers Summit 2013 Action ! 17
  • DevelopersSummitIIJの取り組み事例2. 柔軟なルータ「SEIL(ザイル)」 Developers Summit 2013 Action ! 18
  • DevelopersSummit もっと柔軟なルータが欲しい• イベントスクリプト機能 開発中 – SEILの機能をmrubyスクリプトから操作 – 経路障害、インタフェースのUp/Downなどのイベ ントをトリガになる Action 軽量Ruby スクリプト •最低限の切り分け作業を自動化Event • ping, show status route, ...•インタフェースDown •外部サービスとの連係•CPU負荷上昇 • IaaSやPaaSの性能を増減•通信量の増加 • 監視システムへアラートを•経路の変化 送信•etc. •経路切替 Developers Summit 2013 Action ! 19
  • 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
  • Developers Summit 色々作ってみました(2)• Amazon S3 – 監視異常をトリガにして、コンテンツをアップロー ド • https://github.com/iij/mruby-aws-s3 Amazon The Internet S3 監視異常 Developers Summit 2013 Action ! 21
  • DevelopersSummitIIJの取り組み事例3. ネットワーク管理サービス「SACM」 Developers Summit 2013 Action ! 22
  • Developers Summit SACMとは• SACM [Service Adapter Control Manager] – 機器の自動接続、一元管理ができるサービス – http://www.sacm.jp/ SA=Service Adapter Developers Summit 2013 Action ! 23
  • DevelopersSummit SACM 新サービスの特長• 「富山の置き薬」タイプのネットワーク接続 サービス – 機能自体に課金 • ネットワーク機器「SA-W1」は無償で提供 • IPsec-VPNレシピ、又は無線LANレシピ – 必要なネットワークを迅速に構築できる Developers Summit 2013 Action ! 24
  • 概要SA-W1
  • DevelopersSummit SA-W1にmrubyを搭載しました• コンフィグ管理システム「レシピフレームワー ク」はmrubyを用いて開発されています 中間形式の 内部プログラム向けの 設定ファイル 設定ファイルに変換 設定 パラメータ レシピ フレームワーク Developers Summit 2013 Action ! 26
  • DevelopersSummit mrubyを使って分かったこと(1)• 開発効率が上がった – 文字列処理やロジックが簡潔に記述できるように なった – いちいちfirmwareをビルドしなくてもプログラムを 差し替えできるのは便利 Developers Summit 2013 Action ! 27
  • DevelopersSummit mrubyを使って分かったこと(2)• たくさん地雷を踏みました.. – mrubyのバグ潰しに結構時間を費やしました ;-) – これからmrubyを使う人は割と安心して使える• 沢山の人がmrubyを使えば、さらにバグが 減って安定します! Developers Summit 2013 Action ! 28
  • DevelopersSummitまとめ Developers Summit 2013 Action ! 29
  • DevelopersSummit組込機器の開発プロセスが進化する• 今までの組み込み機器開発 – ドライバ、アプリ(ロジック)全てC言語又はアセンブリ 言語で開発• これからの方向性 – 速度やリソースの制約がある箇所だけC言語やアセ ンブリ言語で記述 – その他のロジック部分は、出来る限り開発効率の良 い言語で開発 – テスト駆動開発 Developers Summit 2013 Action ! 30
  • DevelopersSummit アプリにmrubyを組み込む• アプリへの組み込みにも向いている• 例 – apache に組み込む => mod_mruby – iOSアプリに組み込む => MobiRuby – 言語内DSL • mruby(ミニマム) + 必要なmrbgemだけを組み込むことで、コ ンパクトかつ堅牢になる• 利点 – アプリ動作ホストのruby環境に依存しない • rubyバージョン、gem依存を気にしなくて良い Developers Summit 2013 Action ! 31
  • 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
  • DevelopersSummit ruby+mruby = Internet of Things• ruby + mrubyで、様々なモノやクラウドをイン ターネットを介して結び付けることができる 照明、家電、冷暖房、 蓄電池、各種センサ,etc. Developers Summit 2013 Action ! 33
  • DevelopersSummit It’s your turn. Developers Summit 2013 Action !
  • DevelopersSummit 皆さんもmruby始めてみませんか?• 組込機器の開発をしている皆さん – mrubyが載りそうであれば、開発効率が高められ るかどうか試してみませんか?• サーバ用のソフトを開発している皆さん – アプリ内のミニ言語などに使ってみませんか? Developers Summit 2013 Action ! 35
  • Developers SummitPR: SEIL mrubyアプリを作りませんか?• SEIL/x86 – https://www.seil.jp/community/seilx86 – 仮想ルータソフトウェア – コンフィグ保存が不要であれば、無料で使える• 今春リリース予定のfirmwareでmrubyスクリプト に対応予定• 今後、アプリコンテストなどを企画する予定です。 是非ご参加ください! Developers Summit 2013 Action ! 36
  • DevelopersSummit mrubyのビルド方法(1)• PC環境(Linux, Mac) でビルドに必要なもの – GCC – bison – git – Rake (Ruby版make) または ruby1.8以降 Developers Summit 2013 Action ! 37
  • 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
  • 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
  • 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
  • Developers Summit 軽量Rubyフォーラムのご紹介• 2013年2月に発足予定のNPO法人 – http://forum.mruby.org – IIJも加入予定• このような人・企業は、是非ご参加ください! – 自社製品の開発言語として軽量Rubyを採用してみたい – 軽量Rubyの今後の開発方針をいち早く知りたい、意見したい – 顧客に軽量Rubyを提案することで差別化を図りたい – 軽量Ruby(あるいはその周辺ツール)の開発に関与したい – 自社で軽量Ruby製品をNPOを通じて宣伝したい – 軽量Ruby教育関連事業を企画したい – とにかく軽量Rubyを応援したい Developers Summit 2013 Action ! 41
  • Developers Summit IIJが作るPaaS = MOGOK• http://mogok.jp/ Developers Summit 2013 Action !
  • 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