💎

【Ruby 1日目】基本文法 - 変数とデータ型

に公開

はじめに

Rubyの変数とデータ型について、Ruby 3.4の仕様に基づいて解説します。Rubyは動的型付け言語であり、変数宣言時に型を指定する必要はありません。

基本概念

Rubyには主要なデータ型として、Integer(整数)、Float(浮動小数点数)、String(文字列)、Symbol(シンボル)、Array(配列)、Hash(ハッシュ)、TrueClass/FalseClass(真偽値)、NilClass(nil)があります。

変数には、ローカル変数、インスタンス変数(@変数)、クラス変数(@@変数)、グローバル変数($変数)、定数(大文字始まり)の5種類があります。

使い方

# ローカル変数
name = "Ruby"
age = 30

# インスタンス変数
@instance_var = "instance"

# クラス変数
@@class_var = "class"

# グローバル変数
$global_var = "global"

# 定数
CONSTANT = "constant"

# 各種データ型
integer = 42
float = 3.14
string = "Hello"
symbol = :ruby
array = [1, 2, 3]
hash = { key: "value" }
boolean = true
nil_value = nil

# 型確認
puts integer.class  #=> Integer
puts string.class   #=> String
puts symbol.class   #=> Symbol

よくあるユースケース

変数のスコープ管理

class Person
  @@count = 0  # クラス変数

  def initialize(name)
    @name = name  # インスタンス変数
    @@count += 1
  end

  def greet
    message = "Hello"  # ローカル変数
    puts "#{message}, I'm #{@name}"
  end

  def self.total_count
    @@count
  end
end

person = Person.new("Alice")
person.greet  #=> Hello, I'm Alice
puts Person.total_count  #=> 1

型の動的な性質を活用

def process(value)
  case value
  when Integer
    value * 2
  when String
    value.upcase
  when Array
    value.map { |v| v * 2 }
  else
    value
  end
end

puts process(5)          #=> 10
puts process("hello")    #=> HELLO
p process([1, 2, 3])     #=> [2, 4, 6]

注意点とベストプラクティス

  • ローカル変数は小文字またはアンダースコアで始める
  • 定数は再代入すると警告が出るが、エラーにはならない(freeze推奨)
  • グローバル変数は極力避け、必要な場合はモジュールの定数を使う
  • 変数名は意味のある名前を付ける(スネークケース推奨)
  • Ruby 3.0以降(3.4で強化)では、定数の凍結が推奨される

まとめ

変数とデータ型について学びました。実践的なコード例を通じて、Ruby 3.4の機能を活用できるようになりましょう。

参考資料

Discussion