【Ruby入門】ループ処理まとめ|for・times・while・each・upto・downto・step・loop

Rubyのループの処理 基礎から発展まで解説

どうも、フリーエンジニアの長瀬です。

Rubyのループの処理は配列やハッシュのメソッドまで含めると多くの種類があります。その中にはとても強力で便利なものもたくさんあるので、今のうちにいつでも使えるようにしておきましょう。

この記事では、配列やハッシュのループについて

「基礎的ループ」を8つと、「発展的なループ」で「next」「redo」「breakなどの特殊メソッドや、配列、ハッシュのループメソッドを解説していきます。

基礎的なループ

shutterstock_483904459

for

まずはおなじみfor文からです。

for文は基本的に指定した範囲オブジェクトの範囲分同じ処理を繰り返したり、配列の要素を順番に取得したい場合に使用します。

例えば範囲オブジェクトを指定する場合は、

[実行結果]

この処理では範囲オブジェクトを「1..5」で指定していますので処理を5回繰り返しています。

範囲オブジェクトについて理解が浅いと感じる方はこちらの記事を一読することをおすすめします。

また、配列の中身を順番に出力したい時は以下のように記述します。

[実行結果]

このように範囲オブジェクトの代わりに配列を記入すれば、出力することができます。

for文については、以下の記事でも詳しく解説しています。

each

先ほどfor文を解説しましたが、for文は実は配列のループではあまり使われません。

よく使用されるのは「eachメソッド」です。

eachメソッドは配列や範囲オブジェクトで使用できるメソッドで、オブジェクトに含まれる要素を順番に取得することができます。

配列の場合は

[実行結果]

ハッシュの場合は

[実行結果]

このようにfor文と似ていますが、書き方や英語の意味的にも直感的なため、配列の場合、実際の開発ではよくeachが使用されます。

while

whileでは指定した条件がtrueである間ループします。

for文は指定した要素分繰り返し処理を行うのに対して、while文は条件式がfalseになるまで処理を繰り返し行います

[実行結果]

上記の例ようにnumに値をループのたびに加算して、 num<=12がfalse になったときにループが終了するようにしています。

また、whileはこのようにも書けます。

[実行結果]

こちらの書き方では、doを省略しています。

until

untilでは指定した条件がfalseである間ループします。

whileが条件がtrueの間繰り返すのに対して、こちらはfalseの間繰り返すメソッドになります

[実行結果]

このように、num <=12 を満たした瞬間にループが終了しました。

loop

loopを使えば、breakでループを終了させない限りループし続ける処理を実装できます。

[実行結果]

さきほどのwhileと同じ処理を実装していますが、loopの場合はifである条件に達したらbreakで抜けています。

またloopはこのようにも書けます。

[実行結果]

times

任意の回数ループさせるときにはtimesが便利です。指定した回数分だけループさせることができます。

[実行結果]

始めの数字の部分(今回は3)を変えれば、任意の回数ループさせることができます。

なので、timesはこのようにも書けます。

[実行結果]

upto、downto

upto指定した数に到達するまでループで、その間に変数が1ずつ増加します。

downtoは名前のとおりuptoの反対で指定した数に到達するまでループで、その間に変数が1ずつ減少します。

[uptoの場合] [実行結果] [downtoの場合] [実行結果] 名前も直感的で非常にわかりやすいメソッドです。

step

さきほど紹介したtimesでは、実は任意の整数しか指定できませんでしたが、stepを使えば少数も扱えます

[実行結果]

このように、6.0まで1.2ずつを3.6を増加させるループを実装できました。

また、stepはこのようにも書けます。

[実行結果]

prime

任意の数までの素数を出力したい場合にはPrimeが便利です。

[実行結果]

このように任意の数までの素数の個数分だけループできます。

また、Primeはこのようにも書けます。

[実行結果]

ちょうどう7まで、4個の素数があるので、4回のループになりました。
素数の数でループの回数が決まるっておしゃれですよね。

発展的なループ

shutterstock_391103527

途中からループ内の処理をスキップ

nextを使えば、それ以降の処理を飛ばしてループを続けられます

[実行結果]

このように1の時はnext以降の「p num」が飛ばされて、1が出力されないことを確認できます。

途中からもう一度ループをやり直す

redoを使えば、もう一度そのループの始め方処理を繰り返すことができます。

[実行結果]

このように2が2回繰り返されています。

これはnum==1 のときにredoが働いてもう一度そのループを始めから読み込んだからです。

途中でループを抜ける

次は途中からループを抜けてみましょう。
途中からループを回すのと同じく、条件分岐で書いていきます。

[実行結果]

このように、breakを使えば、ループを任意のタイミングで抜け出すことができます。

複数個でループする

「二個ずつループを回したい!」や「二個ずつずらしてループを回したい」というのはよくあることです。

そんな時に役に立つのが「each_sliceメソッド」と「each_consメソッド」です!

まず、「each_sliceメソッド」について解説していきます。
each_sliceは引数に与えられた数ずつループを回します。

[実行結果]

このように配列で二個ずつのループになっていることがわかります。

次に[1,2],[2,3],[3,4]という風に、二個ずつずらしてループを回す方法について紹介します。
その時に使用するのが「each_consメソッド」です。

[実行結果]

このように二個ずつずらしてループになっていることがわかります。

インデックスをとりながらループ

eachで回すと、インデックスを取ることはできません。インデックスを取りたい時はeach_with_indexメソッドを使用する必要があります。

[実行結果]

このようにインデックスを取れていることがわかります。

その他ハッシュや配列のループまとめ

ハッシュのeachを使ったループメソッドはこちらにまとめられていますので、参考にしてみてください。

こちらの記事では配列とハッシュで使える繰り替えしメソッドを数多く紹介しています。

まとめ

いかがでしたでしょうか?

この記事では、配列やハッシュのループを解説しました。

基本的なループには

  • for
  • each
  • while
  • loop
  • times
  • upto
  • downto
  • step
  • prime


と計8個のループがありましたね。

機能が重複している部分もありますが、それぞれ個性があるのでここぞという場面で使用していきたいですね。

また、その他の配列やハッシュで用意されているメソッドを含めるとRubyのループ処理の数がとても多く表現が豊かだということに驚かされます

早い段階で覚えておいて損はないので、ぜひ自分でコードを叩いて試してみてください。

もし配列やハッシュのループ処理について忘れてしまったらこの記事を確認してくださいね!

Rubyカリキュラム無料公開中!

この記事はRuby入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Ruby学習に必要な情報を一つにまとめていますので効率よくRubyを学ぶことが出来ます。この機会に是非活用していただければと思います。

【Ruby入門ガイド】アプリ開発で知っておくべき知識を総ざらい
更新日 : 2018年11月23日

Rubyを最短で習得したい方へ

近年では様々なWEBサービスが流通するようになりました。

WEBサービスの普及が進むにつれて、それらを素早く開発するのに長けたRubyの人気は今後さらに増し、Rubyエンジニアの需要も自ずと増えることは間違いなしでしょう。

元々ITリテラシーの高い方や他言語を習得している方であれば、独学でRubyを習得することが可能です。

ただし、プログラミング学習をしている方の多くは

「自分に合った教材が見つけられずに挫折してしまった」
「勉強のための勉強になってしまい、ゴールが見えない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決するのに何日もかかってしまう」

このような悩みを抱えたまま挫折してしまうのが現実となっています。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
  • WEBアプリケーション開発までしっかりサポートして欲しい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、初心者の方がつまづきがちな、「CookPad」、「Wantedly」、「食べログ」のようなWEBアプリケーション開発方法もスムーズに学習することできます。

実際にオリジナルWEBアプリを開発し、成果物として認められて仕事獲得に成功した塾生は数多くいます。

このように、オリジナルアプリ開発から仕事獲得まで徹底的にサポートすることでプログラミング初心者の方でも安心して基礎学習に取り組むことができます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

Rubyならではの学習方法や、現役フリーランスRubyエンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像から弊社サービス内容をご確認ください。

ruby_a2
LINEで送る
Pocket

書いた人

長瀬来

長瀬来

Unityを使ったiOSアプリのリリース、フリマサイト運営の経験があります。

経験した言語はC、C#、Javascript、R、Python、Ruby、PHPなど

言語が好きで、英語や中国、ドイツ語を勉強しました。
将来的には海外で生活したいです。

現在はRuby on Rails5やCocos2dxの勉強を主にしています。

ライターとしては
できるだけ初心者にわかりやすい文章になるように心がけています。

趣味は語学、読書です。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説