

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
インスタンス変数とは?初心者にもわかる基本の解説
プログラミングを学ぶときに出てくる言葉のひとつにインスタンス変数があります。これはオブジェクト指向プログラミングの基本で、オブジェクトごとに値を保存する箱のような役割をします。ここでは中学生にもわかるように、やさしく丁寧に解説します。
まず大切なことは、インスタンス変数が「そのオブジェクト固有の情報を入れる場所」である点です。例えばゲームのキャラクターを考えると、名前や体力、位置などはキャラクターごとに違います。これらを入れておくのがインスタンス変数です。同じ種類のキャラクターでも属性の値はそれぞれ異なります。これがインスタンス変数の基本イメージです。
インスタンス変数とクラス変数の違い
インスタンス変数は各オブジェクトごとに値を持ち、クラス変数はクラスそのものに対して1つの値を共有します。具体的には次のような違いがあります。
| 変数の種類 | 保存場所 | 特徴 | 例 |
|---|---|---|---|
| インスタンス変数 | 各オブジェクトごと | オブジェクトごとに値が異なる | self.name, obj.color |
| クラス変数 | クラスそのもの | すべてのオブジェクトで共有 | ClassName.count |
| ローカル変数 | メソッド内 | 宣言した範囲でのみ有効 | x |
わかりやすい例
具体的な例として犬を表す Dog クラスを想像してみましょう。実際のコードは以下のようなイメージです。
Python風のイメージ:class Dog: def __init__(self, name): self.name = name self.age = 0
この例では self.name がインスタンス変数です。Dog クラスから作られた別の犬には別々の name が入り、他の犬の name には影響を与えません。反対にクラス変数は犬の数を数えるための共通の情報として使われることがあります。インスタンス変数とクラス変数は使い分けることが大切です。
最後に覚えておきたい点をまとめておきます。インスタンス変数はオブジェクトごとに個別の値を保持するため、オブジェクト指向の基本原則である「オブジェクトはデータと処理をひとつにまとめて扱う」という考え方に直結します。初心者のうちは、まず「どの変数がオブジェクトにひもづくのか」を意識して設計すると理解が深まります。
インスタンス変数の同意語
- インスタンスフィールド
- 各インスタンスに紐づく変数(フィールド)で、オブジェクトの個別データを表します。
- フィールド
- クラス内で定義され、各インスタンスごとに値を保持するデータ。オブジェクトの属性を指す用語です。
- メンバ変数
- クラスのメンバのうち、インスタンスごとに保持される変数のこと。
- インスタンスメンバ変数
- インスタンスに属するメンバ変数の別称。インスタンスごとのデータを表します。
- オブジェクトの属性
- オブジェクトが持つ性質・データを指す表現。インスタンス変数が格納する値を指す場合が多いです。
- オブジェクトの状態を表すデータ
- 現在のオブジェクトの値の組み合わせを表すデータで、変数の値の集合です。
- クラスのインスタンスに紐づくデータ
- 各インスタンスが個別に保持するデータで、オブジェクトの実態を構成します。
- インスタンス固有データ
- 各インスタンスごとに固有に持つデータのこと。
- オブジェクト内部データ
- オブジェクトが内部で保持するデータ全体を指します。
- オブジェクトのフィールド
- オブジェクトが持つデータの一種で、インスタンスごとに値を保持します。
インスタンス変数の対義語・反対語
- クラス変数(静的変数)
- インスタンスではなく、クラス自体に属する変数。全てのインスタンス間で共有されるため、個々のオブジェクトに固有の値は持ちません。
- ローカル変数(局所変数)
- 特定のメソッドやブロック内でのみ有効な変数。オブジェクトの属性として保存されることはなく、関数の実行範囲を超えません。
- グローバル変数
- プログラム全体から参照可能な変数。特定のインスタンスには依存せず、ファイルやモジュールを超えて使われることがあります。
- クラス属性
- クラス自体に紐づく属性。インスタンス変数とは別物で、クラス全体で共有される性質を持つことがあります。
- 引数・パラメータ変数
- メソッドに渡される入力値を格納する変数で、オブジェクトのインスタンスの状態を表す変数ではありません。
インスタンス変数の共起語
- クラス変数
- クラス自体で共有される変数。各インスタンスではなく、同じクラスに属するすべてのオブジェクトで値が共有されます。言語によって表現は異なり、Ruby なら @@var、Java なら static 変数などと表現されます。
- メンバ変数
- インスタンスごとに保持される変数。オブジェクトの状態を表す値を格納します。言い換えればそのオブジェクト固有のデータです。
- フィールド
- クラスのデータを格納する領域の総称。言語によってはインスタンス変数やクラス変数を指すこともあり、オブジェクトの属性を表します。
- 属性
- オブジェクトが持つ性質を表す値のこと。インスタンス変数を指す場合もあります。
- プロパティ
- 値の取得と設定を統一的に扱う仕組み。ゲッターとセッターを使い、外部からの直接参照を制御します。
- ゲッター
- インスタンス変数の値を取得する専用のメソッド。外部から値を読むために使われ、直接変数を参照させない設計に役立ちます。
- セッター
- インスタンス変数に値を設定する専用のメソッド。値の検証を挟んで変更を受け付けることが多いです。
- 初期値
- インスタンス変数に初期から設定される値。デフォルト値として使われることが多く、コンストラクタで変更されます。
- コンストラクタ
- オブジェクトを生成するときに呼ばれる初期化メソッド。インスタンス変数の初期化を行います。
- 初期化メソッド
- オブジェクトを使える状態にするための処理。言語によって呼び方が異なり、Ruby の initialize などがあります。
- this
- 現在のオブジェクトを指すキーワード。主に Java や JavaScript、C++ などでインスタンス変数へアクセスします。
- self
- 現在のオブジェクトを指す参照。主に Ruby などで使われ、インスタンス変数へアクセスする場合に用います。
- スコープ
- インスタンス変数が参照できる範囲のこと。クラスの外部からは基本的に見えないようにする設計が一般的です。
- アクセス修飾子
- 変数の参照可否を制御する仕組み。public, private, protected などがあり、外部からのアクセスを制限します。
- カプセル化
- データと手続きの実装を分離し、インスタンス変数を外部から直接触らせずゲッターやセッター経由でアクセスさせる設計思想。
- オブジェクト指向
- インスタンス変数はオブジェクトの状態を表す要素の一つで、クラスとオブジェクトを中心に設計するプログラミングの考え方です。
- オブジェクト
- インスタンス変数を保有し、状態と挙動を持つ具体的な実体。
インスタンス変数の関連用語
- インスタンス変数
- オブジェクトの各インスタンスごとに保持される変数。オブジェクトの状態を表すデータを格納する。
- クラス変数
- クラス自体に紐づく共有変数。全インスタンスで共有され、クラスの状態を表すことが多い。
- ローカル変数
- メソッド内など、特定のスコープ内でのみ有効な変数。外部からは見えない。
- グローバル変数
- プログラム全体から参照可能な変数。名前空間によって管理されることが多い。
- メンバ変数
- クラスの内部で定義される変数の総称。インスタンス変数やクラス変数を含むことが多い。
- フィールド
- データを格納する要素。言語ごとに呼び方が異なるが、実質インスタンスが保持するデータのこと。
- アクセサ / Getter / Setter
- インスタンス変数の値を取得・設定するためのメソッドの総称。
- Getter
- 値を読み取るためのメソッド。
- Setter
- 値を書き換えるためのメソッド。
- カプセル化
- データと挙動をオブジェクト内部に閉じ、外部からの直接参照を制限する原則。
- オブジェクト指向プログラミング
- データと処理をオブジェクトとして組み合わせる設計思想。
- クラス
- 共通の属性と挙動を定義する設計図。
- オブジェクト
- クラスから生成される実体。状態と挙動を持つ。
- スコープ
- 変数が有効な範囲。どこから参照できるかを決定。
- 可視性
- 変数やメソッドのアクセス範囲のこと。
- アクセス修飾子
- public / protected / private など、アクセスを制御する構文要素。
- private
- クラス内からのみアクセス可能な可視性。
- public
- どこからでもアクセス可能な可視性。
- protected
- 同一クラスとサブクラスからアクセス可能な可視性。
- デフォルト値
- 初期値を明示しなくても入る初期値。言語により異なる。
- 初期化子 / コンストラクタ
- 新しいオブジェクトを生成した際に呼ばれる初期化用のメソッド。
- コンストラクタ
- オブジェクト生成時に実行される初期化メソッド。
- initialize
- Ruby などで使われる、コンストラクタ相当の初期化メソッド名。
- this
- 現在のオブジェクトを指すキーワード。インスタンス変数へアクセスする際に使う(言語依存)。
- self
- 現在のオブジェクトを指すキーワード。主に Ruby / Python で使われる。
- @変数
- Ruby のインスタンス変数の表記。例: @name。
- self.変数
- Python のインスタンス変数の参照表現。
- this.変数
- Java / JavaScript 等でのインスタンス変数参照表現。
- attr_accessor / attr_reader / attr_writer
- Ruby でアクセサを自動生成する宣言。読取・書き込みのAPIをまとめて作る仕組み。
- データ隠蔽
- 内部データの直接参照を制限し、公開APIのみを介して操作させる考え方。
- 属性
- オブジェクトが持つ性質を表すデータの総称。インスタンス変数の内容を表すことが多い。
- ヒープ
- オブジェクトが格納される代表的なメモリ領域。インスタンスは通常ここに配置される。
- 参照渡し
- オブジェクトの参照を他へ渡す動作。複数の場所で同一オブジェクトを共有する。
- 値渡し
- 値そのものを渡す動作。オブジェクトの場合はコピーになることが多い。
インスタンス変数のおすすめ参考サイト
- インスタンス変数(インスタンスフィールド)とは
- 【Java】クラス変数(static変数)とは?インスタンス変数との違い
- インスタンス変数とは?意味をわかりやすく解説 - trends
- インスタンス変数とは?意味をわかりやすく解説 - trends



















