バナー画像

Ruby on RailsなどのRubyを使うプログラマーなら、配列を定義するArrayクラスを使いこなせなければなりません。特に繰り返し処理と配列は相性が良いことから、配列を考えることはRubyのプログラミングの基本とも言えます。今回は、RubyのArrayクラスを使った繰り返し処理の作り方について解説します。

Rubyにおける配列の基本

システム構築のためのプログラミングでは、頻繁に配列が使われます。Rubyも例外ではありません。まずは、Rubyにおける配列の基本について解説します。

そもそもプログラム言語における配列とは連続した変数

プログラミングにおける配列とは、データを格納する変数の一種で、連続した複数の変数をまとめて扱うことも、個々の変数を個別に扱うこともできます。多くのプログラミング言語で配列をサポートしており、もちろんRubyでも利用できます。

また、プログラムでは、繰り返し処理がよく使われており、配列は繰り返し処理と相性が良いことから、実際のプログラムでよく使われる変数です。

なお、配列の基本形は、変数名[数字]であり、変数名だけでも扱えるうえ、[数字]を使って個別に使用することも可能です。さらに、[]内の数字の代わりに文字を使用するケースもあり、Ruby on Railsなどのフレームワークでよく使われています。

Ruby で配列を定義する方法

Rubyは、変数を明示的に宣言しなくても使用できます。しかし、配列は、宣言しなければ使えません。なお、Rubyで配列を宣言する基本は、[]を用いて初期化する、または、Arrayクラスを用いた配列の宣言です。

具体的は、次のとおりです。

#配列リテラルによる初期化
values = []

#例:空の配列を作る
values = []

#例:データを定義した配列を定義する
values = [ "apple", "orange", "banana", "grape" ]

なお、[]の代わりに{}を使っても定義できます。

#例:データを定義した配列を定義する
values = { "apple", "orange", "banana", "grape" }

#Arrayクラスを用いた初期化
vakues = Array.new()

#例:空の配列を作る
values = Array.new()

#例:既存の配列arrsのコピーを作る
values = Array.new(arrs)

配列はまとめても個別でも扱える

Array(配列)は、複数のデータをまとめて扱えるうえ、個々のデータも参照できるので、プログラムではよく使われる機能の一つです。さらにRubyでは、Array(配列)に適用するメソッドが用意されているので、それを使ってプログラムを作ります。

#配列を使った例
arrs = [ 100, 200, 300 ]
b = arrs #配列をまとめてコピー
print b[0] #配列の要素の1つだけ表示
#100

さらに、配列には、メソッドと組み合わせることで、配列の数を数えたり、ソートして順番を変えることも可能です。例えば、arrsというArray(配列)の個数を参照する場合は、lengthメソッドを使い、arrs.lenth として次の例のように使います。

#配列のlengthメソッドを使った例
arrs = [ 100, 200, 300 ]
text = "配列の個数は" + arrs.length.to_s + "個です。\n"
print text

他にも便利なメソッドがたくさんあるので、ぜひ、使ってください。また、Rubyのおける配列の使い方の基本を紹介した下記の記事も参考にしましょう。

Ruby入門】配列と操作(基本編)

Array(配列)を使った繰り返し処理の作り方

次から、Rubyのプログラムでよく使われる、Arrayクラスの配列を使った繰り返し処理の作り方について解説します。

Array(配列)の有無をチェックする方法

Rubyプログラムに限らず、前の処理で配列に値を代入している前提で、プログラムを書いたものの、実は前の処理では条件に合わずに、配列が空だったというケースはよくあります。そのような場合は、事前に配列に値が入っているかどうかをチェックしましょう。

なお、Rubyには、Array(配列)が空であるかをチェックするempty?メソッドが用意されています。配列に対して繰り返し処理など何かする前に、配列に値があるかをチェックして、空だったら別の処理を用意してするのが賢いプログラムの作り方です。

Array(配列)の有無の書き方の例
if arr.empty? then
  /* 配列が空だった場合の処理 */
else
  /* 配列に値がある場合の処理 */
end

eachメソッドを使った繰り返しの書き方

RubyでArray(配列)を使った繰り返し処理を作るのによく使われるのがeachメソッドです。なお、eachメソッドは、配列の先頭から最後まで順に変数に取り出して、繰り返し処理を記述する機能です。

繰り返し処理の使い方
配列名.each { |変数|
実行する処理
}

Array(配列)arrsを使った繰り返しの例
arrs = [ 10, 70, 130, 190, 250 ]
answer = 0
arrs.each { |value|
  if value < 100 then
    answer += 100
  else
    answer += value
  end
}
p answer
# 770

なお、配列の全ての値を計算して新しい配列を作ったり、条件に一致する値で新しい配列を作る場合は、mapメソッドやfilterメソッドなどでもっと簡単に書けます。そのため、なんでもeachメソッドを使うのではなく、必要に応じて適したメソッドを使いましょう。

eachメソッドの使い方は、下記の記事でも詳しく解説しているので、参照してください。
【Ruby入門】eachメソッドの使い方と応用例

index番号を使ったプログラムの書き方

Array(配列)に格納されたデータを参照する場合、通常はindex番号で参照します。そして、先ほど紹介したeachメソッドを使った繰り返し処理でも、index番号を利用できます。なお、index番号を利用するには、each_with_indexメソッドを使います。

index番号を使った繰り返し処理の使い方
配列名.each_with_index { |変数, index変数|
実行する処理
}

index番号を使った繰り返しの例
arrs = [ 10, 70, 130, 190, 250 ]
answer = 0
arrs.each_with_index { |value, index|
  if index > 1 then
    answer += value
  end
}
p answer
# 570

具体的なArray(配列)の作り方

実際のRubyのプログラムでは、配列を宣言して使うケースは少なく、先ほど解説した繰り返し処理などで配列を作り、後の処理でそれを使うのが一般的です。そこで次から、プログラムの中でよく使われるArrayクラスを用いた配列の作り方をご紹介します。

Array(配列)をコピーする

プログラムの中では、基になる配列をコピーして新しい配列を作り、そのデータを加工するケースがあります。しかし、Arrayクラスで定義されている配列は、一般的な変数と同じ書き方によるコピーはできません。例えば、aという配列をbという配列にコピーする場合、「a = b」では、bというaの配列の別名を付けることになるので注意してください。

RubyでArray(配列)のコピーを作る場合は、次の方法を用います。

a = Array[1, 2, 3, 4]
b = a.dup

また、arrayメソッドを用いて、次のように記述することも可能です。

a = Array[1, 2, 3, 4]
b = Array.new(a)

この書き方は、あえてArrayを使うことで、後でプログラムを見直す際、この変数が配列だと分かりやすくなります。

条件に合うデータだけでArray(配列)を作る

配列に接続するメソッドはたくさんあり、その中には配列内のデータを加工したり、条件に合うデータを抽出も可能です。これらのメソッドは、繰り返し処理を作らなくても使えるので、Rubyらしいプログラムを作るのに最適です。

なお、配列のデータを加工して、元の配列と同じ数の配列を作るには、mapメソッドを使います。次の例は、配列arrに格納された数値データを、全て文字列に変換した新しい配列bを作成するコードです。

#mapメソッドの例
arr = Array[1, 2, 3, 4]
b = arr.map(&:to_s)
# ["1", "2", "3", "4"]

また、条件に合うデータを抽出する処理は、selectメソッドを使います。次の例は、配列arrに格納された数値データの中から、10より大きいデータをんで新しい配列bを作成するコードです。

#selectメソッドの例
arr = Array[2, 3, 5, 7, 11, 13, 17, 19]
b = arr.select(|item| item > 10 )
# [11, 13, 17, 19]

Array(配列)の応用例

Ruby on Railなどを利用し、実際のWebシステムを作ろうと思ったら、配列は欠かせません。次からは、Rubyの実際のWebシステムでも使われる配列の応用例を紹介します。

連想配列(ハッシュ)を使う

今のWebシステムはフレームワークをよく利用しますが、そういったフレームワークでは、データベースのフィールド名をそのままプログラム中の変数名として使うと便利です。そして、そういったプログラムでフィールド名を使うとすれば、連想配列(ハッシュ)を利用します。

Rubyでは、配列の識別に数字ではなく、文字を使うことが可能で、そういった配列を連想配列(ハッシュ)と言います。なお、配列を宣言する場合は[]で囲みますが、連想配列(ハッシュ)は{}で囲むなど、似ていますが扱い方が違うので注意してください。

具体的には、次のように記述します。

#連想配列(ハッシュ)の例
arr = Array( "name" => "ruby", "version" => "2.6.3", "type" => "script", "attr" => "stable" )
print(arr["name"])
# ruby

上の書き方は「=>」を使っていましたが、「:」を使った別の書き方もあります。

#連想配列(ハッシュ)の例
arr = Array( name: "ruby", version: "2.6.3", type: "script", attr: "stable" )
print(arr[:version])
# 2.6.3

2次元配列を使う

プログラムで扱うデータを表形式で考えると解りやすいケースがありますが、そのようなプログラムで活用されるのが2次元配列です。なお、2次元配列に格納したデータは、繰り返し処理を2重に組み合わせることで参照でき、そのデータによっていろいろな処理を作ることが可能です。

#2次元配列の例
arrs = [
[ "RT101", "RT", "126.0.0.1", 1 ],
[ "AP101", "AP", "126.0.0.2", 0 ],
[ "AP102", "AP", "126.0.0.3", 0 ]
]
arrs.each { |item|
  if item[1] == "AP" then
    print(item[0], ", ", item[2], "\n")
  end
}
# AP101, 126.0.0.2
# AP102, 126.0.0.3

まとめ

Rubuに限らず、プログラムでは繰り返し処理がいろいろな場面で使われ、その中では必ずのように配列が使われています。そのため、配列の使い方は、プログラムスキルの基本とも言えます。

Ruby on Railなど、Rubyでシステム開発をやるのなら、今回紹介したArrayクラスの使い方など、配列を使った繰り返し処理の作り方をマスターしましょう。

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

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

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

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

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

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

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

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

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

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

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