質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.39%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

5回答

323閲覧

1rubyのインスタンス化とインスタンス生成の違い 2インスタンスとオブジェクトの違い

basashitosushi

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2024/09/17 12:37

実現したいこと

何十種類の記事を見ましたがインスタンス化とインスタンス生成の違いがしっくりきません。
質問に至るまで、記事だけではなくいろんな方の質問を見させていただきました。
が、しっくりきません。

taiyaki = taiyaki.new
上記をインスタンスを生成するという意味を記事で読み理解しました。

しかし他の記事では
「設計図であるクラスからオブジェクトを作ることをインスタンス化」
と出てくるものもあり、これがコードでいうなんのことをいっているのかわからず、
インスタンスの生成と同じようにしか聞こえません。
コードでいうとどんなコードが例えでしょうか?

また、オブジェクトとインスタンスの違いがわかりません。
taiyaki = taiyaki.new
上記はインスタンスを生成するという意味のコードですよね。
ということはインスタンスというデータができたという意味ですよね

そうするとオブジェクトはどのコードになるのでしょうか

発生している問題・分からないこと

1rubyのインスタンス化とインスタンス生成の違い 2インスタンスとオブジェクトの違い

該当のソースコード

taiyaki = taiyaki.new

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

taiyaki = taiyaki.new
上記はインスタンスを生成するコード

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2024/09/17 13:00

大文字小文字はこれで本当に合っていますか?
guest

回答5

0

「設計図であるクラスからオブジェクトを作ることをインスタンス化」
と出てくるものもあり、これがコードでいうなんのことをいっているのかわからず、
インスタンスの生成と同じようにしか聞こえません。

はい、Rubyではオブジェクトはクラスから作るしかないので、インスタンス化=インスタンスの生成です。違いはありません

オブジェクトとインスタンスの違いがわかりません。

Ruby上では、ものとしては同じ(あらゆるオブジェクトがインスタンス)で、視点の違いです。「クラスから作られたもの」ということを含意するのがインスタンスです。

(他の言語ではオブジェクトの生成手法にも違いがあるので、あくまでRubyに限定した話です)

投稿2024/09/17 13:03

maisumakun

総合スコア145830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

1rubyのインスタンス化とインスタンス生成の違い

その2つを別の意味で使うことは無いと思います。オーソドックスには「インスタンス生成」でしょうが、「インスタンス化」もIT用語として間違いではないので、どっちでもしっくりする方を使えば良いでしょう。

日本語としては「~~化」とは「一般化」「商品化」「合理化」のように「~~でなかったものを~~に変える」という意味(化ける)が普通なので、「インスタンス化」と言ったときに「インスタンスになる前は何だったのか?」と考えると私には思いつきません。「クラスをインスタンスに変えた」訳ではないのでクラスではないです。
ただし、「小説の映画化」だと、「小説を映画に変えた」ではあるのですが、実態としては「小説を元にして映画を作った」方が近いと思うので、その方針で「クラスを元にインスタンスを作った」と考えると「インスタンス化」も日本語的にもありなのでしょう。

2インスタンスとオブジェクトの違い

これは、どういう視点で見るかの違いです。同じ物に2つ名前が付いているというか。
「オブジェクト」という単語は「~~の対象」という意味で、主に「メソッドが働きかける対象=メソッドを受け取るレシーバー」という視点ですね。メソッドと書きましたが、このあたりは言語によりけりで、メソッドに限らず何らかの操作の「対象」であればオブジェクトと呼ぶ理由になります。
(ここで「操作」と書いたのは参照も含めた中味への働きかけのことで、中味の改変だけを意味する物ではないです)

「インスタンス」という単語は「具体的な事例・実例」という意味で、クラスの具体的な実体ということなので、そういう視点で見ると「インスタンス」と呼ぶことになります。

ある人が、誰の視点から見るかによって、「父親」だったり「兄弟」だったり「息子」だったりするのと同じかと。

Rubyではクラス自体もClassクラスのインスタンスなので、例えば「Stringはクラスなのかインスタンスなのか?」と聞かれると、「視点によりどっちもあり」と言うことでしょう。

投稿2024/09/17 15:59

otn

総合スコア85647

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。
Ruby は専門外ですが、一般的なオブジェクト指向における用語について回答します。

まず用語としての「インスタンス化」と「インスタンス生成」は全く同じものを指していると考えて良いと思います。人によってどちらを好んで使ったりする程度だと思います。
逆に、もし Ruby でこの2つを違うものとして扱っているのであれば、そのような記述が存在するはずです。質問者さんがこの2つを別の概念だと考えるに至った根拠となる記事があるのであれば、知りたいところではあります。

インスタンスとオブジェクトの違いについては、「オブジェクト」というのは文字通りの物体を指していて、プログラム中で取り扱うデータの単位であり、プログラム中で変数に入れられる全ての「モノ」を「オブジェクト」と呼びます。
(メタプログラミングの文脈を考えなければ) 「クラス」はオブジェクトの設計書のようなものでそれ自体はオブジェクトではなく、インスタンス化によって生成された「モノ」が初めてオブジェクトとなるわけです。
「インスタンス」はオブジェクトと同じものを指し示してはいますが、実際には「○○クラスのインスタンス」のように使われ、オブジェクトの中でも、特定のクラスに属することが明らかになっているオブジェクトのことを指して「○○クラスのインスタンス」と呼びます。
「オブジェクト」はクラスのことを考えなくても言えますが、「インスタンス」は元となるクラスの存在が前提になっている呼び名ということです。
「インスタンス生成」も、「○○クラスの」インスタンスを生成する、というように、クラスの指定が重要となっているわけです。

taiyaki = taiyaki.new は、「taiyaki クラスのインスタンス」(== オブジェクト) を生成し、そのオブジェクトを taiyaki という変数に格納している、というコードになるわけです。

投稿2024/09/17 13:09

tamoto

総合スコア4226

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

オブジェクト指向は一枚岩に見えて色んな派閥があり、嘘が含まれるので混乱するのは仕方ないです。

定義したクラスは複数回呼び出すことができますが、呼び出しごとに別物として扱えるという特殊な機能を持ってますので、クラスの定義と区別するために、インスタンス化という語を用います。

また、インスタンス化の際に暗黙のうちに呼ばれるメソッドをコンストラクタと呼びます。

インスタンスの扱いは言語によって異なりますが、インタプリタ系の言語ではコンソールから対話的にプログラムを実行できるため、どのタイミングで定義された、変数、関数、クラスかを分別しないために、クラス定義自体がシングルトン(この場合は暗黙的に生成されたインスタンス)として存在することもあります。

設計図がどうとか言う説明は正味、意味不明というか、なんの文脈から言ってるのか読解するのが困難なため、初心者向けの説明としては不適当と思っています。

投稿2024/09/18 02:08

utm.

総合スコア220

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

インスタンスとは実体という意味を持ちます
対するオブジェクトはです
つまり、実体を伴った物、すなはち(オブジェクト)を実体化(インスタンス化)する操作が実体生成(インスタンス生成)です

また、オブジェクトとは全てのクラスの継承元であるObjectクラスを指しています
Rubyにおいてもこれは同様で、あるクラスのインスタンスを作るということは、Objectクラスのインスタンスを作ることに相当します

そのためこの意味を指して「オブジェクトを作る」と表すこともあります

ここでいうとはデータのことです
クラスを定義した段階では、それらはただのテキストですが、インスタンス化を経ることでアクセスが可能な情報となります
プログラムでは、このメモリ内で取り扱いが可能になったデータを実体として認識します

言葉の意味が分かると、散逸していた知見にも一本の筋が見えてくるでしょう

設計図であるクラスからオブジェクトを作ることをインスタンス化

-> 設計図であるクラスからを作ることを実体化

インスタンスの生成と同じようにしか聞こえません。

->実体生成と同じようにしか聞こえません

実際に同じ意味を示しているわけですが、それが具体的にどの行程を指しているのかが明瞭になるはずです

投稿2024/09/17 13:47

編集2024/09/17 13:49
nanashi123

総合スコア75

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.39%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問