軽量Rubyで実現する
   柔軟なルータ
SEILへの軽量Rubyの組み込み

2013年1月14日 Tokyo Ruby Kaigi
          10
        曽我部 崇
自己紹介

曽我部 崇(@rev4t)
● IIJで企業向けルータの開発などに従事

最近の活動場所
● mruby (http://github.com/iij/mruby)
● openstack
  ○ コントリビュータ始めました(IPv6まわりの修正をした程度..)
SEIL(ザイル)作っています

● ISPのノウハウを結集してIIJが開発した企業向
  けアクセスルータ
● Firmwareは独自開発、Hardwareは国内製造
● 仮想化環境(VMWare, KVM, Hyper-V)対応




           http://seil.jp/
mrubyとの出会い

● 2011年春頃
    ○ 社内プロジェクトで、SEILに cruby を組み込んで使った
    ○ firmware内の使わない機能を削除して、ギリギリ動いた
●   2011年8月頃
    ○ 社内の先輩 前橋さん(@tmeb4)にmrubyの存在を教えてもらう
       ■ 1/13 16:00-16:15 「Rubyによるお手軽分散処理」
    ○ SEILに載るか試したくなり、関係者にコンタクトを取る
●   2011年12月頃
    ○ ソースコードを入手し、SEIL上でもmrubyが問題なく動作した!
    ○ 兼ねてから温めていた「柔軟なルータ」構想が、実現で
       きそう
もっと柔軟なルータが欲しい

● イベントスクリプト機能 開発中
 ○ SEILの機能をmrubyスクリプトから操作
 ○ 経路障害、インタフェースのUp/Downなどのイベントをト
   リガになる
色々作ってみました(1)

● つぶやくルータ
 ○ 電力消費量をtweet
 ○ https://github.com/iij/mruby/tree/iij/app/twitter
   ■ matsumoto-rさんにmrbgem化していただきました
       ●   https://github.com/matsumoto-r/mruby-oauth
色々作ってみました(2)

● Amazon S3
  ○ 監視異常をトリガにして、コンテンツをアップロード
    ■ https://github.com/iij/mruby-aws-s3




                         アップロード




                       監視異常
いざ、組み込みの世界へ..

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


● これからの方向性
 ○ 速度やリソースの制約がある箇所だけC言語やアセンブ
   リ言語で記述
 ○ その他のロジック部分は、出来る限り開発効率の良い
   言語で開発


 Ruby技術者を組み込みの世界に誘いたい :-)
mrbgem
● mruby版のGEM
● 2012年12月、本家にコミットされた
● mrubyのビルド時にGEMを組み込むことができ
  る
 ○ rubyスクリプト、C言語のコードどちらも組み込み可能


mrbgemに対応した以後、mrubyのエコシステムが
急速に進化中
 https://github.com/mruby/mruby/wiki/Related-Projects
Small is Beautiful
● mruby(ミニマム)はruby言語の最少セットのみ
  を提供
  ○ 利用者は、必要なものだけを選んで組み込む
  ○ 不要なものは入れなくて済むため、コンパクトになる


                        Application Program
    gem A
                gem A         gem B       gem C
                 (IO)        (Regexp)    (Socket)
    gem B
                            RiteVM
mrubyは組込機器以外にも適用できる

● アプリへの組み込みにも向いている
● 例
 ○ apache に組み込む => mod_mruby
 ○ iOSアプリに組み込む => MobiRuby
 ○ 言語内DSL
    ■ mruby(ミニマム) + 必要なmrbgemだけを組み込む
      ことで、コンパクトかつ堅牢になる


● 利点
 ○ アプリ動作ホストのruby環境に依存しない
   ■ rubyバージョン、gem依存を気にしなくて良い
ruby+mruby = Internet of Things
● ruby + mrubyで、様々なモノやクラウドをイン
  ターネットを介して結び付けることができる




  照明、家電、冷暖房、
  蓄電池、各種センサ ,etc.
mrubyはフロンティア :-)

●   現時点では、mrubyの基本部
    分が出来ただけ
    ○   エコシステム、ドキュメント、mrbgems
        など、未整備のモノ多数
今なら
コントリビュートできる
ことが沢山あります!
軽量Rubyフォーラムのご紹介

● 2013年2月に発足予定のNPO法人
  ○ http://forum.mruby.org
  ○ IIJも加入予定
● このような人・企業は、是非ご参加ください!
  ○   自社製品の開発言語として軽量Rubyを採用してみたい
  ○   軽量Rubyの今後の開発方針をいち早く知りたい
  ○   軽量Rubyの今後の開発方針について意見したい
  ○   顧客に軽量Rubyを提案することで差別化を図りたい
  ○   軽量Ruby(あるいはその周辺ツール)の開発に関与したい
  ○   自社で軽量Ruby製品をNPOを通じて宣伝したい
  ○   軽量Ruby教育関連事業を企画したい
  ○   とにかく軽量Rubyを応援したい
PR: mrubyの夕べ

●   日時: 1月28日(月)
●   時間: 17:00-19:20
●   場所: 東京 神保町 IIJ本社
●   http://bit.ly/mruby-evening


17:00-18:30 に、まつもとゆきひろさん
によるmrubyに関する講演があります!

Tokyo ruby kaigi 10 (sogabe)