Rubyはプログラミング初学者にも人気なサーバーサイド言語の1つです。
Rubyを学ぶことでちょっとしたシステムを作れたり、Ruby On Railsというフレームワークを使うことでウェブサービスを作ることも出来るようになります。
そこで今回の記事ではRubyを学び始めた方に向けて、僕がRubyを勉強した時に感じた覚えておくと良い基礎をまとめてみました。
プログラミングは言葉だけでは伝えにくい部分も多いので、今回の記事ではコードもセットで解説をしています。
Rubyのクラスはキャメルケースで書く
Rubyでクラスを定義する際には最初の文字を大文字にしたキャメルケース、アッパーキャメルケースが推奨されています。
Rubyのクラス名
- OK BakeryShop
- NG bakeryShop
- NG bakery_shop
Rubyのメソッドはスネークケースで書く
Rubyではメソッドは小文字のスネークケース、ローワースネークケースが推奨されているようです。
Rubyのメソッド名
- OK get_area
- NG Get_Area
- NG getArea
- NG GETAREA
言語によって異なるので、どちらで書くべきか最初は悩むと思いますがここは慣れて行きましょう。
Rubyの変数名はスネークケースで書く
Rubyの変数はメソッドと同様に、ローワースネークケースで定義していきます。
Rubyの変数名
- OK total_score
- NG Total_Score
- NG totalScore
- NG TOTALSCORE
Rubyではメソッドを呼び出す際の「()」を省略出来るので、変数なのかメソッド呼び出しなのかがパット見でわからないのが痛い所。
Rubyのコメントアウトは#を使う
PHPやGolangでは「//」を使ってコメントアウトをしますがRubyでは「#」を使います
コメントアウト
# ここにコードの補足を書いたり出来る
ハッシュとシンボルどちらを使うべきか
配列のキーにアクセスする際に利用出来るこの2つの方法。
結論としてはスッキリ書けてコードも読みやすいシンボルがおすすめ。
Title
# ハッシュ
user = {"name" => "himakuro", "country" => "Japan}
puts user["name"]
# シンボル
user = {name: "himakuro", country: Japan}
puts user[:name]
真偽値(boolean)を返すメソッドには ? を付ける
真偽値を返すメソッド
def positive?(number)
return number >= 0
end
慣習的なやつらしいです。
パット見でメソッドの戻り値の型が判断出来るのは良いですね。
キーワード引数をは使うべきか
Rubyのメソッドは下記のように定義して呼び出すことが出来ます。
通常の引数の場合
# 通常のメソッド
def get_area(height, width)
return height * width
end
# メソッド呼び出し
get_area(10, 5)
しかし上記の方法だと引数が増えた時に、どの値に対して何を入れているのか分かりづらくなるという問題があります。
そこでRubyはキーワード引数という、どの引数に対してどの値をセットするかを、明示的に記述した方法でも書くことが出来ます。
キーワード引数を使った場合
# キーワード引数を使ったメソッド
def get_area(height:, width:)
return height * width
end
# キーワード引数を使ったメソッド呼び出し
get_area(height:10, width:5)
引数の数が少ないと冗長な書き方の様にも感じますが、ケアレスミスを無くすという意味では有効な気がします。
またキーワード引数で定義をしていると、渡す引数の順番を入れ替えたとしても動作しますが、混乱を招くだけなので引数の順番通りに渡してあげるのが良いです。
キーワード引数を使った場合その2
# キーワード引数を使ったメソッド
def get_area(height:, width:)
return height * width
end
# 先にwidthから渡しても一応動く
get_area(width:5, height:10)
インスタンスの生成にはnewを使う
インスタンス生成
class Shop
def get_name
return "パン屋"
end
end
shop = Shop.new
puts shop.get_name
インスタンス生成時に自動で呼ばれるメソッド
Rubyでインスタンスを生成すると自動で呼ばれるメソッドは「initialize」
initializeメソッド
class Shop
def initialize
# 自動で呼ばれる
puts "initialized"
end
end
shop = Shop.new
initializeメソッドに引数を渡すことも可能
initializeメソッドに引数
class Shop
def initialize(name:)
# 自動で呼ばれる
puts "#{name}"
end
end
shop = Shop.new(name: "パン屋")
インスタンスメソッドの中でのインスタンス変数呼び出し
インスタンス変数呼び出し
class Shop
attr_accessor :name
def initialize(name:)
self.name = name
end
def get_name()
return self.name
end
end
shop = Shop.new(name: "パン屋")
「this」と間違えそうですが Rubyの場合は「self」を使います。
継承は < を使う
継承の実装
class Shop
attr_accessor :name
def initialize(name:)
self.name = name
end
def get_name()
return self.name
end
end
class BakeryShop < Shop
end
bakeryShop = BakeryShop.new("パン屋1")
bakeryShop.getName
上記の例ではBakeryShopはShopを継承しているので、親となるShopが持つメソッドや変数にアクセスをすることが可能になります。
親のメソッドを上書きするオーバーライド
親のメソッドをベースとしたいけど、一部のメソッドは書き換えたい様なケースに使えるのがオーバーライドです。
オーバーライドの実装
class Shop
attr_accessor :name
def get_name()
return self.name
end
end
class BakeryShop < Shop
# Shopクラスのget_nameは使わず、下記のget_nameが呼び出される
def get_name()
return "パンの名前は#{self.name}です"
end
end
bakeryShop = BakeryShop.new("パン屋1")
puts bakeryShop.getName
# パンの名前はパン屋1ですと出力される
継承元のメソッドはsuperで呼び出す
Rubyでは他の言語と同様に、継承元(親)のメソッドを呼び出すことも可能です。
superの使い方
class Shop
attr_accessor :name
def initialize(name:)
return self.name
end
end
class BakeryShop < Shop
attr_accessor :price
def initialize(name:, price:)
# Shopクラスのinitializeが呼び出される
super(name: name)
self.price = price
end
end
bakeryShop = BakeryShop.new
bakeryShop.getName
まとめ
今回の記事ではRuby初心者に向けた、知っておくと良いポイントをまとめてみました。
RubyはPHPとよく比較されますが細かい記述方法は異なる部分が多いです。
今回の記事を元にしっかりとRubyの記法を覚えて、今後のコードリーディングや実装に活かしていきましょう。