対象試験と出題頻度
インスタンスは、基本情報技術者・応用情報技術者で出題されるテーマです。
オブジェクト指向の基本概念として、「クラス」との関係を正確に理解しているかが繰り返し問われます。H22秋期 FE 午前問47、H29秋期 FE 午前問47、R6年度 FE 科目A免除試験 問35など、出題実績は豊富です。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★★☆
ランクA(重要)必ず覚えておくべき
用語の定義
情報処理試験を勉強していると、「インスタンスって結局何?クラスとどう違うの?」と混乱しがちです。
インスタンス(Instance)とは、一言で言うと
「クラス(設計図)をもとに生成された、具体的なデータをもつ実体」
のことです。
イメージとしては、「たい焼きの型(=クラス)から焼き上がった1個1個のたい焼き」です。
型そのものは食べられません。型に材料を流し込んで初めて、あんこ入り・クリーム入りといった個別のたい焼きが出来上がります。
この「出来上がったたい焼き」がインスタンスに当たります。
📊 インスタンスの基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Instance(「事例」「実体」の意味) |
| 所属する概念 | オブジェクト指向プログラミング(OOP) |
| 対になる用語 | クラス(Class)=設計図・型 |
| 最大の特徴 | 1つのクラスから複数のインスタンスを生成できる |
解説
オブジェクト指向プログラミングでは、データ(属性)と処理(メソッド)をひとまとめにした「オブジェクト」を単位にプログラムを構築します。
このオブジェクトの”ひな形”がクラスであり、クラスに具体的な値を与えて実体化したものがインスタンスです。
クラスとインスタンスの関係を図で理解する
言葉だけでは掴みにくいので、図で整理します。
🔧 クラスからインスタンスが生成される流れ
クラス「犬」
属性:名前 / 犬種 / 年齢
メソッド:吠える() / 走る()
インスタンスA
名前:ポチ
犬種:柴犬
年齢:3
インスタンスB
名前:ハチ
犬種:秋田犬
年齢:5
インスタンスC
名前:レオ
犬種:ラブラドール
年齢:1
※1つのクラスから、属性値が異なる複数のインスタンスを生成できる
クラスは「どんな属性とメソッドを持つか」の枠組みだけを定義した抽象的な存在です。
そこに具体的な値(ポチ・柴犬・3歳)を代入して生成した実体が、個々のインスタンスになります。
コードで見るインスタンス生成
Pythonの簡単なコードで確認すると、関係がよりはっきりします。
コードで見るインスタンス生成
Pythonの簡単なコードで確認すると、関係がよりはっきりします。
class Dog:
def __init__(self, name, breed, age):
self.name = name
self.breed = breed
self.age = age
def bark(self):
return f"{self.name}:ワン!"
# クラスからインスタンスを生成
dog_a = Dog("ポチ", "柴犬", 3)
dog_b = Dog("ハチ", "秋田犬", 5)
print(dog_a.bark()) # ポチ:ワン!
print(dog_b.name) # ハチ
Dogがクラス(設計図)、dog_aとdog_bがそれぞれ別のインスタンス(実体)です。
同じ設計図から作られていても、保持するデータは個別に独立しています。
▶ 「インスタンス」と「オブジェクト」の違い(クリックで展開)
実務やプログラミング書籍では「オブジェクト」と「インスタンス」がほぼ同じ意味で使われる場面が多いです。厳密には、クラスを実体化する操作を「インスタンス化」と呼び、生成された実体を「インスタンス」と呼びます。一方「オブジェクト」はより広い概念で、メモリ上に存在するデータ実体全般を指します。IPA試験ではこの2語をほぼ同義として扱うため、細かな違いの深追いは不要です。
▶ is-a関係で整理する(クリックで展開)
クラスとインスタンスの関係は「is-a関係」で表現できます。「ポチは犬である(ポチ is a Dog)」のように、インスタンスがクラスに属する関係です。一方、「部品と全体」の関係は「part-of関係」であり、これはクラスとインスタンスの関係には該当しません。「公園と代々木公園」はis-a関係(代々木公園は公園である)、「部屋と家」はpart-of関係(部屋は家の一部)と区別します。
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 インスタンスの核心を3行で
・クラス(設計図)に具体的な値を与えて生成した実体がインスタンス
・1つのクラスから属性値の異なる複数のインスタンスを生成できる
・「○○ is a △△」の形で表せるis-a関係がクラスとインスタンスの関係
試験ではこう出る!
インスタンスは、オブジェクト指向の基本用語としてFE・APの午前(科目A)で定番的に出題されています。
出題パターンは大きく3つに分かれます。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| FE H22秋 午前 問47 |
クラスとインスタンスの関係として適切なものを選ぶ問題。 | ・「クラスの定義に基づいてインスタンスが生成される」が正解 ・「1クラス=1インスタンス」はひっかけ |
| FE H29秋 午前 問47 |
「公園と代々木公園」のように、クラスとオブジェクト(インスタンス)の関係になる組を選ぶ問題。 | ・is-a関係を具体例で判断できるか ・part-of関係との混同がひっかけ |
| FE R6 科目A免除 問35 |
「私の父は公務員である」と同じインスタンスとクラスの関係になる組を選ぶ問題。 | ・「日本は国である」(is-a関係)が正解 ・「私の部屋は私の家」(part-of関係)がひっかけ |
| AP H28秋 午前 問47 |
オブジェクト指向言語のクラスに関する記述として適切なものを選ぶ問題。 | ・「オブジェクトに共通する性質を定義したものがクラス」が正解 ・インスタンス変数とクラス変数の違いがひっかけ |
📝 IPA試験での出題パターン
パターン1:「クラスとインスタンスの関係を選べ」
4つの記述から正しい関係を選ぶ形式。「1クラスに対しインスタンスは1つだけ」「インスタンスがクラスの仕様を定義する」といった主語と述語を入れ替えた選択肢がひっかけになる。
パターン2:「is-a関係の具体例を選べ」
日常の具体例を4組提示し、クラスとインスタンスの関係(is-a関係)に該当するものを選ぶ形式。part-of関係やインスタンス同士の関係がひっかけになる。
パターン3:「カプセル化との区別を問う」
FE科目Aサンプル問題 問38では、「データとメソッドをまとめて実装の詳細を隠すこと」の名称を問い、インスタンス・カプセル化・クラスタ化・抽象化から選ばせる。正解はカプセル化であり、インスタンスはひっかけ選択肢として登場する。
試験ではここまででOKです。「クラス=設計図、インスタンス=実体」「1つのクラスから複数生成できる」「is-a関係」の3点を押さえれば確実に得点できます。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. オブジェクト指向におけるインスタンスの説明として、最も適切なものはどれでしょうか?
- A. オブジェクトに共通する属性とメソッドの枠組みを定義した設計情報のことである。
- B. データとメソッドを一つにまとめ、外部から実装の詳細を見えなくする仕組みのことである。
- C. クラスの定義に基づいて生成された、具体的なデータをもつ実体のことである。
正解と解説を見る
正解:C
解説:
インスタンスは、クラスという設計図に具体的な値を与えて生成された実体です。1つのクラスから属性値の異なる複数のインスタンスを作成できる点が特徴になります。
選択肢Aはクラスの説明です。クラスは属性とメソッドの枠組みを定義した”型”であり、インスタンスそのものではありません。選択肢Bはカプセル化の説明です。データとメソッドをまとめて外部から隠蔽する仕組みはカプセル化と呼ばれ、インスタンスとは別の概念です。
よくある質問(FAQ)
Q. 「インスタンス変数」と「クラス変数」の違いは何ですか?
インスタンス変数は、生成された個々のインスタンスごとに独立して保持される変数です。先ほどの例で言えば、ポチの名前とハチの名前はそれぞれ別のインスタンス変数に格納されます。一方、クラス変数はクラス全体で共有される変数で、すべてのインスタンスから同じ値を参照します。AP H28秋 午前問47でもこの違いがひっかけ選択肢として使われました。
Q. クラウドサービスの「インスタンス」とは同じ意味ですか?
概念は共通しています。AWSやGCPで「EC2インスタンスを起動する」と言う場合、仮想マシンの構成テンプレート(AMIなど)をもとに生成された具体的なサーバー実体を指します。オブジェクト指向の「設計図から実体を生成する」という考え方がそのままクラウドの用語に転用されたものです。IPA試験ではオブジェクト指向の文脈で問われるため、クラウド側の意味は参考程度で構いません。
Q. 「インスタンス化」と「コンストラクタ」の関係を教えてください。
インスタンス化とは、クラスから実体を生成する操作そのものを指します。その操作時に自動的に呼び出される初期化処理がコンストラクタです。Pythonなら__init__メソッド、Javaならクラス名と同名のメソッドがコンストラクタに該当します。インスタンス化のタイミングで属性の初期値を設定する役割を担います。
Q. E-Rモデルの「エンティティ」と「インスタンス」の関係は?
データベース設計のE-Rモデルでも、エンティティ(実体の型)とインスタンス(個々のデータ)は1対多の関係になります。例えば「社員」エンティティに対して、山田太郎・鈴木花子といった個々のレコードがインスタンスです。R7年度 FE 科目A 公開問題 問11でこの関係が出題されており、オブジェクト指向以外の文脈でも登場する用語です。