20130615 組込みの仕事場でrubyを使う

57
組込みの仕事場でRubyを使う しずと (@shizuto_a) 2013/6/15 58Ruby/Rails勉強会@関西

Upload: ryo-nagai

Post on 28-May-2015

584 views

Category:

Technology


3 download

DESCRIPTION

第58回 Ruby/Rails勉強会@関西 でお話しした、ライトユーザなRubyistの日常のお話です。

TRANSCRIPT

Page 1: 20130615 組込みの仕事場でRubyを使う

組込みの仕事場でRubyを使うしずと (@shizuto_a)

2013/6/15 第58回Ruby/Rails勉強会@関西

Page 2: 20130615 組込みの仕事場でRubyを使う

最初におことわり

残念ながら組み込みRuby (Rite, mruby)

の話ではありません

Page 3: 20130615 組込みの仕事場でRubyを使う

最初におことわり

Rubyライトユーザな組込みプログラマがRubyを細々と使う、ライトユーザのライトユーザによるライトユーザのためのお話です

Page 4: 20130615 組込みの仕事場でRubyを使う

しずと (@shizuto_a)

Rubyライトユーザ歴10年ぐらい

仕事は組込みソフト(車載機器)

言語好き(仏、亜、洪、etc)

Page 5: 20130615 組込みの仕事場でRubyを使う

組込みソフトの仕事場

Page 6: 20130615 組込みの仕事場でRubyを使う

組込みソフトの仕事場

基本はC言語で開発する

Page 7: 20130615 組込みの仕事場でRubyを使う

組込みソフトの仕事場

基本はC言語で開発する

ソフトとしては古い技術で生きている

Page 8: 20130615 組込みの仕事場でRubyを使う

組込みソフトの仕事場

基本はC言語で開発する

ソフトとしては古い技術で生きている

RubyistsにはつまらないライトなRubyistsが活躍できる!

Page 9: 20130615 組込みの仕事場でRubyを使う

Ruby勉強会@関西 参加者

Rubyistの輪

RubyistsPerl Mongers

Pythonisti

Page 10: 20130615 組込みの仕事場でRubyを使う

同僚(組込みソフト)

Rubyistの輪

RubyistsPerl Mongers

Pythonisti

Page 11: 20130615 組込みの仕事場でRubyを使う

同僚(組込みソフト)

Rubyistの輪

RubyistsPerl Mongers

Pythonisti

Page 12: 20130615 組込みの仕事場でRubyを使う

同僚(組込みソフト)

Rubyistの輪

Rubyists

Perl Mongers

PythonistiできればRubyの輪を広げたい

Page 13: 20130615 組込みの仕事場でRubyを使う

組み込み (車載)の環境

1.品質(信頼性)重視

2.製造コスト重視

3.潤沢ではない環境

4.慎重なプロセス管理

Page 14: 20130615 組込みの仕事場でRubyを使う

1. 品質(信頼性)重視

車なので不具合流出は事故に直結

バグ一つが信用問題

事故の前でもリコールすれば大損失

Page 15: 20130615 組込みの仕事場でRubyを使う

2. 製造コスト重視

製品は車の部品

ソフトの値段よりハードの値段

Page 16: 20130615 組込みの仕事場でRubyを使う

3. 潤沢ではない環境

CPU : 20~80MHz

RAM : 64KB~256KB

ほぼC言語(一部アセンブラ)

Page 17: 20130615 組込みの仕事場でRubyを使う

4. 慎重なプロセス管理

ウォーターフォール

設計レビュー、ソースレビュー

C1カバレッジの単体検査

検査、検査、検査

品質とは「変えない」こと

Page 18: 20130615 組込みの仕事場でRubyを使う

なので

「アジャイルでRuby使ってやろうぜ」と気楽には言えない

スクリプト言語が好きな人もいるけど嫌いな人もいる

Page 19: 20130615 組込みの仕事場でRubyを使う

Why (not) Arabic Ruby?

Page 20: 20130615 組込みの仕事場でRubyを使う

Why not Ruby?

Rubyistなら仕事でもRuby使いたいよね

Page 21: 20130615 組込みの仕事場でRubyを使う

Why Ruby?

Enjoy Programmingしたいから。(C言語も楽しいけど)

Page 22: 20130615 組込みの仕事場でRubyを使う

Rubyを使うために

何にRubyを使おうか?

抵抗なく受け入れられるのは?

できれば喜んでもらえるのは?

Page 23: 20130615 組込みの仕事場でRubyを使う

Where can we enjoy Ruby?

Page 24: 20130615 組込みの仕事場でRubyを使う

どこで使うか(夢)

Page 25: 20130615 組込みの仕事場でRubyを使う

どこで使うか(夢)

Rubyで制御プログラムを書く

Page 26: 20130615 組込みの仕事場でRubyを使う

どこで使うか(夢)

Rubyで制御プログラムを書く

Rubyでプログラムを書いてCに変換

Page 27: 20130615 組込みの仕事場でRubyを使う

どこで使うか(夢)

Rubyで制御プログラムを書く

Rubyでプログラムを書いてCに変換

Cで書いたものをRubyを使って検証

Page 28: 20130615 組込みの仕事場でRubyを使う

どこで使うか(夢)

Rubyで制御プログラムを書く

Rubyでプログラムを書いてCに変換

Cで書いたものをRubyを使って検証

プロトタイプをRubyで作る

Page 29: 20130615 組込みの仕事場でRubyを使う

どこで使うか(夢)

Rubyで制御プログラムを書く

Rubyでプログラムを書いてCに変換

Cで書いたものをRubyを使って検証

プロトタイプをRubyで作る夢は大事だけど、まだもう少し先

Page 30: 20130615 組込みの仕事場でRubyを使う

どこで使うか(現実)

Page 31: 20130615 組込みの仕事場でRubyを使う

どこで使うか(現実)

電卓代わりにirb (pry)を使う

Page 32: 20130615 組込みの仕事場でRubyを使う

どこで使うか(現実)

電卓代わりにirb (pry)を使う

補助的なプチツールを作る

Page 33: 20130615 組込みの仕事場でRubyを使う

どこで使うか(現実)

電卓代わりにirb (pry)を使う

補助的なプチツールを作る

設定ファイルやテーブルの生成を行う

Page 34: 20130615 組込みの仕事場でRubyを使う

どこで使うか(現実)

電卓代わりにirb (pry)を使う

補助的なプチツールを作る

設定ファイルやテーブルの生成を行う

作ったものを他人に使ってもらう

Page 35: 20130615 組込みの仕事場でRubyを使う

Rubyの立ち位置

Rubyを主役級には(まだ)しにくい

脇役、エキストラとして活躍しよう

Rubyの輪を徐々に広げよう

Page 36: 20130615 組込みの仕事場でRubyを使う

おことわり

Page 37: 20130615 組込みの仕事場でRubyを使う

おことわり

まだRubyの輪を広げられてはいません

Page 38: 20130615 組込みの仕事場でRubyを使う

Gems, Tools, OrangeJuices

Page 39: 20130615 組込みの仕事場でRubyを使う

irb / pry

高性能電卓としても使えるインタラクティブ環境

irbは標準添付、pryはgem install pry

数値の確認などで使っています

Page 40: 20130615 組込みの仕事場でRubyを使う

例題(irb / pry)

(x / 1.8)を整数演算だけで精度良く計算するには?

C言語で長くても3行以内

浮動小数点と除算使用不可

xの範囲は0~65535等、制限あり

Page 41: 20130615 組込みの仕事場でRubyを使う

正規表現

テンプレートや静的コード検証、検査ツールのログ解析などテキスト処理ができると嬉しい場面は多い

Page 42: 20130615 組込みの仕事場でRubyを使う

例題 (正規表現)

Cソースの中から32文字以上の変数名をリストアップしよう

Page 43: 20130615 組込みの仕事場でRubyを使う

ocra

スクリプトをWindowsアプリにする

Rubyistでない人に作ったものを使ってもらうための便利なアイテム

Ruby1.8系ではExerb

Page 44: 20130615 組込みの仕事場でRubyを使う

例題 (ocra)

作ったツールを ocra にかけてみよう

引数なしで実行したときにrequireを全て通るなど、多少制限がある

Page 45: 20130615 組込みの仕事場でRubyを使う

eRuby

テンプレートの中にRubyのコードを埋め込んで展開する <% rubycode %>

設定ファイルやテーブルを生成するのに便利

Rubyist以外も編集できるようにする

Page 46: 20130615 組込みの仕事場でRubyを使う

例題 (eRuby)

“変数1”, type=char, range=0...20

“変数2”, type=long, range=-1000..1000

Excelの変数詳細リストから上記のような設定ファイルを生成しよう

Page 47: 20130615 組込みの仕事場でRubyを使う

RSpec / Test::Unit

Test::Unit は標準、RSpecは gem install

rspec で。何を使うかは好みで。

プチツールならテストケースを説明できれば納得してもらえることも多い

Page 48: 20130615 組込みの仕事場でRubyを使う

例題 (RSpec / Test::Unit)

ひがきさんの初心者レッスンに期待!

「ツール作るのはいいけど、それで不具合出したりしないよね? どんなパターンで試したの?」に先に備えよう

Page 49: 20130615 組込みの仕事場でRubyを使う

黒魔術は控えめに

メタプログラミングは面白いけど使いどころは慎重に考えよう。

DSLを作るのはいいかも。でも時間を取られすぎないように気をつけよう。

Page 50: 20130615 組込みの仕事場でRubyを使う

Key Points

Page 51: 20130615 組込みの仕事場でRubyを使う

まずは脇役に徹する

主役(のルールや風土)を尊重する

Page 52: 20130615 組込みの仕事場でRubyを使う

まずは脇役に徹する

主役(のルールや風土)を尊重する

プロダクトの品質のことを常に考える(納得いく答えを用意しておく)

Page 53: 20130615 組込みの仕事場でRubyを使う

まずは脇役に徹する

主役(のルールや風土)を尊重する

プロダクトの品質のことを常に考える(納得いく答えを用意しておく)

いつか主役になれる日が来るかも…

Page 54: 20130615 組込みの仕事場でRubyを使う

Rubyは強力な武器

強力な武器を使うときには責任が伴う

Page 55: 20130615 組込みの仕事場でRubyを使う

Rubyは強力な武器

強力な武器を使うときには責任が伴う

先に組込ソフトでちゃんと信頼を得ておくのも大事です

Page 56: 20130615 組込みの仕事場でRubyを使う

Rubyは強力な武器

強力な武器を使うときには責任が伴う

先に組込ソフトでちゃんと信頼を得ておくのも大事です

自分の置かれた環境に注意して使おう

Page 57: 20130615 組込みの仕事場でRubyを使う

Let’s Enjoy Programming!