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

繰り返し処理を行う上で、ある一定条件の場合処理をスキップするために利用出来るのが「next」です。

本記事では、Rubyの制御構文「next」の使い方から他の制御構文との違いについてご紹介していきます。

nextとは


nextは制御文の1つで、繰り返し処理の中で実行されることで、該当ブロックの後続処理をスキップし次の繰り返し処理が開始されます。

記述法

繰り返し処理の中で「next」と記述するだけで後続処理がスキップされます。

for ...
  処理1
  if 条件式
    next
  end
  処理2
end

上記の記述では、条件に該当して「next」が実行された場合、「処理2」に関しては実行されず次の繰り返し処理に移ります。

繰り返しのスキップは該当ブロックのみ

繰り返し処理がネストしている場合、「next」が適用されるのは該当ブロックの繰り返し処理のみとなります。

for ... // 1つ目のループ
  処理1
  if 条件式
    next
  end
  処理2
  for ... // 2つ目のループ
    処理3
    if 条件式
      next
    end
    処理4
  end
end

2つ目のループの「next」が実行された場合、あくまで「処理4」がスキップされるだけで1つ目のループまでスキップするわけではありません。

Rubyの各種繰り返し処理でnextの動きを確認


Rubyには繰り返し処理として「for」「each」「loop」「while」「times」といった各種処理が存在します。

それぞれの繰り返し処理でnextを記述して処理内容を確認してみましょう。

for

for文で「next」を実行するサンプルが下記です。

for ii in 1..5 do
  if ii == 3
    next
  end
  p ii
end

実行結果が下記です。

1
2
4
5

サンプルのfor文では「1~5」の範囲で繰り返し処理が実施され、「3」の場合だけコンソール出力処理をスキップしています。

each

each文で特定の文字列の場合「next」でスキップするサンプルが下記です。

animals = ["さる", "とり", "いぬ"]

animals.each do |animal|
  if animal == "いぬ"
    next
  end
  p animal
end

実行結果が下記です。

"さる"
"とり"

繰り返し処理の最後で「next」が実行された場合、そのまま処理が終了することになります。

loop

「loop」では終了条件のない繰り返し処理を実施することができ、下記のサンプルでは10までの数値を順番にコンソール出力するサンプルです。

num = 0
loop do
  num += 1
  if num == 3
    next
  elsif num > 10
    break
  end
  p num
end

実行結果が下記です。

1
2
4
5
6
7
8
9
10

条件として「3」の場合のみ「next」による繰り返し処理のスキップが実施されるため、コンソールには出力されません。

ポテパンダの一言メモ

loop処理は「break」で処理を中断させないと無限ループとなるため注意が必要です。

while

whileでは終了条件を指定して繰り返し処理を実施することが可能です。

num = 0
while num < 10 do
  num += 1
  next if num.even?
  p num
end

実行結果が下記です。

1
3
5
7
9

サンプルでは、「num」の値が偶数の場合「next」により処理をスキップするため、奇数の値だけがコンソール出力されます。

times

timesでは指定した回数分繰り返し処理が実行されます。

5.times do |num|
  if num == 2
    next
  end
  p num
end

実行結果が下記です。

0
1
3
4

「times」では指定した回数繰り返し処理が実施され、「|num|」と指定した変数が「0」から繰り返し毎に「1」ずつ加算されます。

サンプルでは変数numが「2」の場合処理がスキップされるため、コンソールには上記のような出力となります。

ネスト

最後にネストしたループ処理での動きも確認しておきましょう。

for i in 1..5
  p "外側のループ" + i.to_s + "回目"
  for ii in 1..3
    if ii == 2
      next
    end
    p "内側のループ" + ii.to_s + "回目"
  end
end

実行結果は下記です。

"外側のループ1回目"
"内側のループ1回目"
"内側のループ3回目"
"外側のループ2回目"
"内側のループ1回目"
"内側のループ3回目"
"外側のループ3回目"
"内側のループ1回目"
"内側のループ3回目"
"外側のループ4回目"
"内側のループ1回目"
"内側のループ3回目"
"外側のループ5回目"
"内側のループ1回目"
"内側のループ3回目"

next以外の制御構文との違い


Rubyで利用可能な繰り返し処理の制御構文として「next」以外にも「break」「redo」の存在が挙げられます。

それぞれの処理の違いについて確認しておきましょう。

break

breakは繰り返し処理を中断させるために利用します。

for i in 1..3
  if i == 2
    break
  end
  p i.to_s + "回目"
end

実行結果が下記です。

"1回目"

for文では「1~3」までの間ループすると記述していますが、2回目の処理で強制的に繰り返し処理を中断するように「break」を記述しているため、サンプルのようなコンソール出力となります。

また繰り返し処理がネストしている場合、「break」を記述したブロックの繰り返し処理のみを中断します。

for i in 1..3
  p "外側のループ" + i.to_s + "回目"
  for ii in 1..3
    if ii == 2
      break
    end
    p "内側のループ" + ii.to_s + "回目"
  end
end

実行結果が下記です。

"外側のループ1回目"
"内側のループ1回目"
"外側のループ2回目"
"内側のループ1回目"
"外側のループ3回目"
"内側のループ1回目"

内側のループでは繰り返しの2回目に必ず処理を抜けるように記述しているため、上記のような出力結果となります。

redo

「redo」では再度同じ繰り返し処理を実施します。

num = 0
animals = ["さる", "とり", "いぬ"]

animals.each do |animal|
  num += 1
  if num == 2
    redo
  end
  p animal + "が実行された際のnumの値は" + num.to_s + "です。"
end

実行結果が下記です。

"さるが実行された際のnumの値は1です。"
"とりが実行された際のnumの値は3です。"
"いぬが実行された際のnumの値は4です。"

元々「さる→とり→いぬ」の順番で繰り返し処理が実施されるはずでしたが、「redo」を使用したことにより「さる→とり→とり→いぬ」の繰り返しとなりサンプルのような出力結果となります。

さいごに: Rubyのnextを使いこなして繰り返し処理を制御しよう


本記事では、Rubyの制御構文である「next」の使い方をサンプルコードを掲載しながらご紹介してきました。

「next」などの制御構文は「if」による条件式と合わせて利用することになります。

それぞれの繰り返し処理や制御構文の違いを把握して、適切な処理を実現出来るように学習していきましょう。

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

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

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

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

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

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

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

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

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

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

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