Ruby紹介
Upcoming SlideShare
Loading in...5
×
 

Ruby紹介

on

  • 2,841 views

 

Statistics

Views

Total Views
2,841
Views on SlideShare
2,718
Embed Views
123

Actions

Likes
3
Downloads
13
Comments
0

4 Embeds 123

http://d.hatena.ne.jp 61
http://tmtms.hatenablog.com 55
http://dev.localhost 5
http://dots.web01.ryukyu-i-dev.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Ruby紹介 Ruby紹介 Presentation Transcript

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