【Ruby】Lesson4-1|配列の定義と基本操作を身につけよう

ながみえ

一つ前のレッスンではRubyのメソッドについて学習しました。

今回からは コレクション について見ていきましょう。

Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:メソッド
Lesson4:コレクション

 ・Lesson4-1:配列の基本を理解しよう ◁今回はココ
 ・Lesson4-2:配列を操作しよう
 ・Lesson4-3:配列を調査しよう
 ・Lesson4-4:配列を並び替えよう
 ・Lesson4-5:eachメソッドを理解しよう
 ・Lesson4-6:mapメソッドを理解しよう
 ・Lesson4-7:filterメソッドを理解しよう
 ・Lesson4-8:ハッシュを理解しよう
 ・確認問題4-☆1:ナインゲームを作ろう
 ・確認問題4-☆2:アラビア数字をローマ数字に変換しよう
 ・確認問題4-☆3:トランプをランダムに配ろう
Lesson5:オブジェクト指向編

<<前のページ

Rubyの記事一覧

次のページ>>

配列の基本|定義・使い方・便利メソッドを解説

Rubyでデータを整理して扱うために「配列」は欠かせないデータ構造です。

配列を使うと複数のデータを一つの変数にまとめて保存・操作でき、非常に便利です。

ここではRubyにおける配列の基本的な定義方法や、情報を取得するための主要なメソッドについて解説します。

配列とは何か?|概要と定義方法

配列とは、変数の中に「複数のデータを順序を持って格納する」ためのデータ構造です。

配列の中には数値や文字列、他の配列など、異なる型のデータを一緒に入れることができます。

Rubyで配列を定義するには[]を使います。以下に基本的な配列の定義方法を示します。

# 数値を要素とする配列
arr = [1, 2, 3, 4, 5] # 5つの数値を持つ配列を作成し、変数arrに代入

# 文字列を要素とする配列
arr_str = ["apple", "banana", "cherry"] # 3つの文字列を持つ配列を作成し、変数arr_strに代入

# 異なる型のデータも混在可能
mixed_arr = [1, "hello", 3.14, true] # 型が異なる4つのデータを持つ配列を作成し、変数mixed_strに代入

上記のように、rubyの配列は異なるデータ型を格納できるため、柔軟にデータを管理できます。

また配列の各要素には「インデックス(0から始まる番号)」でアクセスできます。

例えばarr[0]と書くと配列内の最初の要素を、arr[1]と書くと2番目の要素を取り出すことができます。

arr_str = ["apple", "banana", "cherry"]

puts arr_str[0] # appleが出力される
puts arr_str[1] # bananaが出力される
puts arr_str[2] # cherryが出力される

Array.new()メソッドで柔軟な配列を作ろう

配列を作成する際に便利な Array.new()メソッド というものがあります。

このメソッドに引数やブロックを渡すことで、配列の初期値を柔軟に設定することが可能です。

Array.new()メソッドはには複数の書き方があります。

Array.new				# 空の配列を作成
Array.new(n)			# n個のnilを持つ配列を作成
Array.new(n, obj)		# n個のobjを持つ配列を作成
Array.new(n) {ブロック}	 # ブロックを使い、要素ごとに値を設定

例を見てみましょう。

arr = Array.new				 # 要素が1つもない配列を作成|arr = []
arr = Array.new(3)			 # nilを3つ持つ配列を作成|arr = [ nil, nil, nil ]
arr = Array.new(2, "hello")	 # 2つの文字列を要素に持つ配列を作成|arr = [ hello, hello ] 
arr = Array.new(5) { |i| i } # 5つの要素にインデックス番号を入れる|arr = [0, 1, 2, 3, 4]

さらに以下のような使い方もできます。

numbers = Array.new(10) { rand(1..100) } # 100以下の乱数を10個持つ配列を作成

# 改行して書くと内容が分かりやすい
numbers = Array.new(10){
  rand(1..100)
}
# 例えば、numbers = [23, 89, 45, 76, 12, 67, 34, 98, 50, 5] などとなる。

nilやrand()メソッドによる乱数生成について復習したい方は↓↓の記事を参照してください。

あわせて読みたい
【Ruby】Lesson1-3|四則演算の基本と演算子の動きを学ぼう
【Ruby】Lesson1-3|四則演算の基本と演算子の動きを学ぼう
あわせて読みたい
【Ruby】Lesson1-5|乱数を使おう|ゲームや抽選にも使える基本
【Ruby】Lesson1-5|乱数を使おう|ゲームや抽選にも使える基本

配列のサイズや要素を取得する方法

Rubyではすでに定義された配列の情報を簡単に取得するためのメソッドがいくつか用意されています。

配列の中に含まれる要素の数を知りたい場合や、配列内の要素をランダムに取得したいときなどに使用できます。

length メソッド

配列の要素数(長さ)を取得するにはlength メソッドを使います。

配列にいくつの要素があるかを知りたいときに便利です。

arr = [1, 2, 3, 4, 5]	# 5つの要素を持つ配列arrを定義
puts arr.length			# 配列arrにlengthメソッドを使用して要素数を取得し、putsで出力

このコードの出力結果は以下の通り。

5

size メソッド

size メソッドも length と同じく配列の要素数を取得します。

どちらのメソッドを使っても結果は同じです。

arr = [1, 2, 3,] # 3つの要素を持つ配列arrを定義
puts arr.size	 # 配列arrにsizeメソッドを使用して要素数を取得し、putsで出力

このコードの出力結果は以下の通り。

3

sample メソッド

sample メソッドを使うと配列からランダムに一つの要素を取得できます。

ランダムな要素を必要とする場合に重宝します。

arr = [1, 2, 3, 4, 5]	# 5つの要素を持つ配列arrを定義
puts arr.sample			# 配列arrにsampleメソッドを使用して要素を1つ取得し、putsで出力

このコードの出力結果は、例えば以下のようになります。(毎回違う結果が出力されます)

3

配列の出力|pメソッドとinspectメソッドの違い

単純にputsメソッドで配列を出力すると、要素を1つずつ出力するため少し見にくくなってしまいます。

配列を出力する際には pメソッド を使いましょう。

arr_1 = [1, 2, 3]
arr_2 = [4, 5, 6]
puts arr_1	# 配列をputsメソッドで出力
p arr_2		# 配列pメソッドで出力

このコードを実行すると、以下のように出力されます。

1
2
3
[4, 5, 6]

なお、テキストによっては、下記のようにputsメソッドと inspectメソッド を使用するように指示している場合があります。

puts arr_2.inspect

この場合も出力結果はpメソッドと同じです。

ふたつの主な違いは戻り値にあります。

項目pメソッドinspectメソッド
出力内容inspect形式で出力inspect形式で出力
戻り値オブジェクトそのものnil
改行ありあり

通常はpメソッドを使用しておけば問題ありません。

まとめ|配列を使いこなそう

Rubyで配列を扱うことで複数のデータを効率的に管理できるようになります。

さらにlengthsizesample などのメソッドを使うことで、配列の情報を簡単に取得し、必要な操作がしやすくなります。

配列を使いこなして、データの処理をスムーズに行いましょう。

練習問題|配列の基本操作を実践しよう

配列をしっかりと身に着けるため、練習問題に挑戦しましょう。

配列の作成・情報取得・ループ処理の練習

Rubyで配列を使っていくつかの基本操作を練習しましょう。

1から5までの整数を持つ配列を作成し、配列の要素数を取得したり、ランダムに要素を選択するコードを記述してください。

またfor文を用いて配列の各要素を順に表示する処理も加えてください。

最後にメソッドを使って配列の内容とサイズを表示するコードも作成しましょう。

以下の要件に従ってコードを完成させてください。

  • 配列 numbers を作成し、1から5までの整数を格納すること。
  • 配列の内容を puts メソッドで表示すること。
  • length メソッドを使って配列の要素数を取得し、表示すること。
  • sample メソッドを使って配列からランダムに1つの要素を取得し、表示すること。
  • for 文を使って配列の各要素を順に表示すること。
  • 配列の内容とサイズを表示する display_array_info メソッドを作成し、配列 numbers を引数として呼び出すこと。

ただし、以下のような実行結果となること。

配列の内容: [1, 2, 3, 4, 5]
配列のサイズ: 5
配列からランダムに選ばれた要素: 3
配列の各要素:
1
2
3
4
5
渡された配列の内容: [1, 2, 3, 4, 5]
渡された配列のサイズ: 5

【ヒント】自力で解くのが難しい人へ

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:配列 numbers を1から5までの整数で作成
2:puts で配列の内容を表示
3:length メソッドで配列の要素数を取得し、puts で表示
4:sample メソッドで配列からランダムに1つの要素を取得し、puts で表示
5:puts で「配列の各要素:」と出力
6:for 文を使って配列の各要素を順に出力するループを開始
  □ puts で各要素を表示
7:メソッド display_array_info を定義し、配列の情報を表示
  □ puts で渡された配列の内容を表示
  □ puts で渡された配列のサイズを表示
8:display_array_info メソッドを呼び出し、配列 numbers の情報を表示

Q
ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

# 配列を作成します(1から5までの整数が入った配列)
=begin
【穴埋め問題1】
ここに1から5までの整数を格納した配列を作成し、変数numbersに代入してください。
=end
puts "配列の内容: #{numbers}" # 配列の内容を表示

# lengthメソッドを使って配列の要素数を取得
=begin
【穴埋め問題2】
ここで配列の要素数を取得し、「配列のサイズ:」の後に表示してください。
=end

# sampleメソッドを使って配列の中からランダムに一つの要素を取得
=begin
【穴埋め問題3】
ここでsampleメソッドを使用して、配列からランダムな要素を取得し、変数random_elementに代入してください。
=end
puts "配列からランダムに選ばれた要素: #{random_element}"

# ここではfor文を使って配列の各要素を順に表示します
puts "配列の各要素:"
=begin
【穴埋め問題4】
ここでfor文を使って配列の各要素を順に表示するコードを書いてください。
=end

# 配列の内容とサイズを表示する
=begin
【穴埋め問題5】
ここにdisplay_array_infoというメソッドを定義し、引数で受け取った配列の内容とサイズを表示するコードを書いてください。
=end

# メソッドを呼び出して配列の情報を表示
display_array_info(numbers)

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

この問題の解答例と解説

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
# 配列を作成します(1から5までの整数が入った配列)
numbers = [1, 2, 3, 4, 5]
puts "配列の内容: #{numbers}" # 配列の内容を表示

# lengthメソッドを使って配列の要素数を取得
puts "配列のサイズ: #{numbers.length}"

# sampleメソッドを使って配列の中からランダムに一つの要素を取得
random_element = numbers.sample
puts "配列からランダムに選ばれた要素: #{random_element}"

# ここではfor文を使って配列の各要素を順に表示します
puts "配列の各要素:"
for num in numbers
  puts num
end

# 配列の内容とサイズを表示する
def display_array_info(arr)
  puts "渡された配列の内容: #{arr}"
  puts "渡された配列のサイズ: #{arr.size}" # sizeメソッドを使ってもサイズが取得できます
end

# メソッドを呼び出して配列の情報を表示
display_array_info(numbers)
Q
正解コードの解説

コードをブロックごとに分割して解説します。

配列の作成

numbers = [1, 2, 3, 4, 5]
  • ここではnumbersという変数に1から5までの整数を格納した配列を代入しています。
  • Rubyでは[](角括弧)を使って簡単に配列を作成でき、複数の値を扱うときに便利です。

配列の内容を表示

puts "配列の内容: #{numbers}"
  • putsメソッドを使って配列の内容を出力しています。
  • #{}の中に変数名を入れると、その変数の値が文字列の中に挿入されます。
  • 今回はnumbers配列全体が表示され、出力は「配列の内容: [1, 2, 3, 4, 5]」となります。

配列の要素数を取得

puts "配列のサイズ: #{numbers.length}"
  • lengthメソッドを使うと配列の要素数を取得できます。
  • 今回のnumbers配列には5つの要素があるため、出力は「配列のサイズ: 5」となります。
  • 配列の要素数を知りたいときに便利です。

配列からランダムな要素を取得

random_element = numbers.sample
puts "配列からランダムに選ばれた要素: #{random_element}"
  • sampleメソッドを使うことで、配列の中からランダムに1つの要素を取得できます。
  • numbers.sampleで取得した要素は変数random_elementに代入され、その値が表示されます。
  • このように配列の中からランダムに選びたいときにsampleは非常に役立ちます。

for文で配列の各要素を順に表示

puts "配列の各要素:"
for num in numbers
  puts num
end
  • for文を使って配列の各要素を順に表示しています。
  • for num in numbersでは、numbers配列から1つずつ要素を取り出し、変数numに代入しています。
  • その後puts numで各要素が順に出力されます。配列の全要素を処理したいときに便利な方法です。

メソッドを使って配列の情報を表示

def display_array_info(arr)
  puts "渡された配列の内容: #{arr}"
  puts "渡された配列のサイズ: #{arr.size}"
end

display_array_info(numbers)

display_array_infoメソッドは配列を引数として受け取り、その配列の内容と要素数を表示するためのものです。

ここで使用されているsizeメソッドもlengthと同じように要素数を取得します。

メソッドを作成しておくと同じ処理を繰り返し利用できるため、プログラムがすっきりまとまります。

まとめ

このコードを通じてRubyで配列を扱う基本的な方法を学びました。

配列の作成、要素数の取得、ランダムな要素の選択、各要素の順次表示、そしてメソッドによる情報表示を組み合わせることで、Rubyで配列を自在に操作できるようになります。

これらの基本操作をしっかり理解し、さまざまな配列操作に挑戦してみましょう!

もっと分かりやすいサイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいRuby学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

Rubyの記事一覧

次のページ>>

FAQ|Rubyでの配列定義と基本操作

Q
Q1. Rubyで配列を定義するにはどう書けばいいですか?Array.newとの違いは?

Rubyでは角括弧 [] を使って配列を定義するのが基本です。例えば [1, 2, 3] のように書きます。一方、Array.new は配列の初期値や要素数を柔軟に指定したい場合に使います。

Q
Q2. Rubyで配列の要素数を調べるにはlengthとsizeのどちらを使えばよいですか?

どちらも機能は同じで、好みに応じて使えます。length は意味が直感的で、size は他のデータ型(文字列など)にも共通する汎用的な表現として利用されます。

Q
Q3. sampleメソッドとは何ですか?どんな場面で使われますか?

sample は配列からランダムに1つの要素を取り出すメソッドです。ランダムな選択肢を表示したり、簡易的な抽選処理に使われることが多く、ゲームやシミュレーションにも役立ちます。

記事URLをコピーしました