第1部「一時間で覚えるruby」

3,023 views

Published on

Published in: Technology
1 Comment
3 Likes
Statistics
Notes
  • せっかくなので、irb 代替の pry にも触れるとよいかも
    gem install pry --no-rdoc --no-ri
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
3,023
On SlideShare
0
From Embeds
0
Number of Embeds
114
Actions
Shares
0
Downloads
28
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

第1部「一時間で覚えるruby」

  1. 1. 第1部 「一時間で覚える Ruby 」 第1回社内勉強会 「あわててはじめるRuby on Rails」
  2. 2. Rubyとは <ul><li>スクリプト言語 </li></ul><ul><ul><li>インタプリタとして動作する </li></ul></ul><ul><li>オブジェクト指向 </li></ul><ul><ul><li>数値、文字列などすべてがオブジェクト </li></ul></ul><ul><ul><ul><li>&quot;string&quot;.length => 6 </li></ul></ul></ul><ul><li>まつもとゆきひろ (matz) が開発 </li></ul><ul><ul><li>数少ない世界的に使われる国産プログラミング言語 </li></ul></ul>
  3. 3. 今日の目標 <ul><li>Ruby 関係のドキュメントを読めるようになる </li></ul><ul><ul><li>「初めての Ruby 」 </li></ul></ul><ul><ul><li>リファレンスマニュアル </li></ul></ul><ul><li>Ruby の雰囲気をつかむ </li></ul><ul><li>PHP との違いを感じる </li></ul><ul><ul><li>PHP は怖い言語です </li></ul></ul>
  4. 4. 環境の準備 <ul><li>● InstantRailsWiki: Instant Rails </li></ul><ul><ul><li>http://instantrails.rubyforge.org/wiki/wiki.pl </li></ul></ul><ul><li>● Ruby on Rails 究極指南:第 1 回 Instant Rails で始める Windows 環境の Rails </li></ul><ul><ul><li>http://www.itmedia.co.jp/enterprise/articles/0703/05/news014_2.html </li></ul></ul><ul><li>解凍したディレクトリをスペースが入らないパスに置く </li></ul><ul><ul><li>○ : C:ApzInstantRails-2.0-win </li></ul></ul><ul><ul><li>× : C: Program Files InstantRails-2.0-win </li></ul></ul>
  5. 5. 教材の準備 <ul><li>● ドキュメント </li></ul><ul><ul><li>http://www.ruby-lang.org/ja/documentation/ </li></ul></ul><ul><ul><ul><li>Ruby リファレンスマニュアル刷新計画 chm 版 1.8.6 用 (zip 形式 ) </li></ul></ul></ul><ul><li>● 一時間で覚える Ruby ― MAYAH.JP </li></ul><ul><ul><li>http://mayah.jp/article/2004/ruby </li></ul></ul><ul><li>● Ruby コーディング規約 </li></ul><ul><ul><li>http://shugo.net/ruby-codeconv/codeconv.html </li></ul></ul><ul><li>● Book: 初めての Ruby </li></ul><ul><ul><li>http://www.oreilly.co.jp/books/9784873113678/ </li></ul></ul>
  6. 6. お約束のHello, World! <ul><li>ruby </li></ul><ul><ul><li>Ctrl+C で EOF を送ると評価される </li></ul></ul><ul><li>irb </li></ul><ul><ul><li>1行ごとに評価される </li></ul></ul><ul><ul><li>quit で終了 </li></ul></ul><ul><li>動かしてみる </li></ul><ul><ul><li>Hello, World! </li></ul></ul><ul><ul><li>p と puts を覚える </li></ul></ul><ul><ul><li>文末の区切りは改行 </li></ul></ul><ul><ul><li>1行に複数式を書くときはセミコロンで区切る </li></ul></ul>
  7. 7. 型の扱いは意外と厳しい <ul><li>結果を予想してみよう </li></ul><ul><li>PHPではどうだろう </li></ul>puts &quot;15&quot; + 3 puts 15 + 3 puts &quot;15&quot;.to_i + 3 puts &quot;15&quot; + &quot;hoge&quot; echo 15 + 3 ; echo 15 + '3' ; echo 15 + 'hoge' ;
  8. 8. 配列 <ul><li>動かしてみる </li></ul><ul><ul><li>配列の定義 </li></ul></ul><ul><ul><li>インデックスでアクセス </li></ul></ul><ul><ul><li>逆順のアクセス </li></ul></ul><ul><ul><li>範囲外はnilが返る </li></ul></ul>s = [1, 2, &quot;hogepiyo&quot;] s[1] s[-1] s[4]
  9. 9. ハッシュ <ul><li>PHPでおなじみ </li></ul><ul><li>順番は保持されないので注意 </li></ul><ul><li>キーの型も区別する </li></ul>h = {1 =>&quot;hoge&quot;, &quot;2&quot; => &quot;piyo&quot;, &quot;foo&quot; => &quot;bar&quot;} print h[1] ; puts h['1']
  10. 10. 論理値の大きなワナ <ul><li>0(integer)と’0’(string)はtrue </li></ul><ul><ul><li>どういうこと? </li></ul></ul>hash_test = { &quot;integer_0&quot; => 0, &quot;string_0&quot; => &quot;0&quot;, &quot;boolean_false&quot; => false, &quot;nil&quot; => nil } hash_test.each do |key,value| print key + &quot; : &quot; if value puts &quot;true&quot; else puts &quot;false&quot; end end
  11. 11. ブロックつきメソッド <ul><li>{ と } / do と end に囲まれた部分はブロック </li></ul><ul><ul><li>Rubyっぽい文法はまずここからなので慣れよう </li></ul></ul><ul><ul><li>ブロック内部をメソッドに渡している </li></ul></ul>10.times { |n| puts n } hash = { &quot;hoge&quot; => &quot;piyo&quot;, &quot;foo&quot; => &quot;bar&quot; } hash.each do |key, value| puts &quot;key:#{key}=>value:#{value}&quot; end
  12. 12. メソッドの定義 <ul><li>メソッドを定義できないと生活に困る </li></ul># メソッド定義、引数を取る def add(x,y) # 最後に評価した値が返る x + y end def sub(x,y) # return つけたほうが # わかりやすい return x - y end # 引数を受け取り intger に a = ARGV[0].to_i b = ARGV[1].to_i # << と + で文字列を連結 puts &quot;add:&quot; << add(a,b).to_s puts &quot;sub:&quot; + sub(a,b).to_s
  13. 13. 文字列はmutable <ul><li>PHP / Javaはimmutable </li></ul># << と + の違い a = &quot;foo&quot; ; b = &quot;bar&quot; c = &quot;hoge&quot; ; d = &quot;piyo&quot; p a + b # a と b を連結した新しい文字列が返る p a p b p c << d # c に d を破壊的に連結する p c p d
  14. 14. クラス <ul><li>ソースコード参照 </li></ul><ul><li>他のオブジェクト指向言語との違いを 考えながら読むと理解しやすい </li></ul><ul><ul><li>getter / setterをattr_****でまとめて定義 </li></ul></ul><ul><ul><li>別ブロックで同一クラスの定義を行える </li></ul></ul><ul><ul><li>実行時に継承元クラスを決められる </li></ul></ul><ul><ul><li>オーバーロードできない / オーバーライドはできる </li></ul></ul>
  15. 15. 正規表現 <ul><li>生活必需品 </li></ul># 正規表現 heystack = &quot;Tie your mother down&quot; # マッチした位置 p heystack =~ /your (w+) down/ # 括弧でくくった部分を得られる p $1 # 文字列の置き換え p heystack.sub(/#{$1}/, &quot;sister&quot;)
  16. 16. ファイルの読み書き <ul><li>おおむね予想通りの書き方 </li></ul><ul><li>トランザクションブロックが便利 </li></ul>File::open(ARGV[0], 'r') { |read_handle| File::open(ARGV[1], 'a') { |write_handle| while line = read_handle.gets if line =~ /^s*#.*/ write_handle.print line end end } }
  17. 17. 以上で <ul><li>「一時間で覚えるRuby」の内容はほぼクリア </li></ul><ul><ul><li>「初めてRuby」が読みやすくなる </li></ul></ul><ul><li>PHPではうやむやにできる箇所を意識しよう </li></ul><ul><ul><li>「型」「ファイルハンドル」など </li></ul></ul><ul><li>実際に手を動かそう </li></ul><ul><ul><li>おうちで試してみてね </li></ul></ul>
  18. 18. おしまい <ul><li>ご清聴ありがとうございました </li></ul>

×