【Ruby】配列の基本:作成・追加・削除とeach

Ruby

こんにちは、かつコーチです。

「複数のデータをまとめて扱いたいけど、配列の操作方法が覚えられない」。

Ruby学習を始めたばかりの方から、よく聞く悩みです。

この記事では、配列の作成方法から、要素の追加・削除、eachを使ったループ処理までを解説します。

読み終える頃には、配列を使った基本的な処理を自分で書けるようになります。

基本の書き方

配列の作成

配列とは、複数のデータを順番に並べて1つの変数にまとめたものです。

[]で囲んで、カンマ区切りで要素を書くと配列を作成できます。

fruits = ["りんご", "みかん", "ぶどう"]
puts fruits.inspect
# => ["りんご", "みかん", "ぶどう"]

numbers = [1, 2, 3, 4, 5]
puts numbers.inspect
# => [1, 2, 3, 4, 5]

要素を取り出すときは、[インデックス]を使います。

インデックスは0から始まる点に注意してください。

fruits = ["りんご", "みかん", "ぶどう"]

puts fruits[0]
# => りんご

puts fruits[2]
# => ぶどう

puts fruits[-1]
# => ぶどう(末尾の要素)

要素の追加:push・unshift

配列の末尾に要素を追加するにはpushメソッド(または<<)を使います。

fruits = ["りんご", "みかん"]

fruits.push("ぶどう")
puts fruits.inspect
# => ["りんご", "みかん", "ぶどう"]

fruits << "もも"
puts fruits.inspect
# => ["りんご", "みかん", "ぶどう", "もも"]

配列の先頭に要素を追加するにはunshiftメソッドを使います。

fruits = ["みかん", "ぶどう"]

fruits.unshift("りんご")
puts fruits.inspect
# => ["りんご", "みかん", "ぶどう"]

要素の削除:pop・shift

配列の末尾から要素を取り除くにはpopメソッドを使います。

fruits = ["りんご", "みかん", "ぶどう"]

removed = fruits.pop
puts removed
# => ぶどう

puts fruits.inspect
# => ["りんご", "みかん"]

配列の先頭から要素を取り除くにはshiftメソッドを使います。

fruits = ["りんご", "みかん", "ぶどう"]

removed = fruits.shift
puts removed
# => りんご

puts fruits.inspect
# => ["みかん", "ぶどう"]

popshiftはどちらも、取り除いた要素を戻り値として返します。

削除した値をそのまま使いたい場面で便利です。

eachでのループ処理

eachとは、配列の要素を先頭から1つずつ取り出して、同じ処理を繰り返すメソッドのことです。

fruits = ["りんご", "みかん", "ぶどう"]

fruits.each do |fruit|
  puts "#{fruit}が好きです"
end
# => りんごが好きです
# => みかんが好きです
# => ぶどうが好きです

do |fruit| ... endの部分をブロックと呼びます。

|fruit|には、配列から取り出した要素が1つずつ入ります。

インデックスも一緒に使いたい場合は、each_with_indexメソッドが便利です。

fruits = ["りんご", "みかん", "ぶどう"]

fruits.each_with_index do |fruit, index|
  puts "#{index}番目: #{fruit}"
end
# => 0番目: りんご
# => 1番目: みかん
# => 2番目: ぶどう

よくあるつまずきポイント・エラー対処

存在しないインデックスを指定したときの挙動

私がRubyを学び始めた頃、配列の範囲外を指定してエラーになると思い込んでいました。

❌ Before

fruits = ["りんご", "みかん"]

puts fruits[5]
# => nil

if fruits[5].length > 0
  puts "要素があります"
end
# => undefined method `length' for nil:NilClass (NoMethodError)

存在しないインデックスを指定すると、エラーにはならずnil(何もないことを表す値)が返ってきます。

そのnilに対して.lengthのようなメソッドを呼んだ瞬間、NoMethodErrorが発生してしまいました。

✅ After

fruits = ["りんご", "みかん"]

if fruits[5]
  puts "要素があります: #{fruits[5]}"
else
  puts "指定した位置に要素はありません"
end
# => 指定した位置に要素はありません

配列の要素を使う前に、nilではないかを確認する習慣をつけることで防げるエラーです。

まとめ

この記事のポイント

  • 配列は[]で作成し、[インデックス]で要素を取り出す
  • 追加はpush(末尾)・unshift(先頭)
  • 削除はpop(末尾)・shift(先頭)で、取り除いた値が戻り値になる
  • eachでループ、each_with_indexでインデックス付きループができる
  • 存在しないインデックスを指定するとnilが返るため、使う前に確認する

次に読むべき記事

配列の次は、キーと値のペアでデータを扱うハッシュを学びましょう。

「ハッシュの基本:キーと値の扱い方」で、ハッシュの基本操作を解説しています。

タグ: #Ruby #初心者向け #基本文法

タイトルとURLをコピーしました