【Ruby】レッスン4-05:配列のeachメソッドを理解しよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:eachメソッド

この記事の練習問題を解くために必要な知識:
基礎文法、制御構造、メソッド(レッスン1~3)配列の基本配列の操作配列の調査配列の並び替えeachメソッドmapメソッドfilterメソッドハッシュ

<<前のページ Ruby記事一覧 次のページ>>

Rubyの「eachメソッド」とは

この章では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メソッドを使うことで、単純な出力だけでなく複雑な処理も簡単に記述できます。

まとめ

Rubyの「eachメソッド」は、配列操作を効率化するための基本中の基本です。

繰り返し処理を簡潔に記述できるため、特に配列やデータの操作において非常に便利です。

今後はさらに高度なメソッド(mapfilterなど)と組み合わせることで、より柔軟な処理が可能になります。

まずはこのeachメソッドをマスターし、Rubyの基本スキルを磨きましょう!

配列の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 "処理が終了しました。"

正解コードの解説

今回作成したRubyコードは配列をループして各要素を取り出し、その平方を計算して表示するプログラムです。

コードの構造をブロックごとに分けて詳しく解説します。

配列の定義

numbers = [1, 2, 3, 4, 5]
  • numbersという名前の配列を作成し、[1, 2, 3, 4, 5]を格納しています。
  • 配列とは複数の値を順序よく格納するデータ構造で、各要素に番号(インデックス)を付けて管理します。この場合、配列には5つの整数が含まれています。

eachメソッドの使用

numbers.each do |num|
  puts "現在の数字は #{num} です。"
  puts "その平方は #{num ** 2} です。"
end
  1. eachメソッド:
    • Rubyで配列の各要素を順に取り出して処理を実行するためのメソッドです。
    • do |num| ... endの部分はブロックと呼ばれ、|num|は取り出した要素を受け取る変数です。
    • ここでは、配列numbersの各要素が1つずつnumに代入され、ブロック内の処理が実行されます。
  2. 平方の計算:
    • num ** 2は、numの2乗(平方)を計算します。**はRubyの累乗演算子です。
  3. 出力処理:
    • putsを使って、「現在の数字」と「その平方」を表示しています。#{}内に変数や式を記述すると、文字列の中にその結果が埋め込まれます(これを式展開と言います)。

処理完了メッセージの出力

puts "処理が終了しました。"

プログラムの最後に処理が終了したことを示すメッセージを表示しています。

まとめ

このプログラムではRubyのeachメソッドを使った配列のループ処理を学びました。

eachメソッドは配列の要素を順に取り出して処理を繰り返す便利なメソッドです。

ぜひこのプログラムを参考にして、他の配列やデータを使ったループ処理にも挑戦してみてください!

配列の操作を身につけることは、Rubyプログラミングの重要な基礎になります。

<<前のページ Ruby記事一覧 次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    Rubyのテキスト&問題集トップへ戻る
    トップページへ戻る