Ruby For Work

1,724 views
1,653 views

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,724
On SlideShare
0
From Embeds
0
Number of Embeds
31
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 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>

    ×