自己紹介
はじめまして、はる(@lemonade_37)と申します。完全異業種からのエンジニア転職を目指して学習をしています。
概要
自分は完全未経験であり、Rubyで初めてプログラミングを学んだため、「繰り返し」と言う概念が当たり前にある前提でeach
文などの説明が始まり、 ???🧐??? となりました。
通っていたスクール内で技術面談等を利用したり、さまざまな技術記事を見たりして、
自分が理解できるまで掘り下げて考えたものをまとめました。
注意
私は前職が完全異業種であり、英語も苦手で、スクールに入って初めてプログラミングに触れました。
そんな自分が理解しづらかった部分を、同じように初めてプログラミングの概念に触れた人に向けてまとめました。
自分の復習も兼ねて、超超噛み砕いて書いているため、周りくどい書き方になっている箇所もあるかと思います。
また、初学者のため、間違っている箇所もあるかもしれませんのでその際は教えて頂けると嬉しいです🙇
ループ処理(繰り返し)とは
Ruby公式リファレンス内で探したのですが、「繰り返し」の概念自体を解説しているページは見つからなかったので自分の言葉で説明します。
一旦each
やfor
などの細かいコードの使い方は置いておいて、
ループ処理とは、繰り返すことです。
手作業で1つ1つやると大変なことも、ループ処理を使えば楽にできます。
お店の商品の値段の一覧のグループがあったとします。その値段の全ての、消費税込みの値段が知りたいとします。
値段 * 1.1
をすべての値段に1回ずつ実行するのは面倒だし大変です。
そこで、下記のようにループ処理を使えば、すべての値段にまとめて同じ計算を実行できます。
commodities = [250, 80, 500, 580, 300, 560]
commodities.each do |commodity|
puts commodity * 1.1
end
出力:
275.0
88.0
550.0
638.0
330.0
616.0
自分のようにプログラミングの概念がわからないのに、
each
はこうで…while
はこうで…似たようなの色々出てくるけど何がどう違うの🤯
というところから入ってしまうとつまづくので、
ループ処理はプログラミングの醍醐味で、たくさん繰り返す処理を楽に実行できるものなんだな、と先に理解しておくと良いと思います。
噛み砕いて考える
スクールの講師の方に技術面談で質問し、下記のようなイメージで考えるよ良いと口頭で教えていただいたのがとてもわかりやすかったため、図にしました。
for
文やeach
文の詳しい説明は割愛しますが、どちらも
「配列の要素を1つずつ順番に取り出して、その取り出したものに対して繰り返し同じ処理をする」
という動きをします。
- 図の例で言うと、配列
[1, 2, 3]
の値1
、2
、3
が順番に配列から取り出されて、変数i
に代入されます。
その後、1回のループごとにprint i * 2
が実行され、そのループの時代入されているi
の値を2倍した値が主力されています。
- ループ文の
|i|
の部分で使われているi
などの変数は、ループ処理の中で、ループする配列やハッシュなどの値を1つずつループごとに代入しています。これはループ内のみで一時的に使われる変数です。
- ループ内でしか使われないため、名前はなんでも良いです。試しに他の文字に変えてみても動作することが確認できます。(本来こんなふうにはしませんが)
[1, 2, 3].each do |abcd| print abcd end #=> 123 [1, 2, 3].each do |x| print x end #=> 123 [1, 2, 3].each do |xyyyyyyyyxyxyxyxyxyyyxyx| print xyyyyyyyyxyxyxyxyxyyyxyx end #=> 123
- では
i
とは何かというと、慣習でよく使われるものです。本来、アプリ内でループ処理を使う際には、i
ではなく、そのループを表す意味のある語句にした方が、読みやすいコードになります。
慣習として、配列など複数の値を持つものは複数形で命名し、ループ処理の変数はその単数系にすることが多いです。cats = ["Persian", "Scottish Fold", "American Shorthair", "Russian Blu"] cats.each do |cat| puts "猫種:#{cat}" end
出力: 猫種:Persian 猫種:Scottish Fold 猫種:American Shorthair 猫種:Russian Blu
まとめ
- ループ処理とは、同じことをたくさん繰り返す処理を、楽に実行できるもの
- ループ処理で出てくる
|i|
やi
などは、ループ内のみで一時的に使われる変数 - ループ内で使われる変数名はなんでも良いが、慣習としてループする配列名(英語の複数形)の単数形にすることが多い。
Rubyのループ処理の各メソッドについては、下記記事でまとめました。
ここまで読んでいただきありがとうございました!🙇
@scivolaさんよりfor
とeach
の違いについて詳しくわかりやすくコメントいただきました。
詳しく知りたい方はぜひコメントまで読んでいただけると幸いです。