1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rubyは全てがオブジェクト「③クラスについて理解の深掘り」

Posted at

はじめに

今回は「クラスについて理解の深掘り」というタイトルで書いていきます:runner_tone1:
前回の記事

の最後でも書きましたが、学習中にかなり困惑した

「クラスとモジュールもインスタンス」

についての内容となっています!

今回は特に「クラスがインスタンス」であることについて書いており、モジュールやその他の細かい内容は次回の「④Rubyを構成している三大クラス」で書きます:bow_tone1:

「Ruby3.2リファレンスマニュアルのClassクラス」より抜粋

(class Class は)
クラスのクラスです。

クラスはClassクラスのインスタンス

上記リファレンスにも明記されている通り、普段何気無く使っていたクラスはClassクラスと言うクラスのインスタンスです!

確かに、そうでなければ「rubyは全てがオブジェクト(インスタンス)」とは言えないとは思っていました:thinking:

最初は
・クラスは設計図
・インスタンスはクラスからできた実体
と言う認識しか持っておらず、全く理解できませんでした:sweat_smile:

以下、理解する上で私なりに腹落ちした解釈です、、、、、

・Classクラスは「設計図を作る為の設計図」

         👇(インスタンス化)

・クラスは「設計図を作る為の設計図」からできた「設計図」

         👇(インスタンス化)

・インスタンスは「設計図」からできた実体

と言う認識をした上で

クラスは
1.インスタンスを作る為の「設計図」としての側面
2.Classクラスという「設計図を作る為の設計図」からできた実体としての「設計図」の側面
の『二面性を持っている』と解釈の拡大をして、ようやく理解できました。

改めて、自分が泥沼にハマっていた理由は
「クラスはインスタンスを作る設計図」
つまり
「AはB」
だと思い込んでいた為です。
実は「AはBであり、Cでもある」という可能性を完全に排除していた為でした:sweat:

また先ほど書いた以下の図で
・Classクラスは「設計図を作る為の設計図」

         👇(インスタンス化)

・クラスは「設計図を作る為の設計図」からできた「設計図」

         👇(インスタンス化)

・インスタンスは「設計図」からできた実体   ⏪これです

これの最後にできるインスタンスからは、インスタンスを作成できないことも「クラスに二面性」があることの理解を難しくしていました。

「じゃあ、Classクラスは誰が作っているの???」

クラスをClassクラスが作っていることを理解した後に私が感じた疑問です:thinking:

かなり大雑把な例えになるんですが、
「この世界はどうやってできたのか?」
👇
「神様が作った」
👇
「神様は誰が作ったのか?」
👇
「神様の神様が作った」
👇
「神様の神様は誰が作ったのか?」
👇
以下無限ループ

こんな感じで、「設計図」があり、「設計図を作る為の設計図」があるということは「設計図を作る為の設計図を作る為の設計図」があるはずでは?と思った次第です!

検証する為にclassメソッドでどのクラスに属するのか試してみました

qiita.rb
class Sample
end

puts "#{Sample.class}" #=>Class
puts "#{Class.class}" #=>Class

結果として、やはり自分で作ったSmpleクラスはClassクラスに属しているとでます。
しかし、ClassクラスもClassクラスに属しているとでます。
つまり、先ほどのような無限ループが起こらないようにClassクラスで循環が起きているのだと思われます。
ここについては、今後また勉強していきたいと思います:walking_tone4:

まとめ

今まで使っていたクラスは実は「インスタンスを作成できる」「Classクラスのインスタンス」の二面性を持っていた!

参考にしたサイト

・Ruby3.2リファレンスマニュアル>ライブラリ一覧>組み込みライブラリ>Classクラス

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?