Rubyの種類
・JRuby
Javaで実装されたRuby実装で、Javaのライブラリを利用することが可能。
・MacRuby
Mac上のCocoaフレームワークなどをシームレスに扱えるように変更を加えられたRuby実装
・Rubinius
Rubyによって実装されたRuby実装
・mruby
まつもとゆきひろ氏主導で開発を進められている「組み込み用途向けの軽量版Ruby」
・RubyMotion
RubyでiPhoneアプリ(ネイティブアプリ)を作成できる
etc
JavaにはGroovyという言語がある。

Rubyのコミュニティ
・メーリングリスト
・Ruby会議
・地域Ruby会議
・勉強会


In [1]:
def hello(names)
  names.each do |name|
    puts "HELLO, #{name.upcase}"
  end
end

rubies = ['MRI', 'jruby', 'rubinius']

# トップレベル
# トップレベルで定義されたメソッドは
# グローバルなサブルーチンのように使用することができる
# ・メソッド呼び出しの際、レシーバを記述しない
# ・いわゆる関数のように、どこからでもグローバルに呼び出すことができる(ごく一部を除く)
hello(rubies)


HELLO, MRI
HELLO, JRUBY
HELLO, RUBINIUS
Out[1]:
["MRI", "jruby", "rubinius"]

putsでは、ダブルクォートとシングルクォートで違いある。
ダブルクォートを使った文字列の中に「#{...}」で囲んだRubyのコードを埋め込むことができる。
→ 「式展開」という


In [4]:
def hello(names)
  names.each do |name|
    puts 'HELLO, #{name.upcase}'
  end
end

rubies = ['MRI', 'jruby', 'rubinius']

hello(rubies)


HELLO, #{name.upcase}
HELLO, #{name.upcase}
HELLO, #{name.upcase}
Out[4]:
["MRI", "jruby", "rubinius"]

メソッド呼び出し時の括弧は省略することができる。
例:puts "HELLO, #{name.upcase}"

メソッド呼び出し
 name.upcase
 レシーバ.メソッド名

ブロック
 do 〜 end
ブロックは手続きをひとまとめにしたもの
このようなメソッドを「ブロック付きメソッド呼び出し」と言う。


In [ ]:
# 例
File.open 'README.md' do |file|
  puts file.read
 end

In [ ]:
# こういう書き方もできる
names.each { |name| puts 'HELLO, #{name.upcase}' }

In [5]:
def add(a, b)
  # メソッドの戻り値は
  # そのメソッドの中で最後に評価された式の値となる。
  a + b
end

add(1, 1)


Out[5]:
2

In [6]:
def add(a, b)
  return a + b
  # 途中でリターンすれば、それ以降の処理はされない。
  puts '表示されるか?!'
end

add(1, 1)


Out[6]:
2

In [7]:
name = 'ruby'; puts(name.upcase)
# 実際にこのような書き方をすることはない


RUBY

In [ ]:
# マルチコード
# coding: utf-8

# 上記はマジックコメントと呼ばれている。
# 最初の行に書くのが普通

# Ruby.2.0ではデフォルトのスクリプトエンコーディングはUTF-8。
# コードがUTF-8で記述されているのであれば、マジックコメントは必要ない。