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