• Xでシェア
  • LINEでシェア
  • このエントリーをはてなブックマークに追加

Ruby eachの使い方

この記事のポイント

  • Rubyでの繰り返し処理の基本的な仕組み
  • 配列とハッシュでのeachメソッドの使い分け
  • 実際の開発で使える実用的なコード例

目次

Rubyのeachとは?

Rubyのeachメソッドは、配列やハッシュなどのコレクション要素に対して順番に処理を実行するためのメソッドです。プログラミングにおける繰り返し処理の中でも最も基本的な機能の一つです。eachメソッドを使用することで、配列の各要素やハッシュの各キーと値のペアに対して同じ処理を効率的に適用できます。forループやwhileループと比較して、より直感的で読みやすいコードを書くことができます。

【関連】
Rubyをもっと詳しく学ぶならpaizaラーニング

基本構文

eachメソッドの基本的な構文は非常にシンプルです。配列の場合は「配列名.each do |変数名|」で始まり、「end」で終わります。ブロック内に記述した処理が各要素に対して実行されます。ハッシュの場合は、キーと値の両方を扱うため「|キー, 値|」のように二つの変数を指定します。1行で書く場合は波括弧を使用し、複数行の場合はdo...endを使用するのが一般的です。以下に基本的な使用例を示します。

animals = ['イヌ', 'ネコ', 'ウサギ'] animals.each do |animal| puts animal end

出力結果:

イヌ
ネコ
ウサギ
animal_sounds = { 'イヌ' => 'ワンワン', 'ネコ' => 'ニャー' } animal_sounds.each do |animal, sound| puts "#{animal}は#{sound}と鳴きます" end

出力結果:

イヌはワンワンと鳴きます
ネコはニャーと鳴きます

実用例

ここからは、実際の開発現場でよく使用されるeachメソッドの実践的な使用例を紹介します。単純な要素の表示から、条件分岐を含む複雑な処理、ハッシュを使ったデータ管理まで、様々なシチュエーションでのコード例を通じて理解を深めましょう。各例では、実際に動作するコードとその出力結果を併せて示しており、コピーして実行することで動作を確認できます。これらの例を参考に、自分のプログラムにeachメソッドを活用してみてください。

配列の要素を順番に表示

最も基本的な使い方として、配列に格納された動物の名前を順番に表示する例です。データベースから取得したリストを表示する場合などでよく使用される処理パターンです。

pets = ['ハムスター', 'インコ', 'カメ', 'キンギョ'] pets.each do |pet| puts "ペットの#{pet}がいます" end

出力結果:

ペットのハムスターがいます
ペットのインコがいます
ペットのカメがいます
ペットのキンギョがいます

インデックス付きで要素を表示

配列の要素を処理する際に、何番目の要素かを同時に知りたい場合があります。each_with_indexメソッドを使用すると、要素と一緒にインデックス番号も取得できます。

zoo_animals = ['ライオン', 'ゾウ', 'キリン'] zoo_animals.each_with_index do |animal, index| puts "#{index + 1}番目の動物: #{animal}" end

出力結果:

1番目の動物: ライオン
2番目の動物: ゾウ
3番目の動物: キリン

条件分岐を含む処理

eachメソッドのブロック内では条件分岐も使用できます。特定の条件を満たす要素のみに処理を適用したい場合に便利で、フィルタリング処理としてよく使われます。

animals = ['イヌ', 'ネコ', 'ウマ', 'ウシ'] animals.each do |animal| if animal.length == 2 puts "#{animal}は2文字の動物です" end end

出力結果:

イヌは2文字の動物です
ネコは2文字の動物です
ウマは2文字の動物です
ウシは2文字の動物です

ハッシュのキーと値の処理

ハッシュに格納された動物とその特徴のペアを処理する例です。実際のアプリケーションでは、ユーザー情報や商品情報などの辞書型データを扱う際によく使用されるパターンです。

animal_info = { 'パンダ' => '白黒', 'フラミンゴ' => 'ピンク', 'ペンギン' => '白黒' } animal_info.each do |name, color| puts "#{name}の色は#{color}です" end

出力結果:

パンダの色は白黒です
フラミンゴの色はピンクです
ペンギンの色は白黒です

数値の計算処理

配列に格納された数値に対して計算処理を行う例です。ここでは動物の年齢データを処理して、人間の年齢に換算する計算を行い、結果を表示する処理を示しています。

dog_ages = [1, 3, 5, 7] dog_ages.each do |age| human_age = age * 7 puts "イヌの#{age}歳は人間の#{human_age}歳相当です" end

出力結果:

イヌの1歳は人間の7歳相当です
イヌの3歳は人間の21歳相当です
イヌの5歳は人間の35歳相当です
イヌの7歳は人間の49歳相当です

文字列の操作

配列の各要素に対して文字列操作を行う例です。動物の名前に対して文字数をカウントし、名前と文字数を組み合わせて表示する処理を示しています。

birds = ['スズメ', 'カラス', 'ハト'] birds.each do |bird| puts "#{bird}(#{bird.length}文字)" end

出力結果:

スズメ(3文字)
カラス(3文字)
ハト(2文字)

複数の配列を同時処理

zipメソッドと組み合わせることで、複数の配列を同時に処理できます。動物の名前と年齢を別々の配列で管理している場合の処理例で、関連するデータを組み合わせて表示します。

animals = ['タロウ', 'ハナ', 'ポチ'] ages = [3, 2, 5] animals.zip(ages).each do |name, age| puts "#{name}は#{age}歳です" end

出力結果:

タロウは3歳です
ハナは2歳です
ポチは5歳です

ネストした配列の処理

二次元配列や複雑なデータ構造を持つ配列を処理する例です。動物の種類と複数の個体名を管理するデータ構造で、階層的な情報を整理して表示する処理を示しています。

animal_groups = [['ネコ', ['タマ', 'シロ']], ['イヌ', ['ポチ', 'ハチ']]] animal_groups.each do |species, names| puts "#{species}の仲間:" names.each { |name| puts " - #{name}" } end

出力結果:

ネコの仲間:
  - タマ
  - シロ
イヌの仲間:
  - ポチ
  - ハチ

まとめ

Rubyのeachメソッドは、配列やハッシュなどのコレクション要素に対して繰り返し処理を行う際の基本的なメソッドです。シンプルな構文でありながら、条件分岐や計算処理、文字列操作などさまざまな場面で活用できる汎用性の高い機能です。実際の開発では、データの表示や変換、集計処理などで頻繁に使用されるため、しっかりと使い方をマスターしておくことが重要です。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. Rubyのリファレンス記事一覧
  4. Ruby eachの使い方