【Ruby】レッスン4-05:eachメソッドで配列を繰り返し処理しよう

一つ前のページでは配列の並び替えについて学習しました。
今回は eachメソッド について見ていきましょう。
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の「eachメソッド」とは

Rubyでは配列の各要素に対して繰り返し処理を行う場合に「eachメソッド」を使用します。
このメソッドは初心者にとっても非常に理解しやすく、実践的な方法です。
配列操作を効率化し、コードを簡潔に保つための基本技術として、まずは基本から学びましょう。
eachメソッドの基本的な役割とは?
「eachメソッド」は、配列の各要素に対して繰り返し処理を行うためのメソッドです。
このメソッドは配列内の要素を順番に処理し、指定されたブロック(do...end
または{...}
)の中で任意の操作を実行します。
たとえば配列の中身を順番に出力するだけでなく、計算や条件付き処理も簡単に行えます。
eachメソッドの主な特徴は以下の通りです。
- 配列内の全ての要素に処理を実行する。
- Rubyのコードを簡潔かつ読みやすくできる。
- ブロック内で要素を自由に操作できる。
eachメソッドの書き方と基本構文の解説
まず基本的な構文を見てみましょう。
# 基本構文 配列.each do |変数| # 繰り返し処理 end
以下に具体的なコード例を示します。
# 配列の各要素を出力する例 numbers = [1, 2, 3, 4, 5] numbers.each do |num| puts num end
このコードを実行すると以下のように出力されます。
1 2 3 4 5
このコードでは、配列numbers
の各要素が順番にnum
に代入され、puts
で出力されています。
条件分岐や合計計算での実践的なeachの使い方
もう少し実践的な例を見てみましょう。
条件付き処理
配列内の偶数だけを出力したい場合:
# 偶数を出力する numbers = [1, 2, 3, 4, 5] numbers.each do |num| if num.even? # 偶数かどうかを確認 puts num end end
このコードを実行すると以下のように出力されます。
2 4
合計値の計算
配列内の全ての要素の合計を計算する場合:
# 配列の合計を計算する numbers = [1, 2, 3, 4, 5] sum = 0 numbers.each do |num| sum += num end puts "合計: #{sum}"
このコードを実行すると以下のように出力されます。
合計: 15
このようにeachメソッド
を使うことで、単純な出力だけでなく複雑な処理も簡単に記述できます。
eachメソッドのまとめ
Rubyの「eachメソッド」は、配列操作を効率化するための基本中の基本です。
繰り返し処理を簡潔に記述できるため、特に配列やデータの操作において非常に便利です。
今後はさらに高度なメソッド(map
やfilter
など)と組み合わせることで、より柔軟な処理が可能になります。
まずはこのeachメソッド
をマスターし、Rubyの基本スキルを磨きましょう!
練習問題|eachメソッドを使って配列をループ処理しよう

eachメソッドをしっかりと身に着けるため、練習問題に挑戦しましょう。
eachメソッドでループ処理を体験してみよう
eachメソッドを使用して配列のループ処理を学習する練習問題です。
配列に含まれる各要素を順に取り出し、それぞれの要素を表示するプログラムを作成してください。
また取り出した要素の平方を計算して表示する処理も追加してください。
最後に処理が完了したことを示すメッセージを出力してください。
以下の要件に従ってコードを完成させてください。
- 配列
numbers
を作成し、[1, 2, 3, 4, 5]
を格納すること。 each
メソッドを使用して配列の各要素を順に取り出すこと。- 各要素を取り出した際に、その値を
"現在の数字は X です。"
の形式で出力すること(Xは要素の値)。 - 各要素の平方を計算し、
"その平方は Y です。"
の形式で出力すること(Yは平方の値)。 - 最後に
"処理が終了しました。"
というメッセージを出力すること。
ただし、以下のような実行結果となるコードを書くこと。
現在の数字は 1 です。 その平方は 1 です。 現在の数字は 2 です。 その平方は 4 です。 現在の数字は 3 です。 その平方は 9 です。 現在の数字は 4 です。 その平方は 16 です。 現在の数字は 5 です。 その平方は 25 です。 処理が終了しました。
【ヒント】自力で解くのが難しい人へ
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)1:配列numbersを定義し、[1, 2, 3, 4, 5]を格納
2:eachメソッドを使用して配列numbersの各要素を順に取り出す処理を開始
□ ループ内で現在の数字を表示
□ 取り出した数字の平方を計算し、その結果を表示
3:「処理が終了しました。」というメッセージを出力
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
# 配列を定義 numbers = [1, 2, 3, 4, 5] # eachメソッドを使用して配列をループ =begin 【穴埋め問題1】 ここで配列numbersの各要素を順に取り出すコードを書いてください。 =end # 取り出した値を表示 =begin 【穴埋め問題2】 ここで取り出した値を表示するコードを書いてください("現在の数字は X です。"の形式)。 =end # 取り出した値の平方を計算して表示 =begin 【穴埋め問題3】 ここで取り出した値の平方を計算し、"その平方は Y です。"の形式で表示するコードを書いてください。 =end # 出力の完了を通知 puts "処理が終了しました。"
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
この問題の解答例と解説
この問題の正解コードとその解説は以下の通りです。
クリックして開いて確認してください。
- 正解コード
-
# 配列を定義 numbers = [1, 2, 3, 4, 5] # eachメソッドを使用して配列をループ numbers.each do |num| # 取り出した値を表示 puts "現在の数字は #{num} です。" # 取り出した値の平方を計算して表示 puts "その平方は #{num ** 2} です。" end # 出力の完了を通知 puts "処理が終了しました。"
- 正解コードの解説
-
コードをブロックごとに分割して解説します。
配列の定義
numbers = [1, 2, 3, 4, 5]
numbers
という名前の配列を作成し、[1, 2, 3, 4, 5]
を格納しています。配列とは複数の値を順序よく格納するデータ構造で、各要素に番号(インデックス)を付けて管理します。この場合、配列には5つの整数が含まれています。
eachメソッドの使用
numbers.each do |num| puts "現在の数字は #{num} です。" puts "その平方は #{num ** 2} です。" end
each
メソッド:- Rubyで配列の各要素を順に取り出して処理を実行するためのメソッドです。
do |num| ... end
の部分はブロックと呼ばれ、|num|
は取り出した要素を受け取る変数です。- ここでは、配列
numbers
の各要素が1つずつnum
に代入され、ブロック内の処理が実行されます。
平方の計算:
num ** 2
は、num
の2乗(平方)を計算します。**
はRubyの累乗演算子です。
出力処理:
puts
を使って「現在の数字」と「その平方」を表示しています。#{}
内に変数や式を記述すると文字列の中にその結果が埋め込まれます(式展開)。
処理完了メッセージの出力
puts "処理が終了しました。"
プログラムの最後に処理が終了したことを示すメッセージを表示しています。
まとめ
このプログラムではRubyのeach
メソッドを使った配列のループ処理を学びました。
each
メソッドは配列の要素を順に取り出して処理を繰り返す便利なメソッドです。
ぜひこのプログラムを参考にして、他の配列やデータを使ったループ処理にも挑戦してみてください!
配列の操作を身につけることは、Rubyプログラミングの重要な基礎になります。
FAQ|eachメソッドの使い方と応用に関するよくある質問
- Q1. Rubyのeachメソッドはどんな場面で使うと効果的ですか?
-
eachメソッドは配列の全要素に対して同じ処理を繰り返したいときに最適です。特に出力処理や合計の計算、条件によるフィルタリングなど、処理がシンプルな場合にコードを簡潔に保つことができます。
- Q2. Rubyのeachメソッドとfor文の違いは何ですか?
-
eachメソッドはRubyらしい書き方で、ブロックを使った柔軟な処理が可能です。一方でfor文はC系言語に似た構文で、同様の処理ができますが、eachの方がブロック内での変数のスコープが安全なため、Rubyではeachの使用が推奨されます。
- Q3. eachメソッド内でbreakやnextは使えますか?
-
はい、eachメソッドのブロック内でもbreakやnextを使用できます。breakはループを途中で終了させ、nextは次のループ処理へスキップさせます。特定条件で処理を制御したいときに非常に便利です。