20130615 組込みの仕事場でrubyを使う
DESCRIPTION
第58回 Ruby/Rails勉強会@関西 でお話しした、ライトユーザなRubyistの日常のお話です。TRANSCRIPT
組込みの仕事場でRubyを使うしずと (@shizuto_a)
2013/6/15 第58回Ruby/Rails勉強会@関西
最初におことわり
残念ながら組み込みRuby (Rite, mruby)
の話ではありません
最初におことわり
Rubyライトユーザな組込みプログラマがRubyを細々と使う、ライトユーザのライトユーザによるライトユーザのためのお話です
しずと (@shizuto_a)
Rubyライトユーザ歴10年ぐらい
仕事は組込みソフト(車載機器)
言語好き(仏、亜、洪、etc)
組込みソフトの仕事場
組込みソフトの仕事場
基本はC言語で開発する
組込みソフトの仕事場
基本はC言語で開発する
ソフトとしては古い技術で生きている
組込みソフトの仕事場
基本はC言語で開発する
ソフトとしては古い技術で生きている
RubyistsにはつまらないライトなRubyistsが活躍できる!
Ruby勉強会@関西 参加者
Rubyistの輪
RubyistsPerl Mongers
Pythonisti
同僚(組込みソフト)
Rubyistの輪
RubyistsPerl Mongers
Pythonisti
同僚(組込みソフト)
Rubyistの輪
RubyistsPerl Mongers
Pythonisti
同僚(組込みソフト)
Rubyistの輪
Rubyists
Perl Mongers
PythonistiできればRubyの輪を広げたい
組み込み (車載)の環境
1.品質(信頼性)重視
2.製造コスト重視
3.潤沢ではない環境
4.慎重なプロセス管理
1. 品質(信頼性)重視
車なので不具合流出は事故に直結
バグ一つが信用問題
事故の前でもリコールすれば大損失
2. 製造コスト重視
製品は車の部品
ソフトの値段よりハードの値段
3. 潤沢ではない環境
CPU : 20~80MHz
RAM : 64KB~256KB
ほぼC言語(一部アセンブラ)
4. 慎重なプロセス管理
ウォーターフォール
設計レビュー、ソースレビュー
C1カバレッジの単体検査
検査、検査、検査
品質とは「変えない」こと
なので
「アジャイルでRuby使ってやろうぜ」と気楽には言えない
スクリプト言語が好きな人もいるけど嫌いな人もいる
Why (not) Arabic Ruby?
Why not Ruby?
Rubyistなら仕事でもRuby使いたいよね
Why Ruby?
Enjoy Programmingしたいから。(C言語も楽しいけど)
Rubyを使うために
何にRubyを使おうか?
抵抗なく受け入れられるのは?
できれば喜んでもらえるのは?
Where can we enjoy Ruby?
どこで使うか(夢)
どこで使うか(夢)
Rubyで制御プログラムを書く
どこで使うか(夢)
Rubyで制御プログラムを書く
Rubyでプログラムを書いてCに変換
どこで使うか(夢)
Rubyで制御プログラムを書く
Rubyでプログラムを書いてCに変換
Cで書いたものをRubyを使って検証
どこで使うか(夢)
Rubyで制御プログラムを書く
Rubyでプログラムを書いてCに変換
Cで書いたものをRubyを使って検証
プロトタイプをRubyで作る
どこで使うか(夢)
Rubyで制御プログラムを書く
Rubyでプログラムを書いてCに変換
Cで書いたものをRubyを使って検証
プロトタイプをRubyで作る夢は大事だけど、まだもう少し先
どこで使うか(現実)
どこで使うか(現実)
電卓代わりにirb (pry)を使う
どこで使うか(現実)
電卓代わりにirb (pry)を使う
補助的なプチツールを作る
どこで使うか(現実)
電卓代わりにirb (pry)を使う
補助的なプチツールを作る
設定ファイルやテーブルの生成を行う
どこで使うか(現実)
電卓代わりにirb (pry)を使う
補助的なプチツールを作る
設定ファイルやテーブルの生成を行う
作ったものを他人に使ってもらう
Rubyの立ち位置
Rubyを主役級には(まだ)しにくい
脇役、エキストラとして活躍しよう
Rubyの輪を徐々に広げよう
おことわり
おことわり
まだRubyの輪を広げられてはいません
Gems, Tools, OrangeJuices
irb / pry
高性能電卓としても使えるインタラクティブ環境
irbは標準添付、pryはgem install pry
数値の確認などで使っています
例題(irb / pry)
(x / 1.8)を整数演算だけで精度良く計算するには?
C言語で長くても3行以内
浮動小数点と除算使用不可
xの範囲は0~65535等、制限あり
正規表現
テンプレートや静的コード検証、検査ツールのログ解析などテキスト処理ができると嬉しい場面は多い
例題 (正規表現)
Cソースの中から32文字以上の変数名をリストアップしよう
ocra
スクリプトをWindowsアプリにする
Rubyistでない人に作ったものを使ってもらうための便利なアイテム
Ruby1.8系ではExerb
例題 (ocra)
作ったツールを ocra にかけてみよう
引数なしで実行したときにrequireを全て通るなど、多少制限がある
eRuby
テンプレートの中にRubyのコードを埋め込んで展開する <% rubycode %>
設定ファイルやテーブルを生成するのに便利
Rubyist以外も編集できるようにする
例題 (eRuby)
“変数1”, type=char, range=0...20
“変数2”, type=long, range=-1000..1000
Excelの変数詳細リストから上記のような設定ファイルを生成しよう
RSpec / Test::Unit
Test::Unit は標準、RSpecは gem install
rspec で。何を使うかは好みで。
プチツールならテストケースを説明できれば納得してもらえることも多い
例題 (RSpec / Test::Unit)
ひがきさんの初心者レッスンに期待!
「ツール作るのはいいけど、それで不具合出したりしないよね? どんなパターンで試したの?」に先に備えよう
黒魔術は控えめに
メタプログラミングは面白いけど使いどころは慎重に考えよう。
DSLを作るのはいいかも。でも時間を取られすぎないように気をつけよう。
Key Points
まずは脇役に徹する
主役(のルールや風土)を尊重する
まずは脇役に徹する
主役(のルールや風土)を尊重する
プロダクトの品質のことを常に考える(納得いく答えを用意しておく)
まずは脇役に徹する
主役(のルールや風土)を尊重する
プロダクトの品質のことを常に考える(納得いく答えを用意しておく)
いつか主役になれる日が来るかも…
Rubyは強力な武器
強力な武器を使うときには責任が伴う
Rubyは強力な武器
強力な武器を使うときには責任が伴う
先に組込ソフトでちゃんと信頼を得ておくのも大事です
Rubyは強力な武器
強力な武器を使うときには責任が伴う
先に組込ソフトでちゃんと信頼を得ておくのも大事です
自分の置かれた環境に注意して使おう
Let’s Enjoy Programming!