Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

システム開発において、条件に一致している間または指定した回数処理を繰り返すという実装は頻繁に行われます。

本記事では、Rubyで繰り返し処理を実施する際に利用する「for」文について、サンプルコードを掲載しながらご紹介していきます。

for文の基本的な使い方


for文は繰り返しを行うための処理構文で、範囲を指定した上で繰り返したい処理を定義します。

基本構文

for文の基本的な記述方法は下記の通りです。

for 変数 in オブジェクト do
  繰り返し処理
end
ポテパンダの一言メモ

「do」は省略可能です。

サンプル

for文で指定するオブジェクトには「範囲オブジェクト」や「配列オブジェクト」「マップオブジェクト」が利用されます。

範囲オブジェクト

範囲オブジェクトは「最初の値..最後の値」の形式で記述します。

for range in 1..5 do
  p(range)
end

実行結果

$ruby sample.rb
1
2
3
4
5

サンプルの場合、範囲オブジェクトとして指定した「1~5」の値が順番に変数「range」に格納され、繰り返し処理として指定したコンソール出力が順番に実行されます。

配列オブジェクト

配列オブジェクトを範囲として指定した場合のサンプルも確認してみましょう。

for range in [1, 2, 3, 4, 5] do
  p(range)
end

もちろん一旦変数オブジェクトに格納してfor文に記述することも可能です。

arrayObj = [1, 2, 3, 4, 5]
for range in arrayObj do
  p(range)
end

実行結果

$ruby sample.rb
1
2
3
4
5

処理の詳細に関しては範囲オブジェクトの場合と同じです。

マップオブジェクト

マップオブジェクトを利用する場合、変数を2つ用意して「key」と「value」をそれぞれ格納します。

mapObject = {"犬" => "ぽち", "猫" => "たま", "鳥" => "ぴよ"}

for var1, var2 in mapObject
  p "var1の値は" + var1 + "、var2の値は" + var2
end

実行結果

$ ruby sample.rb
"var1の値は犬、var2の値はぽち"
"var1の値は猫、var2の値はたま"
"var1の値は鳥、var2の値はぴよ"

「var1」にはマップオブジェクトのkeyとなる値が格納されており、「var2」にはvalueとなる値が格納されます。

for文を使ったパターン別サンプルコード


for文を使った処理では、繰り返し処理の途中で条件を設定し、「中断」「スキップ」「再実行」といった任意の処理を実行させることも可能です。

サンプルコードで各処理内容を確認していきましょう。

breakで処理を終了

「break」を記述した場合、繰り返し処理の途中だとしても中断させることが可能です。

例えば下記のサンプルでは値が「3」の場合に、繰り返し処理を終了するように記述しています。

for range in 1..5 do
  if range == 3
    break
  end
  p(range)
end

実行結果

$ruby sample.rb
1
2

サンプルの場合、コンソール出力を実施する前に値が「3」かどうかを確認し、「3」の場合には繰り返し処理を抜けるように記述しています。

ちなみにbreakではプログラム自体を終了させるわけではありませんので、下記のような2重ループの処理では内側のループのみを中断し外側のループの続きから再実行されます。

for num1 in 1..5 do
  p num1
  for num2 in 6..10 do
    p num2
    break
  end
end

実行結果

$ ruby sample.rb
1
6
2
6
3
6
4
6
5
6

nextで処理をスキップ

上記「break」で利用したサンプルを「next」に修正するとどのような動きになるか確認してみましょう。

for range in 1..5 do
  if range == 3
    next
  end
  p(range)
end

実行結果

$ruby sample.rb
1
2
4
5

「next」を指定した場合、該当する条件の値のみ処理をスキップし、次の値から引き続き処理が続行されるためサンプルのような出力結果となります。

redoで再実行

同じくサンプルコードを「redo」に修正して実行してみましょう。

今回は少しサンプルコードに処理を追加します。

ポテパンダの一言メモ

下記の記述で実行すると無限ループとなるため注意してください
3の値で再実行が繰り返されるため処理を抜けることが出来ません。

for range in 1..5 do
  if range == 3
    redo
  end
  p(range)
end

例えば値が「3」の場合にrangeに「5」を代入してみましょう。

for range in 1..5 do
  if range == 3
    range = 5
    redo
  end
  p(range)
end

実行結果

$ ruby sample.rb
1
2
5
4
5

redoの処理では、for文の評価を再度実行するのではなく、for文内に記述された処理内容のみが再度実行されます。

つまりredoの処理が完了した後、for文で行われる評価は代入した「5」の続きからではなく、元々の値である「3」の次の値「4」として処理が実行されるということです。

for文とその他繰り返し処理の違い


for文以外にもRubyで利用可能な繰り返し処理はいくつか存在します。

よく利用される処理をピックアップしてご紹介していきたいと思います。

while文

while文では指定した条件が「true」の間繰り返し処理が実施されます。

num = 1
while num <= 5 do
  p(num)
  num = num + 1
end

実行結果

$ ruby sample.rb
1
2
3
4
5

サンプルでは評価対象の変数「num」に初期値として1を代入し、「num」の値が5までの間処理を継続するよう記述しています。

each文

each文は主に配列の値を使って繰り返し処理を実施する際、利用されます。

arrayObj = ["犬", "猫", "猿", "鳥", "魚"]
arrayObj.each do |obj|
  p(obj)
end

実行結果

$ ruby sample.rb
"犬"
"猫"
"猿"
"鳥"
"魚"

loop文

loop文では、上述した「brek」を利用して処理を強制的に終了させない限り、繰り返し処理が継続されます。

num = 1
loop {
  p(num)
  if(num == 5)
    break
  end
  num = num + 1
}

実行結果

$ ruby sample.rb
1
2
3
4
5

times文

times文では指定した回数だけ、繰り返し処理が実施されます。

5.times do |num|
  p num
end

実行結果

$ ruby sample.rb
0
1
2
3
4

「指定回数.times」の形で繰り返し回数を指定することが可能です。

さいごに: Rubyのfor文はシステム開発の必須処理


本記事では、Rubyで繰り返し処理を記述する際に利用する「for」文の使い方についてサンプルコードを掲載しながらご紹介していきました。

for文を使用した繰り返し処理は、ほとんどのシステム開発で利用されています。

Rubyプログラマーとしての必須知識と言えますので、今回ご紹介した基本を押さえて応用的な処理も徐々に理解出来るよう学習していきましょう。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。