はじめに
最近プログラミングを始めた方、特にスクールに行かず「独学でやったるぜ!」と意気込むそこのあなた!
はい。自分もそうでした。そして理由もなく考えもなくRubyに手を出してるところも一緒です。仲間!
でも、、、
わからないことがわからない
ですよね。
コード書け!って言われてもなに書けばいいのかわかんない!まあそれが普通だと思います。
たまに歴半年くらいで開眼してメタプロまで書いちゃうような突然変異種(天才)もいますが気にしない方がよいです。そういう人は大概優しくて教えるのも上手なので色々教えてもらいましょう。
本題
Rubyに限らずですが、プログラミング初心者がよくつまづいたり、理解に苦しむところは
メソッド
,引数
じゃないでしょうか。自分はそうでした。
自分で考えたメソッドを書く
これの意味が理解できなかったです。ああ懐かしいもどかしい。
自分の中でしっくりくる捉え方が見つかるまで時間がかかりました。(自分は割とすぐに実務に入ったのでその中で感覚を掴みました。長く独学をするのはあまりおすすめしません。)
メソッドにもインスタンスメソッド
,クラスメソッド
なるものがいてどう使うのかどこで使うのか全然わからない!って感じでした。
なので自分なりの解釈をここでお伝えしたいと思います!
メソッドの解釈
ターミナルを開いてirb
を起動しましょう。以下のように入力してみてください。
hoge = 'hogeはホゲホゲ'
続けて以下のコードを実行します。
hoge.length
9という結果がでたあなたは天才です。素晴らしい。
はい。この時のlength
がメソッドです。
え?そんなの知ってるって?
さすがです。あなたはもう初心者ではないでしょう。
次はこちら
class User
def name
'hoge'
end
end
次に以下のコードを実行します。
user = User.new
user.name
"hoge"
という結果がでたあなたは天才です。素晴らしい。
はい。この時のname
がメソッドです。
わかった!と思ったあなたはもう次のステップに進んでいます。この記事を読み続ける必要はないでしょう。
ん?と思ったらもうちょっと読んでみてください。
今実行したのは、
Stringクラス
のlengthメソッド
Userクラス
のnameメソッド
の2つです。
lengthメソッド
については下記のURLを参考にどうぞ。
String#length (Ruby 2.7.0 リファレンスマニュアル)
Stringクラス
のlengthメソッド
はあらかじめRubyに組み込まれているものです。オブジェクトの文字長を返します。
Userクラス
のnameメソッド
は今回自分で生み出したものということになります。こちらは中身がhogeでもfugaでもいいのです。
これらはどちらもインスタンスメソッド
になります。それぞれのクラスのインスタンスに対してくっつけて使います。
Hogeクラス
のインスタンスはHoge.new
で作れますね。
User
とかHoge
とかに対して直接くっつけて使うメソッドはクラスメソッド
と言います。違いはこれだけです。
自分で考えたメソッドを書く
初めはこれがすごく難しいものであると勘違いしていました。
でも概念がわかればすごく便利に使えます。今回書いたのはname
で中身はhogeだけでしたが、いろんな処理をまとめて書いておくことでそのメソッドを一発叩けば実行することができるようになります。
例えば(今回は引数も使っちゃいましょう)
class Number
def check(a, b)
if a == 2
a * b
elsif a == b
a / b
else
a + b
end
end
end
これでNumberクラス
のcheckメソッド
を実行しましょう。
num = Number.new
num.check(1, 2)
num.check(2, 2)
num.check(3, 3)
引数によって計算式が変わるメソッドですね。簡単なものでもirb
を使って色々書いて実行してみるのがいいと思います。引数については今のでしっくりきたでしょうか。
クラスメソッド
はこの最たるもので、バッチ処理をする時には大活躍します。まさに一撃!という感じです。
バッチ処理ってなんやねん!と思った方はこちら
要は溜めてまとまった処理をシステムの裏側で実行する仕組みです。
最後に
ここまで読んで、わかんない!という方。本当にすみません。それはこの記事の分かりにくさです。もっと分かりやすく書けるように勉強します。
ちなみに今この瞬間にメソッドについてよくわかってなくても、irb
やコンソールでさっき出てきたlength
が使えれば問題ないです。そのうち分かります。あなたが分かった時や詳しくなった時には、その時に初心者の方に優しく教えてあげましょう。
最後まで読んでいただきありがとうございました。