Your SlideShare is downloading. ×
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,462
views

Published on


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

No Downloads
Views
Total Views
2,462
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

×