【Ruby】レッスン4-01:配列の定義と基本操作を身につけよう

50110130

一つ前のレッスンでは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における配列の基本的な定義方法や、情報を取得するための主要なメソッドについて解説します。

配列の概要と定義方法

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

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

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

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

# 文字列を要素とする配列
arr_str = ["apple", "banana", "cherry"]

# 異なる型のデータも混在可能
mixed_arr = [1, "hello", 3.14, true]

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

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

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

arr_str = ["apple", "banana", "cherry"]
puts arr_str[ 1] #bananaが出力される

Array.newで柔軟な配列を作成する

Rubyでは配列を作成する際に便利なメソッドとして Array.new を使うことができます。

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

たとえば、以下のコードを見てみましょう。

numbers = Array.new(10) { rand(1..100) }

このコードは長さ10の配列を作成し、各要素に1から100までのランダムな整数を割り当てています。

この配列は実行するたびに異なる内容になります。

コードの詳細解説

  1. Array.new(10)
    • Array.new は、新しい配列を作成するメソッドです。
    • 引数に数字を渡すと、その数だけ要素を持つ配列が作成されます。ここでは、10個の要素を持つ配列を作成しています。
  2. { rand(1..100) }
    • ブロック {} を渡すと、各要素をどのように初期化するか指定できます。
    • この場合、rand(1..100) を使って、1から100までのランダムな整数を生成しています。
    • ブロックは配列の各要素が作られるたびに実行されるため、異なるランダム値がそれぞれの要素に割り当てられます。

ランダムな値を持つ配列の生成例

実際にコードを実行すると、以下のような配列が生成されます:

numbers = Array.new(10) { rand(1..100) }
puts numbers.inspect

このコードを実行すると、例えば以下のような結果が出力されます。

[23, 89, 45, 76, 12, 67, 34, 98, 50, 5]

このように簡潔なコードでランダム値を持つ配列を素早く作成できます。

応用例

この方法を使えば長さが異なる配列や、範囲を変えたランダム値の配列も簡単に作れます。

たとえば以下のようにしてランダムな小数値や負の値を持つ配列も作成できます。

floats = Array.new(5) { rand * 10 } # 0.0から10.0の小数
negatives = Array.new(5) { rand(-50..-1) } # -50から-1のランダムな整数

まとめ

Array.new とブロックを活用することで配列の初期値を柔軟に設定することができます。

特にランダム値を生成する際には、短いコードで効率的に処理を実現できるため非常に便利です。

ぜひ実際に手を動かして試してみてください!

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

配列に含まれる要素の数や、ランダムに要素を取得したいときなど、Rubyでは配列の情報を簡単に取得するためのメソッドがいくつか用意されています。

length メソッド

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

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

arr = [1, 2, 3, 4, 5]
puts arr.length  # 出力: 5

size メソッド

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

どちらを使っても結果は同じです。

arr = [1, 2, 3, 4, 5]
puts arr.size  # 出力: 5

sample メソッド

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

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

arr = [1, 2, 3, 4, 5]
puts arr.sample  # 出力例: 3(毎回異なる値が出力されます)

配列操作のまとめ

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の記事一覧

次のページ>>

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をコピーしました