Recommended
PDF
PDF
PDF
PPTX
PPTX
Introduction to GraalVM and Native Image
PDF
PDF
ng-japan 2015 TypeScript+AngularJS 1.3
PDF
PPT
PDF
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
PPTX
PPTX
java.lang.OutOfMemoryError #渋谷java
PDF
PPTX
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
PDF
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
PDF
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
PDF
Javaはどのように動くのか~スライドでわかるJVMの仕組み
PPTX
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
PDF
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
PDF
OpenJDK トラブルシューティング #javacasual
ODP
PDF
PDF
仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会
KEY
PDF
The Essence of Using Ruby on Rails in Corporations
PDF
第4回 インフラ勉強会@福岡 Fluentdハンズオン
PPTX
20140518 JJUG MySQL Clsuter as NoSQL
PDF
PDF
The History of Ruby; 20th Anniversary Ed.
PDF
More Related Content
PDF
PDF
PDF
PPTX
PPTX
Introduction to GraalVM and Native Image
PDF
PDF
ng-japan 2015 TypeScript+AngularJS 1.3
PDF
What's hot
PPT
PDF
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
PPTX
PPTX
java.lang.OutOfMemoryError #渋谷java
PDF
PPTX
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
PDF
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
PDF
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
PDF
Javaはどのように動くのか~スライドでわかるJVMの仕組み
PPTX
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
PDF
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
PDF
OpenJDK トラブルシューティング #javacasual
ODP
PDF
PDF
仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会
KEY
PDF
The Essence of Using Ruby on Rails in Corporations
PDF
第4回 インフラ勉強会@福岡 Fluentdハンズオン
PPTX
20140518 JJUG MySQL Clsuter as NoSQL
PDF
Viewers also liked
PDF
The History of Ruby; 20th Anniversary Ed.
PDF
PDF
PDF
PDF
PDF
Similar to Ruby紹介
PDF
PDF
PDF
PDF
PDF
Matz presentation for Fukuoka Ruby Days 2010
PDF
PDF
PPT
PDF
PDF
PPTX
Ruby – The Scripting Language
PDF
PDF
PDF
PDF
PDF
PDF
Ruby初級者向けレッスン KOF2015 出張版
PDF
人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP
PDF
PPTX
More from Masahiro Tomita
PDF
PDF
PDF
PDF
PDF
PDF
PDF
「理論から学ぶデータベース実践入門」読書会スペシャル
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
Ruby紹介 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. 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. 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. 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. 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