SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
Developers
Summit




   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
Developers
Summit
             SEIL(ザイル)作っています

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




                 Developers Summit 2013 Action !   3
Developers
Summit
             SEILのアーキテクチャ

• NetBSDをベースに、ルーティングエンジンや
  コンフィグ管理システム(CLI, WebUI)を組み込
  んでいる

                   コンフィグ管理システム
                 Quagga
                                                Other daemons
             (Routing Engine)
                                   libc
                   NetBSD Kernel
                     Developers Summit 2013 Action !            4
Developers
Summit
                     質問


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

             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
Developers
Summit
             軽量Ruby(mruby)とは

• 家電製品などの開発生産性を向上させることを目指し
  て設計されたRuby言語
• 2011-2012年にかけて、経済産業省の「地域イノベー
  ション創出研究開発事業」として、開発が進められた
• 2012年4月に、MITライセンスとしてgithub上に公開
• 特長
  –   Ruby処理系に必要な資源(メモリ)の削減
  –   実行速度の向上
  –   リアルタイム性の向上
  –   直接見えないように変換されたソースコード

                Developers Summit 2013 Action !   9
Developers
Summit
mrubyを使えば開発効率が上がる?


        コンフィグ管理システム                                          文字列処理が多い
     Quagga
                             Other daemons
 (Routing Engine)                                            システムプログラミング
                    libc
        NetBSD Kernel                                        C言語必須



コンフィグ管理システムはrubyで書くと
開発効率が高まりそう
                           Developers Summit 2013 Action !              10
Developers
Summit
                  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
Developers
Summit




IIJの取り組み事例
1. バックボーン遅延測定
「QUILL」
             Developers Summit 2013 Action !   14
Developers
Summit
             事例1: Quillシステム

• IIJバックボーンの遅延等を測定
• 国内外の中継施設にプローブを配備
  – プローブの開発にはrubyを使用




                Developers Summit 2013 Action !   15
Developers
Summit
             Quillプロジェクトの課題

• プローブはすぐにオペレータが対応できない
  場所にも置いてある
  – 従来は汎用PCサーバを使用
  – できる限り壊れてほしくない
  – 交換するときは誰でも簡単にできるようにしたい


             SEIL/X1 を使うことにした
                 Developers Summit 2013 Action !   16
Developers
Summit
             crubyは大きすぎた..

• リリース版のfirmwareに入りきらない
  – 社内専用版を作って、使わない機能はザックリと
    削除
  – 今の所支障はないが、今後firmwareをメンテナン
    スし続けるのは大変


mruby版firmwareへ移行を検討中

                Developers Summit 2013 Action !   17
Developers
Summit




IIJの取り組み事例
2. 柔軟なルータ「SEIL(ザイル)」

             Developers Summit 2013 Action !   18
Developers
Summit
         もっと柔軟なルータが欲しい

• イベントスクリプト機能 開発中
  – SEILの機能をmrubyスクリプトから操作
  – 経路障害、インタフェースのUp/Downなどのイベ
    ントをトリガになる
                                           Action
                 軽量Ruby
                 スクリプト                     •最低限の切り分け作業を自動化
Event                                         • ping, show status route, ...
•インタフェースDown                               •外部サービスとの連係
•CPU負荷上昇                                      • IaaSやPaaSの性能を増減
•通信量の増加                                       • 監視システムへアラートを
•経路の変化                                        送信
•etc.                                      •経路切替

               Developers Summit 2013 Action !                                 19
Developers
Summit
             色々作ってみました(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
Developers
Summit




IIJの取り組み事例
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
Developers
Summit
             SACM 新サービスの特長

• 「富山の置き薬」タイプのネットワーク接続
  サービス
  – 機能自体に課金
       • ネットワーク機器「SA-W1」は無償で提供
       • IPsec-VPNレシピ、又は無線LANレシピ
  – 必要なネットワークを迅速に構築できる




                Developers Summit 2013 Action !   24
概要




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

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

                    中間形式の                      内部プログラム向けの
                    設定ファイル                     設定ファイルに変換
    設定
   パラメータ

                                   レシピ
                                 フレームワーク




             Developers Summit 2013 Action !                26
Developers
Summit
      mrubyを使って分かったこと(1)

• 開発効率が上がった
  – 文字列処理やロジックが簡潔に記述できるように
    なった
  – いちいちfirmwareをビルドしなくてもプログラムを
    差し替えできるのは便利




             Developers Summit 2013 Action !   27
Developers
Summit
      mrubyを使って分かったこと(2)

• たくさん地雷を踏みました..
  – mrubyのバグ潰しに結構時間を費やしました ;-)
  – これからmrubyを使う人は割と安心して使える


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


             Developers Summit 2013 Action !   28
Developers
Summit




まとめ


             Developers Summit 2013 Action !   29
Developers
Summit
組込機器の開発プロセスが進化する

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

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

             Developers Summit 2013 Action !   30
Developers
Summit
             アプリにmrubyを組み込む

• アプリへの組み込みにも向いている
• 例
  – apache に組み込む => mod_mruby
  – iOSアプリに組み込む => MobiRuby
  – 言語内DSL
       • mruby(ミニマム) + 必要なmrbgemだけを組み込むことで、コ
         ンパクトかつ堅牢になる
• 利点
  – アプリ動作ホストのruby環境に依存しない
       • rubyバージョン、gem依存を気にしなくて良い


                 Developers Summit 2013 Action !   31
Developers
Summit
                     mrbgem

• mruby版のGEM
• 2012年12月、本家にコミットされた
• mrubyのビルド時にGEMを組み込むことができる
  – rubyスクリプト、C言語のコードどちらも組み込み可能


mrbgemに対応した以後、mrubyのエコシステムが
急速に進化中
 https://github.com/mruby/mruby/wiki/Related-Projects

                  Developers Summit 2013 Action !   32
Developers
Summit
    ruby+mruby = Internet of Things

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




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




                    Developers Summit 2013 Action !   33
Developers
Summit




             It’s your turn.




              Developers Summit 2013 Action !
Developers
Summit
 皆さんもmruby始めてみませんか?

• 組込機器の開発をしている皆さん
  – mrubyが載りそうであれば、開発効率が高められ
    るかどうか試してみませんか?
• サーバ用のソフトを開発している皆さん
  – アプリ内のミニ言語などに使ってみませんか?




             Developers Summit 2013 Action !   35
Developers
 Summit
PR: SEIL mrubyアプリを作りませんか?

• SEIL/x86
   – https://www.seil.jp/community/seilx86
   – 仮想ルータソフトウェア
   – コンフィグ保存が不要であれば、無料で使える


• 今春リリース予定のfirmwareでmrubyスクリプト
  に対応予定
• 今後、アプリコンテストなどを企画する予定です。
  是非ご参加ください!
                 Developers Summit 2013 Action !   36
Developers
Summit
             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.rb
class Hello                       ソースコードを直接実行
 def world                        $ bin/mruby hello.rb
  puts "Hello World!"             Hello World!
 end
end                               バイナリファイルを実行
                                  $ bin/mrbc hello.rb
a = Hello.new                     $ bin/mruby –b hello.mrb
a.world                           Hello World!

                   Developers Summit 2013 Action !       39
Developers
Summit
                     mrubyのビルド方法(4)
                                                           irep 148 nregs=4 nlocals=2 pools=0 syms=3
$ bin/mruby –v hello.rb                                    000 OP_LOADNIL                 R2
mruby - Embeddable Ruby Copyright (c) 2010-2013 mruby
                                                           001 OP_LOADNIL                 R3
developers
                                                           002 OP_CLASS R2                :Hello
NODE_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 !
Developers
Summit
      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

Weitere ähnliche Inhalte

Was ist angesagt?

人が作るソフトウェア 〜今組織パターンを読む意味〜
人が作るソフトウェア 〜今組織パターンを読む意味〜人が作るソフトウェア 〜今組織パターンを読む意味〜
人が作るソフトウェア 〜今組織パターンを読む意味〜Yukei Wachi
 
【15-e-7】Kinectから始まったスタートアップ #devsumi
【15-e-7】Kinectから始まったスタートアップ #devsumi【15-e-7】Kinectから始まったスタートアップ #devsumi
【15-e-7】Kinectから始まったスタートアップ #devsumiKaoru NAKAMURA
 
【15-B-1】AmazonのDevOpsを支えるAWSクラウド
【15-B-1】AmazonのDevOpsを支えるAWSクラウド【15-B-1】AmazonのDevOpsを支えるAWSクラウド
【15-B-1】AmazonのDevOpsを支えるAWSクラウドYasuhiro Horiuchi
 
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へモバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へekushida
 
Open dataとハッカソンで変わる世界
Open dataとハッカソンで変わる世界Open dataとハッカソンで変わる世界
Open dataとハッカソンで変わる世界Hal Seki
 
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~Akira Inoue
 
MY JOB WEND TO VIETNUM? DevSumi ver.
MY JOB WEND TO VIETNUM? DevSumi ver.MY JOB WEND TO VIETNUM? DevSumi ver.
MY JOB WEND TO VIETNUM? DevSumi ver.Ryo Amano
 
[devsumi2013]【15-D-7】実演!現場の悩みをTOCfEで考え抜く!
[devsumi2013]【15-D-7】実演!現場の悩みをTOCfEで考え抜く![devsumi2013]【15-D-7】実演!現場の悩みをTOCfEで考え抜く!
[devsumi2013]【15-D-7】実演!現場の悩みをTOCfEで考え抜く!tocfebootcamp
 
デブサミ 2013 日本App Inventorユーザー会
デブサミ 2013 日本App Inventorユーザー会デブサミ 2013 日本App Inventorユーザー会
デブサミ 2013 日本App Inventorユーザー会Takeaki Tada
 
でぶさみ夏2013 キーノート オレンジレンジャーの資料
でぶさみ夏2013 キーノート オレンジレンジャーの資料でぶさみ夏2013 キーノート オレンジレンジャーの資料
でぶさみ夏2013 キーノート オレンジレンジャーの資料Tomohiro Fujii
 
Enterpriseでもモバイル開発
Enterpriseでもモバイル開発Enterpriseでもモバイル開発
Enterpriseでもモバイル開発Mitch Okamoto
 
夏サミ 2013 A2 セッション資料 #natsumiA2
夏サミ 2013 A2 セッション資料 #natsumiA2 夏サミ 2013 A2 セッション資料 #natsumiA2
夏サミ 2013 A2 セッション資料 #natsumiA2 智治 長沢
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」Serverworks Co.,Ltd.
 
夏サミ2013 基調講演 「DevOpsは開発現場とビジネスの間に何を生むか?」(新野淳一氏)
夏サミ2013 基調講演 「DevOpsは開発現場とビジネスの間に何を生むか?」(新野淳一氏)夏サミ2013 基調講演 「DevOpsは開発現場とビジネスの間に何を生むか?」(新野淳一氏)
夏サミ2013 基調講演 「DevOpsは開発現場とビジネスの間に何を生むか?」(新野淳一氏)Developers Summit
 
ミクシィ 21卒向け Android研修
ミクシィ 21卒向け Android研修ミクシィ 21卒向け Android研修
ミクシィ 21卒向け Android研修akkuma
 
プロトタイピングの潮流とデザイナーへの提言
プロトタイピングの潮流とデザイナーへの提言プロトタイピングの潮流とデザイナーへの提言
プロトタイピングの潮流とデザイナーへの提言Shigeru Kobayashi
 
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発Naoki Umehara
 
技術選択とアーキテクトの役割 (要約版)
技術選択とアーキテクトの役割 (要約版)技術選択とアーキテクトの役割 (要約版)
技術選択とアーキテクトの役割 (要約版)Toru Yamaguchi
 

Was ist angesagt? (20)

人が作るソフトウェア 〜今組織パターンを読む意味〜
人が作るソフトウェア 〜今組織パターンを読む意味〜人が作るソフトウェア 〜今組織パターンを読む意味〜
人が作るソフトウェア 〜今組織パターンを読む意味〜
 
【15-e-7】Kinectから始まったスタートアップ #devsumi
【15-e-7】Kinectから始まったスタートアップ #devsumi【15-e-7】Kinectから始まったスタートアップ #devsumi
【15-e-7】Kinectから始まったスタートアップ #devsumi
 
【15-B-1】AmazonのDevOpsを支えるAWSクラウド
【15-B-1】AmazonのDevOpsを支えるAWSクラウド【15-B-1】AmazonのDevOpsを支えるAWSクラウド
【15-B-1】AmazonのDevOpsを支えるAWSクラウド
 
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へモバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
 
Open dataとハッカソンで変わる世界
Open dataとハッカソンで変わる世界Open dataとハッカソンで変わる世界
Open dataとハッカソンで変わる世界
 
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
 
Barcode-punk
Barcode-punkBarcode-punk
Barcode-punk
 
15 c5 dad
15 c5 dad15 c5 dad
15 c5 dad
 
MY JOB WEND TO VIETNUM? DevSumi ver.
MY JOB WEND TO VIETNUM? DevSumi ver.MY JOB WEND TO VIETNUM? DevSumi ver.
MY JOB WEND TO VIETNUM? DevSumi ver.
 
[devsumi2013]【15-D-7】実演!現場の悩みをTOCfEで考え抜く!
[devsumi2013]【15-D-7】実演!現場の悩みをTOCfEで考え抜く![devsumi2013]【15-D-7】実演!現場の悩みをTOCfEで考え抜く!
[devsumi2013]【15-D-7】実演!現場の悩みをTOCfEで考え抜く!
 
デブサミ 2013 日本App Inventorユーザー会
デブサミ 2013 日本App Inventorユーザー会デブサミ 2013 日本App Inventorユーザー会
デブサミ 2013 日本App Inventorユーザー会
 
でぶさみ夏2013 キーノート オレンジレンジャーの資料
でぶさみ夏2013 キーノート オレンジレンジャーの資料でぶさみ夏2013 キーノート オレンジレンジャーの資料
でぶさみ夏2013 キーノート オレンジレンジャーの資料
 
Enterpriseでもモバイル開発
Enterpriseでもモバイル開発Enterpriseでもモバイル開発
Enterpriseでもモバイル開発
 
夏サミ 2013 A2 セッション資料 #natsumiA2
夏サミ 2013 A2 セッション資料 #natsumiA2 夏サミ 2013 A2 セッション資料 #natsumiA2
夏サミ 2013 A2 セッション資料 #natsumiA2
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
 
夏サミ2013 基調講演 「DevOpsは開発現場とビジネスの間に何を生むか?」(新野淳一氏)
夏サミ2013 基調講演 「DevOpsは開発現場とビジネスの間に何を生むか?」(新野淳一氏)夏サミ2013 基調講演 「DevOpsは開発現場とビジネスの間に何を生むか?」(新野淳一氏)
夏サミ2013 基調講演 「DevOpsは開発現場とビジネスの間に何を生むか?」(新野淳一氏)
 
ミクシィ 21卒向け Android研修
ミクシィ 21卒向け Android研修ミクシィ 21卒向け Android研修
ミクシィ 21卒向け Android研修
 
プロトタイピングの潮流とデザイナーへの提言
プロトタイピングの潮流とデザイナーへの提言プロトタイピングの潮流とデザイナーへの提言
プロトタイピングの潮流とデザイナーへの提言
 
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
 
技術選択とアーキテクトの役割 (要約版)
技術選択とアーキテクトの役割 (要約版)技術選択とアーキテクトの役割 (要約版)
技術選択とアーキテクトの役割 (要約版)
 

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

デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?Developers Summit
 
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用Developers Summit
 
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発Kazuaki Tanaka
 
デブサミ2013【15-D-4】Opsから挑むDevOps
デブサミ2013【15-D-4】Opsから挑むDevOpsデブサミ2013【15-D-4】Opsから挑むDevOps
デブサミ2013【15-D-4】Opsから挑むDevOpsDevelopers Summit
 
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏Developers Summit
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたIBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたYou&I
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングterurou
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMFAtomu Hidaka
 
Mbed祭り 2017@春の新横浜 20170225 竹之下
Mbed祭り 2017@春の新横浜 20170225 竹之下Mbed祭り 2017@春の新横浜 20170225 竹之下
Mbed祭り 2017@春の新横浜 20170225 竹之下Koyo Takenoshita
 
2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMFAtomu Hidaka
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMFAtomu Hidaka
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例fumoto kazuhiro
 
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)l_b__
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Tomoya Hibi
 
「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態npsg
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
Mk network programmability-03
Mk network programmability-03Mk network programmability-03
Mk network programmability-03Miya Kohno
 
Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Masaki Muranaka
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#Yuta Matsumura
 

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

デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
 
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
 
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
 
デブサミ2013【15-D-4】Opsから挑むDevOps
デブサミ2013【15-D-4】Opsから挑むDevOpsデブサミ2013【15-D-4】Opsから挑むDevOps
デブサミ2013【15-D-4】Opsから挑むDevOps
 
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたIBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみた
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
 
Mbed祭り 2017@春の新横浜 20170225 竹之下
Mbed祭り 2017@春の新横浜 20170225 竹之下Mbed祭り 2017@春の新横浜 20170225 竹之下
Mbed祭り 2017@春の新横浜 20170225 竹之下
 
2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
 
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)
 
「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
Mk network programmability-03
Mk network programmability-03Mk network programmability-03
Mk network programmability-03
 
Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 

Mehr von Takashi Sogabe

Rookの基礎・バージョンアップ
Rookの基礎・バージョンアップRookの基礎・バージョンアップ
Rookの基礎・バージョンアップTakashi Sogabe
 
OCP Serverを用いた OpenStack Containerの検証
 OCP Serverを用いたOpenStack Containerの検証 OCP Serverを用いたOpenStack Containerの検証
OCP Serverを用いた OpenStack Containerの検証Takashi Sogabe
 
Cumulus Linux 導入事例 -ネットワークをDevOpsに統合した、エンジニアが幸せになるインフラ運用手法のご紹介-
Cumulus Linux 導入事例 -ネットワークをDevOpsに統合した、エンジニアが幸せになるインフラ運用手法のご紹介-Cumulus Linux 導入事例 -ネットワークをDevOpsに統合した、エンジニアが幸せになるインフラ運用手法のご紹介-
Cumulus Linux 導入事例 -ネットワークをDevOpsに統合した、エンジニアが幸せになるインフラ運用手法のご紹介-Takashi Sogabe
 
OpenContrail Users Event at OpenStack Summit Paris 行ってきました
OpenContrail Users Event at OpenStack Summit Paris 行ってきましたOpenContrail Users Event at OpenStack Summit Paris 行ってきました
OpenContrail Users Event at OpenStack Summit Paris 行ってきましたTakashi Sogabe
 
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-Takashi Sogabe
 
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)Takashi Sogabe
 
OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!Takashi Sogabe
 
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介Takashi Sogabe
 
Yokozuna 日本語検索機能を評価しました
Yokozuna 日本語検索機能を評価しましたYokozuna 日本語検索機能を評価しました
Yokozuna 日本語検索機能を評価しましたTakashi Sogabe
 
コモディティL3SW/ルータでオープンなSDNを実現しよう
コモディティL3SW/ルータでオープンなSDNを実現しようコモディティL3SW/ルータでオープンなSDNを実現しよう
コモディティL3SW/ルータでオープンなSDNを実現しようTakashi Sogabe
 
Riak / Riak-CS(Enterprise版) ベンチマークしました
 Riak / Riak-CS(Enterprise版) ベンチマークしました Riak / Riak-CS(Enterprise版) ベンチマークしました
Riak / Riak-CS(Enterprise版) ベンチマークしましたTakashi Sogabe
 
Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)Takashi Sogabe
 

Mehr von Takashi Sogabe (12)

Rookの基礎・バージョンアップ
Rookの基礎・バージョンアップRookの基礎・バージョンアップ
Rookの基礎・バージョンアップ
 
OCP Serverを用いた OpenStack Containerの検証
 OCP Serverを用いたOpenStack Containerの検証 OCP Serverを用いたOpenStack Containerの検証
OCP Serverを用いた OpenStack Containerの検証
 
Cumulus Linux 導入事例 -ネットワークをDevOpsに統合した、エンジニアが幸せになるインフラ運用手法のご紹介-
Cumulus Linux 導入事例 -ネットワークをDevOpsに統合した、エンジニアが幸せになるインフラ運用手法のご紹介-Cumulus Linux 導入事例 -ネットワークをDevOpsに統合した、エンジニアが幸せになるインフラ運用手法のご紹介-
Cumulus Linux 導入事例 -ネットワークをDevOpsに統合した、エンジニアが幸せになるインフラ運用手法のご紹介-
 
OpenContrail Users Event at OpenStack Summit Paris 行ってきました
OpenContrail Users Event at OpenStack Summit Paris 行ってきましたOpenContrail Users Event at OpenStack Summit Paris 行ってきました
OpenContrail Users Event at OpenStack Summit Paris 行ってきました
 
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
 
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
 
OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!
 
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
 
Yokozuna 日本語検索機能を評価しました
Yokozuna 日本語検索機能を評価しましたYokozuna 日本語検索機能を評価しました
Yokozuna 日本語検索機能を評価しました
 
コモディティL3SW/ルータでオープンなSDNを実現しよう
コモディティL3SW/ルータでオープンなSDNを実現しようコモディティL3SW/ルータでオープンなSDNを実現しよう
コモディティL3SW/ルータでオープンなSDNを実現しよう
 
Riak / Riak-CS(Enterprise版) ベンチマークしました
 Riak / Riak-CS(Enterprise版) ベンチマークしました Riak / Riak-CS(Enterprise版) ベンチマークしました
Riak / Riak-CS(Enterprise版) ベンチマークしました
 
Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)
 

Kürzlich hochgeladen

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 

Kürzlich hochgeladen (9)

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 

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

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