【初心者向け】Rubyのクラスの基本をわかりやすく解説!

プログラミング言語の辞書

Rubyのクラスとは

Rubyのクラスは、オブジェクト指向プログラミングにおける重要な概念です。

クラスは、関連するデータやメソッド(処理の手順)をまとめたものであり、それ自体が設計図やテンプレートのようなものです。

クラスは実際のオブジェクトの作成に使用され、そのオブジェクトはクラスのインスタンスと呼ばれます。

次のセクションからRubyのクラスの使い方や注意点等をお伝えしていきます。

Rubyのクラスの作成

クラスは、オブジェクトの設計図として機能し、共通の特性や振る舞いを持つオブジェクトを作成するためのテンプレートです。

クラスの定義

クラスを定義するには、classキーワードを使用します。以下は、クラスの定義の例です。

class MyClass
 # クラスのコードをここに記述します
end

クラス名は大文字で始める必要があります。この例では、MyClassという名前のクラスを定義しています。

インスタンス変数とインスタンスメソッド

クラスには、インスタンス変数とインスタンスメソッドを定義することができます。

インスタンス変数は、クラス内のインスタンス(オブジェクト)ごとに異なる値を持つ変数です。インスタンスメソッドは、そのクラスのインスタンスに対して呼び出すことができるメソッドです。

以下は、クラス内でインスタンス変数とインスタンスメソッドを定義する例です。

class MyClass
 def initialize
  @instance_variable = "初期値"
 end

 def instance_method
  puts @instance_variable
 end
end

上記の例では、initializeメソッドはクラスのコンストラクタと呼ばれ、新しいインスタンスが作成されるときに自動的に呼び出されます。

@instance_variableはインスタンス変数であり、インスタンスごとに異なる値を持つことができます。instance_methodはインスタンスメソッドであり、@instance_variableの値を表示する処理を含んでいます。

コンストラクタ(initializeメソッド)

コンストラクタは、新しいインスタンスが作成される際に自動的に呼び出される特殊なメソッドです。クラスのインスタンスを初期化するための処理を記述することができます。

先ほどの例では、initializeメソッドがコンストラクタとして定義されています。このメソッド内では、インスタンス変数の初期値を設定する処理が行われています。コンストラクタの役割は、インスタンスが作成される際に必要な初期化処理を行うことです。

Rubyでのオブジェクトの生成と利用

Rubyでは、クラスを使用してオブジェクトを生成し、それらのオブジェクトを操作することができます。

インスタンスの生成

クラスからオブジェクトを生成することを「インスタンスの生成」と呼びます。以下のようにクラス名の後ろにnewメソッドを呼び出すことで、インスタンスを生成することができます。

class MyClass
 # クラスのコードをここに記述します
end

my_object = MyClass.new

上記の例では、MyClassという名前のクラスからmy_objectというインスタンスを生成しています。これにより、my_objectMyClassクラスのオブジェクトとなります。

インスタンスメソッドの呼び出し

生成したインスタンスは、クラスで定義されたインスタンスメソッドを呼び出すことができます。

以下は、インスタンスメソッドの呼び出しの例です。

class MyClass
 def instance_method
  puts "インスタンスメソッドが呼び出されました!"
 end
end

my_object = MyClass.new
my_object.instance_method

上記の例では、MyClassクラスにinstance_methodというメソッドを定義しています。

my_objectというインスタンスを生成し、そのインスタンスのinstance_methodを呼び出しています。実行すると、コンソールに「インスタンスメソッドが呼び出されました!」と表示されます。

インスタンス変数へのアクセス

クラス内で定義されたインスタンス変数には、インスタンスメソッド内からアクセスすることができます。

以下は、インスタンス変数へのアクセスの例です。

class MyClass
 def initialize
  @instance_variable = "インスタンス変数の値"
 end

 def get_variable
  puts @instance_variable
 end
end

my_object = MyClass.new
my_object.get_variable

上記の例では、initializeメソッドでインスタンス変数@instance_variableを初期化しています。

そして、get_variableメソッドでその値を表示しています。my_objectget_variableメソッドを呼び出すと、「インスタンス変数の値」という結果が表示されます。

Rubyでのクラスの継承

Rubyでは、クラスの継承を使用して既存のクラスを基に新しいクラスを作成することができます。

サブクラスの作成

クラスの継承を行うには、サブクラス(子クラス)とスーパークラス(親クラス)と呼ばれる2つのクラスが必要です。サブクラスは、スーパークラスの特性や振る舞いを受け継ぎ、さらに独自の特性や振る舞いを追加することができます。

以下の例では、SuperClassというスーパークラスからSubClassというサブクラスを作成しています。

class SuperClass
 # スーパークラスのコードをここに記述します
end

class SubClass < SuperClass
 # サブクラスのコードをここに記述します
end

上記の例では、SubClassSuperClassを継承しています。これにより、SubClassSuperClassの特性やメソッドを利用することができます。

スーパークラスのメソッドの利用

サブクラスは、スーパークラスで定義されたメソッドを利用することができます。

以下の例では、スーパークラスのメソッドをサブクラスで呼び出しています。

class SuperClass
 def super_method
  puts "スーパークラスのメソッドが呼び出されました!"
 end
end

class SubClass < SuperClass
 def sub_method
  super_method
 end
end

my_object = SubClass.new
my_object.sub_method

上記の例では、SuperClasssuper_methodというメソッドが定義されています。

SubClassではsub_methodというメソッドを定義し、その中でsuper_methodを呼び出しています。実行すると、コンソールに「スーパークラスのメソッドが呼び出されました!」と表示されます。

オーバーライドとスーパーの呼び出し

サブクラスでは、スーパークラスで定義されたメソッドをオーバーライド(上書き)することもできます。オーバーライドしたメソッドは、サブクラス固有の実装を行うために使用されます。また、オーバーライド後もスーパークラスのメソッドを呼び出すこともできます。

以下の例では、スーパークラスのメソッドをオーバーライドし、スーパークラスのメソッドも呼び出しています。

class SuperClass
 def overridden_method
  puts "スーパークラスのメソッドが呼び出されました!"
 end
end

class SubClass < SuperClass
 def overridden_method
  super
  puts "サブクラスでオーバーライドされたメソッドが呼び出されました!"
 end
end

my_object = SubClass.new
my_object.overridden_method

上記の例では、SuperClassoverridden_methodというメソッドが定義されています。

SubClassでは同じメソッド名でオーバーライドし、superを使用してスーパークラスのメソッドを呼び出しています。実行すると、コンソールに「スーパークラスのメソッドが呼び出されました!」と「サブクラスでオーバーライドされたメソッドが呼び出されました!」と表示されます。

プログラミングスクールなら
忍者CODE

適正コース診断2
あなたの適性学習プランを診断

RubyのモジュールとMix-in

Rubyでは、モジュールという機能を使用して、クラスに共通のメソッドや定数を提供することができます。

モジュールの定義

モジュールは、クラスと同様にメソッドや定数を定義するためのコンテナです。モジュールを定義するには、moduleキーワードを使用します。以下の例は、モジュールの定義の例です。

module MyModule
 # モジュールのコードをここに記述します
end

上記の例では、MyModuleという名前のモジュールを定義しています。

モジュールのインクルード

モジュールをクラスに組み込むことを「インクルード」と呼びます。クラスにモジュールをインクルードすることで、そのクラスのインスタンスがモジュールのメソッドや定数を利用することができます。

以下の例は、モジュールのインクルードの例です。

module MyModule
 def my_method
  puts "モジュールのメソッドが呼び出されました!"
 end
end

class MyClass
 include MyModule
end

my_object = MyClass.new
my_object.my_method

上記の例では、MyModuleモジュールにmy_methodというメソッドが定義されています。

MyClassクラスでinclude MyModuleとすることで、MyClassのインスタンスでmy_methodを呼び出すことができます。実行すると、コンソールに「モジュールのメソッドが呼び出されました!」と表示されます。

Mix-inの利点

Mix-inは、モジュールを複数のクラスで共有することができるという利点があります。これにより、複数のクラスで同じ機能を共有する場合に便利です。

例えば、異なるクラスに同じメソッドを実装したい場合、それぞれのクラスで同じメソッドを個別に実装する必要はありません。代わりに、共通の機能を持つモジュールを作成し、各クラスでそのモジュールをインクルードすることで、コードの再利用性と保守性を高めることができます。

Mix-inは、クラスの設計を柔軟にするだけでなく、コードの重複を減らし、効率的なプログラミングを実現する手段です。

挫折することなくプログラミングを学ぶなら

独学?スクール?

これから今回ご紹介したRubyなどのプログラミング学習を始めようと考えている方、または最近学習を始めた方がいらっしゃるかと思います。

ただ、実際に学習を始めるとなると

1人で学習を進められるかな…
どこをゴールにしていいかわからない…
挫折してしまわないかな…

このように不安な気持ちになる方もいますよね。

たしかに、何かわからないことが出てきたとき、エラーが解決できないとき、誰かに相談できる環境がないことが理由でプログラミング言語の学習を挫折する方が多くいます。

実際にプログラミング言語初学者が挫折をする1番の理由は「不明点が発生した際に気軽に相談できる環境がない」という実態があります。

それだけ学習する環境が大事だということです。

そんな背景があるからこそ、プログラミングの勉強をする際にスクールを選ぶ方が多いのが事実です。

プログラミングスクールに通う理由は他にもあり、

・確実にスキルを身に着けたい
・効率良く学習を進めたい
・モチベーションの維持にもつながりそう
・以前に独学で挫折した経験がある
このように「確実に!」「効率良く!」といった声もよく上がります。
やはり途中で挫折してしまったり、どこを目指しているのかわからなくなったりした場合、「プログラミングを学習することは難しい」と認識してしまい、その後のスキル習得を諦めてしまう可能性が非常に高くなります。
このようなことから、社会人で時間もそこまでないため短期間でスキルを習得したい人や独学で進めるのが不安な人が効率性や確実性を求め、プロの講師に相談できる環境が用意されているプログラミングスクールを選択するのがわかります。
「転職をしたい」「副業で稼げるようになりたい」という理由でプログラミング言語を学び始めたとき、わからない箇所を飛ばしてそのままに放置して学習を進めたとしても、目標とする転職や副業が実現するほどのスキルが身につかなければ多くの時間を費やして何も得られないという結果になります。
ですので、1人でRubyを始めとしたプログラミングスキルの習得ができるか不安な方は多少の費用をかけてでも、不明点をすぐに相談・解決できる環境や効率良く学習できる有料サービスを選ぶのがベストだと言えます。
そこでおすすめしたいのが「忍者CODE」です。

プログラミングスクール無料メンター相談

忍者CODEをおすすめする1番の理由は「業界最安級の金額でありながら圧倒的学習ボリュームと半永久サポートを提供している」ところにあります。
上記でお伝えしたように、初学者の多くは独力で不明点や問題点を解決できないためにプログラミングの学習を挫折しています。そのため、初学者が経験豊富なプロのエンジニアに相談できない環境下でプログラミングスキルの習得をするのは難易度が高いと言えます。
ですが、忍者CODEでは
・チャットでいつでも、無制限で質問可能
・学習者同士でつながれるコミュニティへの招待
などといったサポート体制を設けているため、学習を進めていく中で出てきた問題点や不明点をスムーズに解決しながら、挫折することなくプログラミングスキルの習得が可能です。
また、忍者CODEでは動画コンテンツにて学習を進めていくため、スッと頭に入ってきやすいようになっているのも特徴です。
未経験でも挫折させないオンラインスクールとして、受講生に寄り添った学習コンテンツを提供している忍者CODEをより詳しく知りたい方はぜひ公式サイトをご覧ください。

Rubyのクラス まとめ

この記事では、Rubyのクラスについて初心者向けに解説しました。学習のポイントをおさらいしましょう!

  • クラスはオブジェクト指向プログラミングの基本要素であり、属性やメソッドをまとめたデータ型です。
  • クラスを作成するには、classキーワードを使用してクラス定義を行います。
  • インスタンス変数とインスタンスメソッドは、クラス内で定義された属性と振る舞いです。
  • コンストラクタ(initializeメソッド)は、インスタンスが作成される際に自動的に呼び出される特別なメソッドです。
  • オブジェクトの生成と利用では、クラスからインスタンスを生成し、インスタンスメソッドを呼び出したり、インスタンス変数にアクセスしたりします。
  • クラスの継承では、既存のクラスを基にして新しいクラスを作成することができます。サブクラスはスーパークラスの属性やメソッドを継承し、利用することができます。
  • オーバーライドとスーパーの呼び出しにより、サブクラスはスーパークラスのメソッドを上書きしたり、スーパークラスのメソッドを呼び出したりすることができます。
  • モジュールとMix-inを使用することで、共通の機能を複数のクラスで再利用できます。モジュールはインスタンスを持たず、クラスに取り込んで利用します。

これらの基本的な概念と機能を理解することで、Rubyのクラスについてより深く学ぶことができます。

継続的な学習と実践を通じて、より高度なクラスの活用やオブジェクト指向プログラミングのスキルを身につけていきましょう。