Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

Ruby

【Ruby】クラスの書き方と使い方の基本

動画で解説を見る



開発環境

  • Ruby version: ruby 3.1.2

Rubyのクラス(class)とは

Rubyのクラス(class)とは、オブジェクトの設計図に相当するものです。

クラス(class)を定義して関連するデータやメソッドをクラス内にまとめることにより、コードをより効果的に構造化することができるだけでなく、再利用可能なコードを作成しやすくなります。

公式リファレンス:https://docs.ruby-lang.org/ja/latest/class/Class.html

Rubyのクラス(class)の書き方

Rubyのクラス(class)の書き方をご紹介します。

Rubyのクラスは「class」から始まり「end」で終わりとなります。

クラスからオブジェクトを作成するためには「newメソッド」を使用してインスタンスを生成し、生成したインスタンスに対してドット(.)の後にインスタンスメソッド名を記述することでインスタンスメソッドを実行することができます。

Rubyのクラスの命名規則

Rubyのクラスの命名規則にはいくつかルールがあります。

  • 英文字の大文字で始める
  • 2単語以上の場合はキャメルケース(各単語の先頭を大文字にして区別する)にする

英文字の小文字や2単語以上の場はスネークケース(各単語をアンダースコアで連結する)にすることもできますが、クラス名はクラスを識別するために英文字の大文字でキャメルケースで記述されることが一般的です。

Rubyのメソッド名の慣習

Rubyのメソッド名にはいくつか慣習があります。

  • 真偽値を返すメソッドには「?」をつけることが多い
  • 破壊的なメソッドには「!」をつけることが多い

また、メソッド名は「動詞のみ」または「動詞 + 目的語」で命名することにより、さらに可読性を高めることができます。

Rubyのメソッドの使い方

Rubyのメソッドのよくあるパターンをサンプルコードを用いて使い方の解説をしていきます。

Rubyのクラスでインスタンスメソッドを実行するパターン

Rubyのクラスでインスタンスメソッドを実行するパターンです。

インスタンスメソッドは、クラスのインスタンス(オブジェクト)に対して呼び出されるメソッドです。

インスタンスメソッドは通常、オブジェクトの状態を変更するための操作や、オブジェクトの情報を取得するための操作などに使用されます。

また、インスタンスメソッド内では、そのインスタンスに関連するインスタンス変数(@変数名)にアクセスできます。

サンプルコードでは、変数「person」には生成されたインスタンスが代入されており、インスタンスが代入された変数「person」に対してドット(.)の後にインスタンスメソッド名を記述することにより、「Personクラス」の「infoメソッド」を実行しています。

Rubyのクラスでイニシャライズメソッドを実行するパターン

Rubyのクラスでイニシャライズメソッドを実行するパターンです。

イニシャライズメソッドは、新しいオブジェクトが生成される際に自動的に呼び出されます。

オブジェクトを生成する際に、必要な情報や初期値を提供するための手段として使用されることが多いため、オブジェクトの初期化を行うのに適しています。

サンプルコードでは、「Personクラス」を「newメソッド」でインスタンス生成する際に「initializeメソッド」に値を渡し、インスタンス変数に値がそれぞれ代入されてオブジェクトの初期化をしています。

Rubyのクラスを継承するパターン

Rubyのクラスを継承するパターンです。

スーパークラス(親クラス)が持つプロパティやメソッドをサブクラス(子クラス)が継承することで、同じ機能やデータを複数のクラスで再利用できます。

似たような機能を持つクラスを新たに作成する際に、ゼロからコードを書く必要がなくなるだけでなく、共通の基盤となるクラスを定義できるためコードの一貫性と統一性を保つことができます。

また、サブクラスで新しい機能を追加できるため、アプリケーションの要件が変更された際にも容易に対応できる拡張性が高くなります。

サンプルコードでは、親クラスの「Person」から子クラスの「User」と「Admin」へ継承しているため、共通のイニシャライズメソッドを使用することができます。

Rubyのクラスでオーバーライドするパターン

Rubyのクラスでオーバーライドするパターンです。

スーパークラス(親クラス)で定義されているメソッドをサブクラス(子クラス)で再定義することオーバーライドといいます。

サンプルコードでは、親クラスの「Person」から子クラスの「User」と「Admin」へ継承しているため、どちらも「infoメソッド」がありますが、子クラス側でユーザーと管理者に適した出力結果になるように上書きをしています。

おわりに

Rubyのクラスの使い方を解説してきました。

関連した処理をクラスにまとめることにより、コードの再利用がしやすくなり、コードの一貫性や統一性、拡張性がかなり高くなります。

オブジェクト指向プログラミングにおいてクラスの概念はとても重要なポイントになるため、最初は難しいかもしれませんがしっかりとクラスを使いこなしていきましょう。

Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

-Ruby