Your SlideShare is downloading. ×
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Ruby紹介
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Ruby紹介

2,475

Published on

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,475
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
14
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Ruby紹介 とみたまさひろ 2010-08-21 Ruby紹介 Powered by Rabbit 0.6.5
  • 2. 自己紹介 ✓ とみた まさひろ ✓ プログラマー ✓ mailto:tommy@tmtm.org ✓ http://d.hatena.ne.jp/tmtms ✓ http://twitter.com/tmtms 1/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 3. 自己紹介 ✓ 日本Rubyの会 ✓ 日本MySQLユーザ会 ✓ Ruby/MySQL ライブラリ ✓ Ruby歴, MySQL歴 十数年 2/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 4. 自己紹介 こんな本書きました 3/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 5. NSEG #1 で 4/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 6. NSEG #3 で 5/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 7. 今回は Rubyの紹 Ruby紹介 介 6/55 Powered by Rabbit 0.6.5
  • 8. Ruby ✓ http://www.ruby-lang.org ✓ オブジェクト指向スクリプト言語 ✓ まつもとゆきひろ さん ✓ ひろゆき じゃないよ 7/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 9. Matz 8/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 10. 歴史 ✓ Ruby1.8 は 1.x の最終形 ✓ Ruby1.9 は 2.0 に向けた助走 9/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 11. バージョン ✓ x.y.z-pNNN の形式 ✓ 最新: 1.8.7-p302, 1.9.2-p0 ✓ y が奇数のは開発版 (1.9を除く) ✓ z の違いでも互換がないことも ✓ pNNN はパッチリリース ✓ 1.9 は 2.0 に向けて大幅な変更 10/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 12. 特徴 Ruby紹介 11/55 Powered by Rabbit 0.6.5
  • 13. 楽しい 12/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 14. たのしいRuby 13/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 15. プログラマ にとって嬉 Ruby紹介 しい 14/55 Powered by Rabbit 0.6.5
  • 16. 余計なこと は考えたく ない Ruby紹介 15/55 Powered by Rabbit 0.6.5
  • 17. ファイルコピー require 'fileutils' FileUtils.copy 'srcfile', 'destfile' 16/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 18. TCPサーバー require 'socket' Socket.tcp_server_loop(9999) do |sock| Thread.new sock do |s| s.each do |line| puts line end end end 17/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 19. HTTP GET require 'open-uri' open('http://nseg.jp').read 18/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 20. デーモン Process.daemon ✓ 制御端末を切り離し ✓ バックグラウンド化 ✓ カレントディレクトリを / に移動 ✓ 標準入出力,エラー出力を /dev/ null にリダイレクト 19/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 21. p 人間にわかりやすい形で表示 p Time.now #=> 2010-08-21 01:20:23 +0900 p Array.new #=> [] デバッグに便利 20/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 22. 言語とし ての特徴 21/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 23. 初めてのRuby ただし他のオブジェクト指向言語修 得者向け 22/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 24. 型がない 23/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 25. 変数に型がない ✓ どんなオブジェクトでも代入可能 ✓ 自分が何かはオブジェクト自身が 知っている a = 123 a.class #=> Fixnum a = 'abc' a.class #=> String 24/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 26. 代入というより… オブジェクトに貼ったラベル a = 'abc' b = a b.concat '123' a #=> "abc123" a.object_id == b.object_id 25/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 27. 読みやすい ✓ Pで始まる言語に比べて ✓ 主観です 26/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 28. 変数のスコープ 1文字目 スコープ [a-z_] メソッドローカル @ インスタンス内 @@ クラス内 $ グローバル [A-Z] 定数 27/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 29. オープ ンクラス Ruby紹介 28/55 Powered by Rabbit 0.6.5
  • 30. 定義済みのクラスを変更可能 # Hoge クラス定義 class Hoge def abc end end # xyz メソッド追加 class Hoge def xyz end end 29/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 31. すべてがオ ブジェクト 30/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 32. 数値もオブジェクト class Numeric def neg -self end end 123.neg #=> -123 31/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 33. Rails 界隈では require 'active_support/all' 3.days.ago #=> 2010-08-18 10:38:13 +0900 これは便利! ...っていうかキモい... 32/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 34. true, false, nil もオブジェクト true.class #=> TrueClass false.class #=> FalseClass nil.class #=> NilClass 33/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 35. クラスもオブジェクト class Hoge end Hoge.class #=> Class a = Hoge # 変数への代入も可 34/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 36. 演算子もメソッド 123+456 # これは実は 123.+(456) 35/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 37. 再定義も可 class Fixnum def +(a) self * a end end 123+456 #=> 56088 36/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 38. 特異メソッド 特定のオブジェクトだけメソッド追加 obj = Hoge.new def obj.hoge ... end 37/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 39. モジュール オブジェクトを持たないクラスのような もの 名前空間をわけたり module MyProject class Hoge end end 38/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 40. モジュール メソッド定義しておいて、他のクラスに 組み込んだり(Mix-in) module Abc def xyz ... end end class Hoge include Abc # xyz メソッドが使えるようになる end 39/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 41. ブロッ Ruby紹介 ク 40/55 Powered by Rabbit 0.6.5
  • 42. ブロック def hoge(arg) yield arg*2 end def hoge(arg, &block) block.call arg*2 end hoge 123 do |n| ... end hoge(123){|n| ... } 41/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 43. 後処理 File.open 'aaa.txt' do |f| f.read end ブロックを抜けると自動的にファイルが クローズされる 42/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 44. イテレータ # 10回繰り返し 10.times{|i| ... } # 配列の要素を順番にブロックに渡す [1, 2, 3].each do |x| x * 2 end 43/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 45. Enumerable each メソッドさえあれば Enumerable モジュールを include して [1,2,3].map{|x| x*2} #=> [2,4,6] [1,2,3].max #=> 3 [3,2,1].sort #=> [1,2,3] [1,2,3].select{|x| x.odd?} #=> [1,3] 44/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 46. Ruby Ruby紹介 1.9 45/55 Powered by Rabbit 0.6.5
  • 47. 1.9.2 8/19 リ Ruby紹介 リース! 46/55 Powered by Rabbit 0.6.5
  • 48. 1.8 と結構 互換あり 47/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 49. VM ✓ バイトコード ✓ 高速化 ✓ 数倍〜数十倍? 48/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 50. 文字列 ✓ 1.8 までは文字列はただのバイト 列 ✓ 文字単位の処理が可能 ✓ 文字列オブジェクトが文字コード を持つ ✓ Code Set Independent 49/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 51. Encoding ✓ リテラル文字列は magic comment に依存 # -*- coding: utf-8 -*- s = "あいう" s.encoding #=> #<Encoding:UTF-8> s2 = s.encode "cp932" s2.encoding #=> #<Encoding:Windows-31J> 50/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 52. IO は自動変換 f = File.open('a.txt', 'r+:shift_jis:euc-jp') # SJIS ファイルから読んで EUC 文字列を生成する f.read # 文字列を SJIS に変換して書き込む f.write 'xxx' 51/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 53. 2038年問題 # Ruby 1.8 Time.at 2147483647 #=> Tue Jan 19 12:14:07 +0900 2038 Time.at 2147483648 # bignum too big to convert into `long' (RangeError) # Ruby 1.9 Time.at 2147483648 #=> 2038-01-19 12:14:08 +0900 Time.at 9999999999 #=> 2286-11-21 02:46:39 +0900 Time.at 99999999999 #=> 5138-11-16 18:46:39 +0900 52/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 54. その他便 利な機能 Ruby紹介 多数 53/55 Powered by Rabbit 0.6.5
  • 55. これから使 うなら 1.9 54/55 Ruby紹介 Powered by Rabbit 0.6.5
  • 56. ご清聴あり がとうござ いました Ruby紹介 55/55 Powered by Rabbit 0.6.5

×