Edited at

プログラミング経験がある人向けRubyチュートリアル

More than 3 years have passed since last update.


この資料なに?


内容


  • この資料は、他の言語でプログラミングの経験がある人向けにRubyの基本的な文法を解説したものです。

  • この資料は、まだ完成版ではありません。内容は網羅的ではなく、私が思いついたやつから書いていっています。

  • この資料には順次内容を追加していく予定です。最終的には、「この資料を読めばrubyで書いたちょっとしたスクリプトを読んで何をやっているのか理解できるようになる」という内容にしたいと思います。


作成の動機


  • ネイティブアプリをチームで開発する時、serverサイドとclientサイドが両方できる人が居ると、チーム内のコミュニケーションがスムーズになります。

  • 両方できるようになりたいclientサイドのエンジニアに向けて、Rubyのチュートリアルを書いてみようと思いました。


チュートリアル本編


メソッドの呼び出し

puts("hello ruby") # 標準出力に"hello ruby"と出力される

puts "hello ruby" # カッコは省略できる


classの定義

class Greeting # 定義してるだけなので特に何も起きない

end


メソッドの定義

class Greeting

def execute # 定義してるだけなので特に何も起きない
# メソッドで実行したい処理をここに書く
end
end


ローカル変数の定義

class Greeting

def execute
message = "hello ruby" # ローカル変数の定義。型情報を書く必要はない
puts message # 標準出力にmessageを出力 # => hello ruby と出力される
end
end


インスタンス変数の定義

インスタンス変数: メンバ変数みたいなものです

class Greeting

def setup_message
@message = "hello ruby" # やはり、型情報を書く必要は無い
end # ちなみに @messageとだけ書いて何も代入しないとnilで初期化される

def execute
puts @message # 同じインスタンス内のインスタンス変数なのでアクセス出来る
end
end

# 実行してみる
greeting = Greeting.new
greeting.setup_message
greeting.execute # => hello ruby と出力される

# ちなみに... インスタンス変数に値が入っていない場合
greeting_without_setup = Greeting.new
greeting_without_setup.execute # => @messageがnilなので、何も表示されない。
# (代入されていないインスタンスの中身はnil)
# 「初期化されていないインスタンス変数の中にはゴミが入っている」わけでは無いので安心


initializeメソッドの定義

# このメソッドはclassがnewされた時に自動的に呼び出されるコンストラクタに似た働きをするメソッドである

class Greeting
def initialize # initializeというメソッド名のメソッドを定義すれば良い
setup_message # 処理内容: setup_messageの実行
end

def setup_message
@message = "hello ruby"
end

def execute
puts @message
end
end

# 実行してみる
greeting = Greeting.new # この時点でinitializeメソッドが実行されている
greeting.execute # => hello ruby が表示される


メソッドのスコープの指定

class Greeting

def initialize
setup_message
end

def execute
puts @message
end

private # これ以降に定義したメソッドはprivateである

def setup_message # このメソッドはprivate
@message = "hello ruby"
end
end

# 試してみる
greeting = Greeting.new # この時点でinitializeメソッドが実行されている
greeting.setup_message # 期待した通り、例外が発生: NoMethodError: private method `setup_message' called
# ちなみに、プログラムの実行を開始し、この行が実行されたタイミングで初めて例外が発生する。
# C++ のようにコンパイル時にこうした問題を見つけてくれたりはしない


続き

Rubyの凄く面白い特徴をRailsのコードを例に解説

発展的な内容を新たな記事として書いてみました。


あとで書く


解説したい文法


  • イテレータの使い方

  • メソッドに引数を渡す


Rubyの文化的背景


  • 持ってる本の中をあさって見る


推薦図書


  • はじめてのRuby


Q&A