【Ruby】レッスン2-07:breakとnextで繰り返し処理を制御しよう

一つ前のページではuntil文による繰り返し処理について学習しました。
今回は 繰り返しの制御 について見ていきましょう。
Lesson1:基礎文法編
Lesson2:制御構造編
・Lesson2-1:比較演算子と論理演算子を理解しよう
・Lesson2-2:if文による分岐処理を理解しよう
・Lesson2-3:case文による分岐処理を理解しよう
・Lesson2-4:for文による繰り返し処理を理解しよう
・Lesson2-5:while文による繰り返し処理を理解しよう
・Lesson2-6:until文による繰り返し処理を理解しよう
・Lesson2-7:繰り返しを制御しよう ◁今回はココ
・確認問題2-☆1:ハイアンドロー ゲームを作ろう
・確認問題2-☆2:数当てゲームを作ろう
・確認問題2-☆3:簡単なじゃんけんゲームを作ろう
Lesson3:メソッド編
Lesson4:コレクション編
Lesson5:オブジェクト指向編
Rubyの繰り返し制御|breakとnextの基本と使い分け方

Rubyには繰り返し処理をより柔軟にするための「break」と「next」という制御構造があります。
これらを使うことでループの中で特定の条件が満たされた際にループを中断したり、スキップして次の繰り返しに進んだりすることができます。
本記事では「break」と「next」の基本的な使い方とその違いについて解説します。
breakでループを終了する方法
「break」は、現在実行中の繰り返し処理を即座に終了させるために使用されます。
「break」が実行されると、それ以降の繰り返し処理は行われず、ループから抜け出します。
例えば次のようなコードで「break」を使用します。
# 1から10までの数字を順に出力し、5でループを終了 (1..10).each do |i| if i == 5 break # iが5の時点でループを終了 end puts i end # 出力結果: 1, 2, 3, 4
このコードでは、i
が5になると「break」によりループが終了し、1から4までが出力されます。
「break」を使用することで、指定した条件に合致した際にループを終了させることができるため、不要な繰り返しを防ぎ効率的です。
nextで処理をスキップする方法
「next」は、現在の繰り返しの処理をスキップし、次の繰り返しに進むために使用されます。
「next」が実行されると、以降の処理はスキップされて次の繰り返しが始まります。
次の例で「next」の使い方を確認しましょう。
# 1から10までの数字を順に出力し、3の倍数をスキップ (1..10).each do |i| if i % 3 == 0 next # iが3の倍数のときに次の繰り返しへ end puts i end # 出力結果: 1, 2, 4, 5, 7, 8, 10
このコードではi
が3の倍数の場合、「next」により現在の繰り返しがスキップされます。したがって3, 6, 9は出力されません。
「next」を使うことで条件に応じて特定の繰り返しだけを無視し、ループを継続することができます。
breakとnextの違いを整理しよう
「break」と「next」の違いをまとめると、以下のようになります。
- break:指定の条件を満たすとループ全体を終了します。
- next:指定の条件を満たすとその繰り返しのみをスキップし、次の繰り返しに移ります。
「break」と「next」を使い分けることで、ループ内での柔軟な制御が可能になります。
特定の条件で処理を完全に終了させたい場合は「break」を、特定の条件をスキップして次の繰り返しに進みたい場合は「next」を使います。
まとめ:繰り返し制御のベストプラクティス
Rubyの「break」と「next」は、繰り返し処理を制御するために非常に便利な機能です。
どちらもループの動作をコントロールできますが、「break」はループを完全に終了させ、「next」は特定の繰り返しだけをスキップします。
プログラムの目的に応じて、適切な方法を使い分けましょう。
練習問題|breakとnextを使ったループ制御を体験しよう

繰り返しの制御をしっかりと身に着けるため、練習問題に挑戦しましょう。
breakとnextの活用|練習問題に挑戦!
forループを使って1から10までの数を繰り返し処理し、繰り返しの途中で特定の数に応じて処理を制御するプログラムを作成しましょう。
8の時点でループを終了し、3の倍数の場合は「次の数に進む」メッセージを表示してその繰り返しだけをスキップしてください。
制御構造の「break」と「next」を使って、ループ内での条件処理を学びましょう。
以下の要件に従ってコードを完成させてください。
- forループで1から10までの数を繰り返し処理すること。
- 繰り返し処理の中で以下の条件を適用すること:
i
が8のとき、ループを終了すること(breakを使用)。i
が3の倍数のとき、「○は3の倍数です。次の数に進みます。」というメッセージを表示し、その繰り返しをスキップすること(nextを使用)。
- 条件に当てはまらない数値については、「現在の数値: ○」と表示すること。
ただし、以下のような実行結果となるコードを書くこと。
現在の数値: 1 現在の数値: 2 3は3の倍数です。次の数に進みます。 現在の数値: 4 現在の数値: 5 6は3の倍数です。次の数に進みます。 現在の数値: 7
【ヒント】自力で解くのが難しい人へ
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)1:forループを1から10まで繰り返すように設定
□ if文でiが8かどうかを判定
□ □ 真の場合、breakでループを終了
□ elsif文でiが3の倍数かどうかを判定
□ □ 真の場合、メッセージ「#{i}は3の倍数です。次の数に進みます。」を表示
□ □ nextで次のループに進む
□ 現在の数値「#{i}」を表示
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
# forループで1から10までの数を繰り返し処理 =begin 【穴埋め問題1】 ここでfor文を使って1から10までの数を繰り返し処理するコードを書いてください。 =end if i == 8 break # iが8のときにループを終了 elsif i % 3 == 0 =begin 【穴埋め問題2】 ここで3の倍数のときに「○は3の倍数です。次の数に進みます。」というメッセージを表示し、次のループに進むコードを書いてください。 =end end puts "現在の数値: #{i}" # iの値を表示 =end
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
この問題の解答例と解説
この問題の正解コードとその解説は以下の通りです。
クリックして開いて確認してください。
- 正解コード
-
# forループで1から10までの数を繰り返し処理 for i in 1..10 if i == 8 break # iが8のときにループを終了 elsif i % 3 == 0 puts "#{i}は3の倍数です。次の数に進みます。" # 3の倍数のときにメッセージを表示 next # iが3の倍数のときに次のループへ end puts "現在の数値: #{i}" # iの値を表示 end
- 正解コードの解説
-
コードをブロックごとに分割して解説します。
forループの開始
for i in 1..10
for i in 1..10
:この部分は、1から10までの数を順に取り出して変数i
に代入し、繰り返し処理を行う「forループ」です。1..10
の部分は範囲演算子を使って1から10までの範囲を指定しています。ループ内の条件分岐とbreak文
if i == 8 break # iが8のときにループを終了
if i == 8
:この条件分岐は、i
が8に達した時点で「break文」によりループを終了します。break
は繰り返し処理を途中で終わらせるための命令です。これによりi
が8以上には進まず、ループ全体が終了します。3の倍数チェックとnext文
elsif i % 3 == 0 puts "#{i}は3の倍数です。次の数に進みます。" # 3の倍数のときにメッセージを表示 next # iが3の倍数のときに次のループへ
elsif i % 3 == 0
:この部分は、i
が3で割り切れるかどうかを判定する条件分岐です。%
は「剰余演算子」と呼ばれ、i % 3
が0であればi
は3の倍数ということになります。next
:3の倍数の場合、メッセージを表示した後にnext
を使って次のループにスキップします。next
はその後の処理を飛ばし、次の繰り返しへ進むための命令です。ループ内での数値の表示
puts "現在の数値: #{i}" # iの値を表示
この部分は現在の数値(変数
i
)を表示するためのコードです。#{i}
を使うことでi
の値を文字列内に埋め込んで表示します。この行は3の倍数やi
が8になるまでの数値を表示します。
まとめ
このプログラムではforループを使って1から10までの数を繰り返し処理し、特定の条件に基づいてループを制御する方法を学びました。
break
でループを終了させたり、next
で次のループにスキップすることで、効率的な処理が可能です。
繰り返し処理や条件分岐はプログラミングの基本であり、これを理解することで様々なロジックを構築することができます。
ぜひ、他の条件や数値で試してみて理解を深めてください!
FAQ|breakとnextの使い方に関するよくある質問
- Q1. Rubyのbreakはどの種類のループでも使えますか?
-
はい、
break
はfor
ループ、while
ループ、until
ループ、each
などのイテレータ内でも使用できます。ループの種類に関係なく、特定の条件で繰り返し処理を中断したい場合に活用可能です。ただし、break
の使いどころを見誤ると、処理が途中で止まって意図しない挙動になることもあるため注意が必要です。
- Q2. Rubyでnextを使った後に実行される処理はどうなりますか?
-
next
を使った場合、次の繰り返しにスキップされるため、next
の後に記述された処理は一切実行されません。そのため、puts
などの表示処理や、変数の更新などがnext
より後ろにあると、それらがスキップされてしまうことに注意しましょう。
- Q3. breakとnextは条件分岐と一緒に使うのが一般的ですか?
-
はい、ほとんどの場合、
break
やnext
はif
文などの条件分岐と組み合わせて使用されます。条件が成立したときだけループから抜けたりスキップさせたりすることで、より柔軟で効率的なループ処理を実現できます。