●学校情報

講座一覧・募集状況

学習方法

学習サポート

修了生の評価

受講生の横顔

当学院について

入学相談

入学手続

 

●講座情報

技術者養成講座

プログラミング講座

WEB講座

情報処理試験講座

Excel講座

Access講座

 

●関連コラム

関連コラム

関連用語集

 

logo

 

 

関連用語集

Rubyのクラス変数(@@変数)とは?全インスタンスで共有する値を管理する

Rubyのクラス変数(@@変数)は、クラスとそのすべてのインスタンス間で共有される変数です。 @@count のように、@@ を変数名の先頭に付けて定義します。

クラス全体で共通のデータを扱いたいときに便利ですが、使い方に注意が必要な変数でもあります。

クラス変数の基本

class Dog
  @@count = 0

  def initialize
    @@count += 1
  end

  def self.total
    puts "作られた犬の数:#{@@count}"
  end
end

Dog.new
Dog.new
Dog.total  # → 作られた犬の数:2

この例では、@@countすべてのDogインスタンスで共有されていることがわかります。

クラスメソッドと相性が良い

クラス変数は、クラスメソッド(self.method名)からも直接参照・更新できます。

class Counter
  @@value = 0

  def self.increment
    @@value += 1
  end

  def self.show
    puts @@value
  end
end

Counter.increment
Counter.increment
Counter.show  # → 2

インスタンス変数との違い

項目インスタンス変数クラス変数
書き方@name@@name
有効範囲インスタンスごとクラス全体で共有
初期値nil(未設定でも使える)初期化しないとエラー

継承に関する注意点

class Animal
  @@count = 0
end

class Cat < Animal
  def initialize
    @@count += 1
  end
end

class Dog < Animal
  def initialize
    @@count += 1
  end
end

Cat.new
Dog.new
puts "動物の数:#{@@count}"  # → エラーや想定外の動作に注意

クラス変数は、継承先のクラスとも共有されるため、クラス単位で独立した変数がほしい場合は @変数クラスインスタンス変数 を使う方が安全です。

クラスインスタンス変数との違い

@変数 をクラス定義の中で使うと、「クラス自身に属するインスタンス変数」になります。 これは継承先で共有されません。

class Example
  @value = 100

  def self.show
    puts @value
  end
end

Example.show  # → 100

クラス変数の使いどころ

  • 全インスタンスで共通の値をカウント・記録したいとき
  • グローバル変数を避けつつ、共有データを扱いたいとき
  • シンプルな用途で、継承による影響がない場合

まとめ

Rubyのクラス変数(@@変数)は、クラス全体とそのインスタンスで共有される変数です。 initialize 内での使用やクラスメソッドとの併用で、共通のカウント・設定などに役立ちます

ただし、継承や複雑な構造の中で使うと予期しない挙動になることがあるため、必要最低限の用途に絞って使うのがおすすめです。

 

Ruby関連用語集

−−−−−  Ruby  −−−−−

Rubyのオブジェクト指向とは?クラスやメソッドの仕組みをわかりやすく解説

Rubyのクラス(Class)とは?オブジェクトの設計図を学ぼう

Rubyのモジュール(Module)とは?コードを整理・共有する仕組みを学ぼう!

Rubyのメソッド(Method)とは?定義と使い方をやさしく解説

Rubyのブロック(Block)とは?繰り返しやコールバック処理に使える便利な仕組み

Rubyのイテレータ(Iterator)とは?繰り返し処理の基本をマスターしよう!

RubyのEnumerableモジュールとは?便利な繰り返し処理を一気に習得!

RubyのProc(プロック)とは?ブロックをオブジェクト化して使いこなそう

RubyのLambda(ラムダ)とは?Procとの違いも含めてやさしく解説!

Rubyのシンボル(Symbol)とは?文字列との違いと使いどころをわかりやすく解説

Rubyのハッシュ(Hash)とは?キーと値のペアでデータを扱う基本構造

Rubyの配列(Array)とは?基本構文と便利な操作方法をマスターしよう!

Rubyのスコープ(Scope)とは?変数の見える範囲を理解しよう

Rubyのインスタンス変数(@変数)とは?クラスでデータを保持する基本

Rubyのクラス変数(@@変数)とは?全インスタンスで共有する値を管理する

Rubyの定数(Constant)とは?値を固定するための書き方と使い方

Rubyのグローバル変数($変数)とは?使い方と注意点をやさしく解説

Rubyのself(自己参照)とは?使い方と意味をやさしく解説!

Rubyの継承(Inheritance)とは?コードの再利用と拡張の基本

Rubyのミックスイン(Mixin)とは?モジュールで機能を共有する方法

Rubyのメソッドのオーバーライド(Override)とは?継承したメソッドを再定義しよう

Rubyの例外処理(Exception Handling)とは?エラー発生時の安全な対処法

Rubyのbegin-rescue-end構文とは?エラーを安全に処理する基本構文

Rubyのyield(ブロック呼び出し)とは?ブロックの使い方と柔軟なメソッド設計

Rubyのrequire / loadとは?外部ファイルの読み込み方法と使い分け

Rubyのgem(RubyGems)とは?便利なライブラリの管理方法を解説!

Bundlerとは?Rubyのgemを簡単に管理できる便利ツール

RubyのRakeとは?ビルドやタスクを自動化する便利ツールを解説!

IRB(Interactive Ruby)とは?Rubyを手軽に試せる対話型ツール

Rails(Ruby on Rails)とは?Webアプリ開発の強力フレームワーク

 

 

学校案内

17,000円の講座から!

質問には24時間以内に返答・質問回数は無制限など万全の学習サポート!

是非ご閲覧下さい!

札幌情報技術学院インターネットカレッジ トップページ