Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ruby For Work

1,814 views

Published on

社内勉強会発表資料
Rubyを使った仕事の工夫について
テンプレートエンジンERBを使って、テンプレートとパラメータを元にファイルをアウトプット

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Ruby For Work

  1. 1. Ruby for work <ul><li>2008/02/19 小芝敏明 </li></ul>
  2. 2. 重要な事 <ul><li>つまらない作業を工夫して! </li></ul>
  3. 3. St.Valentine'sDay2008 <ul><li>テスト実施中 </li></ul><ul><ul><li>入力ファイルが大量に必要 </li></ul></ul><ul><ul><ul><li>内容:Javaクラス </li></ul></ul></ul><ul><ul><ul><li>ファイルごとに異なるもの </li></ul></ul></ul><ul><ul><ul><ul><li>名前 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>戻り値 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>パラメータ </li></ul></ul></ul></ul>
  4. 4. St.Valentine'sDay2008 <ul><li>  9 Line Script   </li></ul>
  5. 5. なぜRuby? <ul><li>簡単! </li></ul><ul><li>早い! </li></ul><ul><li>手軽! </li></ul><ul><li>強力! </li></ul>
  6. 6. 簡単! <ul><li>なんでもオブジェクト </li></ul><ul><ul><li>プリミティブは存在しない </li></ul></ul><ul><ul><li>分かりやすい </li></ul></ul>
  7. 7. 簡単! <ul><li>なんでもオブジェクト </li></ul><ul><ul><li>20 </li></ul></ul><ul><ul><ul><li>Fixnumオブジェクト </li></ul></ul></ul><ul><ul><li>10.1 </li></ul></ul><ul><ul><ul><li>Floatオブジェクト </li></ul></ul></ul><ul><ul><li>&quot;hoge&quot; </li></ul></ul><ul><ul><ul><li>Stringオブジェクト </li></ul></ul></ul>
  8. 8. 早い! <ul><li>インタプリタ型 </li></ul><ul><ul><li>リアルタイムに解釈 </li></ul></ul><ul><ul><li>すぐに試せる </li></ul></ul>
  9. 9. 早い! <ul><li>インタプリタ型 </li></ul><ul><ul><li>str = &quot;3.times {p 'hello world'}&quot; </li></ul></ul><ul><ul><li>eval(str) </li></ul></ul>
  10. 10. 手軽! <ul><li>動的型付 </li></ul><ul><ul><li>Duck typing </li></ul></ul><ul><ul><li>継承意識不要 </li></ul></ul>
  11. 11. 手軽! <ul><li>動的型付 </li></ul><ul><ul><li>def printItems( param ) </li></ul></ul><ul><ul><li>param.each {|item| p item } </li></ul></ul><ul><ul><li>end </li></ul></ul><ul><ul><li>printItems Hash[&quot;1st&quot;,100,&quot;2nd&quot;,200] </li></ul></ul><ul><ul><li>printItems Array[1,2,3,4,5] </li></ul></ul>
  12. 12. 強力! <ul><li>使える標準ライブラリ </li></ul><ul><ul><li>YAML </li></ul></ul><ul><ul><ul><li>構造化データをテキスト表現 </li></ul></ul></ul><ul><ul><ul><li>非マークアップ言語 </li></ul></ul></ul><ul><ul><li>ERB </li></ul></ul><ul><ul><ul><li>文書埋め込みRubyスクリプト </li></ul></ul></ul><ul><ul><ul><li>JSPと同様の考え方 </li></ul></ul></ul>
  13. 13. 強力! <ul><li>YAML </li></ul><ul><ul><li>- </li></ul></ul><ul><ul><li>in: template.java.erb </li></ul></ul><ul><ul><li>out: Output1.java </li></ul></ul><ul><ul><li>type: java.lang.Object </li></ul></ul><ul><ul><li>name: Object </li></ul></ul><ul><ul><li>- </li></ul></ul><ul><ul><li>in: template.java.erb </li></ul></ul><ul><ul><li>( 以下略) </li></ul></ul>
  14. 14. 強力! <ul><li>ERB </li></ul><ul><ul><li>class TSource <%= yaml['name'] %> { </li></ul></ul><ul><ul><li>public <%= yaml['type'] %> </li></ul></ul><ul><ul><li>execute <%= yaml['name'] %> </li></ul></ul><ul><ul><li>( <%= yaml['type'] %> param){ </li></ul></ul><ul><ul><li>return param; </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>} </li></ul></ul>
  15. 15. 9Line Script <ul><li>require 'ERB' </li></ul><ul><li>require 'YAML' </li></ul><ul><li>YAML.load( ARGF.read ).each do |yaml| </li></ul><ul><li>File.open(yaml['in']) {|infile| </li></ul><ul><li>File.open(yaml['out'],'w' ) {|outfile| </li></ul><ul><li>outfile.write( ERB.new( infile.read ).result(binding) ) </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>end </li></ul>
  16. 16. 応用 <ul><li>テスト顧客データ作成 </li></ul><ul><ul><li>元データをERBで展開 </li></ul></ul><ul><ul><ul><li><% user_count.times do |num| %> </li></ul></ul></ul><ul><ul><ul><li>user <%= num %> : </li></ul></ul></ul><ul><ul><ul><li>id: <%= num %> </li></ul></ul></ul><ul><ul><ul><li>name: テストユーザ <%= num %> </li></ul></ul></ul><ul><ul><ul><li><% end %> </li></ul></ul></ul>
  17. 17. 応用 <ul><li>DDL生成 </li></ul><ul><ul><li>属性・桁数を外部で定義 </li></ul></ul><ul><ul><ul><li>create table tEmployee ( </li></ul></ul></ul><ul><ul><ul><li>id <%= id_type %> primary key, </li></ul></ul></ul><ul><ul><ul><li>name <%= human_name_type %> , </li></ul></ul></ul><ul><ul><ul><li>age <%= age_type> , </li></ul></ul></ul><ul><ul><ul><li>salary <%= money_type %> </li></ul></ul></ul><ul><ul><ul><li>) </li></ul></ul></ul>
  18. 18. まとめ <ul><li>工夫して 時間 を得る </li></ul><ul><li>工夫して ノウハウ を得る </li></ul>
  19. 19. 終わり <ul><ul><li>ご清聴ありがとうございました </li></ul></ul>

×