プログラミング言語Rubyの配列の使い方を、Ruby初心者向けに解説します。
本記事では、Ruby on RailsでのWEB開発経験がある筆者が、Ruby配列の説明・使い方・配列でよく使うeachメソッド・重要なメソッド6つ・ハッシュ(連想配列)について詳しく解説します。スマホでも見やすい図を使用しています。
Ruby初心者でも、本記事でRubyの配列の基礎をマスターできる内容です。ぜひ最後まで読んで、Ruby配列を理解してください!
公開日:2016年8月25日
Ruby 配列とは?
まずは配列とは何かについて図を使って説明します。
配列とは、データをたくさん詰められるタンスのような役割です。そして、データ1つ1つは箱のようなもので、要素と呼んでいます。
例えば、「前田」・「佐藤」・「鈴木」という名前(文字列)を格納する配列のイメージは下の図のようになります。
箱1つ1つには番号が振られていて、この番号を添字と呼んでいます。添字は0から始まります。
以上がRuby 配列についての大まかな説明です。配列がどんなものかをイメージできたと思いますので、次からは具体的なソースコードで、配列の使い方を解説していきます。
\文字より動画で学びたいあなたへ/
Udemyで講座を探す >Ruby 配列の使い方
Rubyで配列を作るには、[と]の間にカンマで要素を区切って並べます。例えば、animalsという配列の変数を用意して、「”dog”」・「”cat”」・「”bird”」という文字列(値)を格納してみます。
animals = [“dog”, “cat”, “bird”]
簡単ですよね?これが配列の一番基本的な部分です。次からは、配列の要素の取り出し方や、要素の値を変える方法について解説します。
配列の要素を取り出す
配列の要素を取り出すには、「配列名[添字]」と記述します。添字は0から始まるので注意してください。では、具体的なソースコードを紹介します。
【添字が0の要素を取り出す】
puts animals[0]
【結果】
“dog”
特に難しい部分はないでしょう。
配列の要素の値を変える
配列の要素の値を変えるには、値を変えたい要素を取り出してから新たな値を代入します。
【添字が1の要素の値を変える】
animals[1] = “elephant”
puts animals[1]
【結果】
elephant
これも特に難しい部分はないでしょう。
配列に要素を追加する
配列に要素を追加するには、<<演算子(メソッド)を使います。例えば、上記の変数animalsに”tiger”を追加して表示してみましょう。
【”tiger”を追加して表示してみる】
animals << “tiger”
puts animals[3]
【結果】
tiger
<<演算子(メソッド)で追加した要素は配列の一番最後に追加されます。なので、”tiger”の添字は3ですね。
Ruby 配列には、<<演算子(メソッド)意外にも便利なメソッドがたくさん用意されています。次の章では、Ruby 配列で最も頻繁に使うメソッドを紹介します。
Ruby 配列でeachメソッドを使ってみよう!
配列には、便利なメソッドがたくさん用意されています。その代表的なメソッドがeachメソッドです。
eachメソッドを学習するには、「ブロック」と「ブロックパラメータ」についての理解が必要なので、まずはそれらについて簡単に解説します。
ブロック、ブロックパラメータとは?
プログラミング言語Rubyでは、メソッドを呼び出すときに、ブロックと呼ばれるコードのかたまりを渡すことができます。例を1つ紹介します。
【例】
3.times do |i|
print i.to_s + “,”
end
【結果】
0 , 1 , 2 , (2017.12.7 訂正)
ここでは、変数iをto_sメソッドで文字列に変換する必要がありますので、上記のコードとなります。
ブロックとは、doからendまでのプログラムのひとかたまりの部分のことです。ブロックを渡されたtimesメソッドは、数値の回数(3)だけブロックを繰り返し実行します。
また、ブロックには|と|で囲んでブロックパラメータと呼ばれるものを指定できます。上の例では、iがブロックパラメータです。
timesメソッドは、iの値を0から2まで1ずつ増やしながら、繰り返しブロックを実行します。その結果、iの値が3回表示されます。これを踏まえて、eachメソッドを見ていきましょう。
eachメソッドの使い方
では、eachメソッドを使ってみます。eachメソッドは、ブロックパラメータ(次の例ではfruite)に配列の要素を順に入れながら、配列の要素数だけブロックを繰り返し実行します。配列の要素を順番に表示するには、eachメソッドを使うのが一般的です。
【eachメソッドの具体例】
array = [“りんご”, “桃”, “メロン”]
array.each do |fruite|
print fruite + “、”
end
【結果】
りんご、桃、メロン、(2017.12.7 訂正)
「fruite」というブロックパラメータに、配列の要素(りんご、桃、メロン)が順番に入っていくイメージですね。
まだまだある!Ruby 配列の便利なメソッド
Ruby 配列に用意されているメソッドはeachメソッド以外にもたくさんあります。その中でも、特によく使うメソッドを6つ紹介します。
lengthメソッド
lengthメソッドでは、配列の要素の数を調べることができます。具体例を紹介します。
【lengthメソッドの具体例】
colors = [“赤”, “青”, “緑”]
puts colors.length
【結果】
3
配列colorsの要素の数は確かに3つですね。特に難しいメソッドではないでしょう。
empty?メソッド
empty?メソッドでは、配列が空かどうかを調べることができます。空ならtrueを、空でないならfalseを返します。では、具体例です。
【empty?メソッドの具体例】
colors = [“赤”, “青”, “緑”]
puts colors.empty?
【結果】
false
配列colorsは要素を3つ持っているので、空ではありません。なので、結果はfalseとなります。
include?メソッド
include?メソッドは、メソッドに取った引数が配列に含まれている時にtrueを返します。含まれていなければfalseを返します。いわば配列の検索機能みたいなものです。
【include?メソッドの具体例】
sports = [“野球”, “テニス”, “サッカー”]
if sports.include?(“テニス”)
puts “含まれています。”
end
【結果】
含まれています。
※if~endがわからない人は、Rubyのif文について解説した記事をお読みください。
include?メソッドの引数である「”テニス”」は確かに配列sportsに含まれていますね。
all?メソッド
all?メソッドでは、配列の「すべての要素が条件を満たす」かどうかを調べることができます。例えば、numbersという配列を用意して、その要素がすべて0より大きいかを調べてみます。
【all?メソッドの具体例】
numbers = [1, 5, 18]
if numbers.all?{|item| item > 0}
puts “OK”
end
【結果】
OK
「item」の部分の名前は特に決まりはありません。この例だと、要素はすべて0より大きいので「”OK”」と表示されました。
any?メソッド
any?メソッドは、allメソッドと少し似ています。all?メソッドでは、配列の「すべての要素が条件を満たす」かどうかを判定していました。any?メソッドでは、「最低1つ条件を満たす要素があるか」どうかを判定します。
【any?メソッドの具体例】
numbers = [1, 2, 8, 23]
if numbers.any?{|item| item%2==0 }
puts “偶数は最低でも1つは含まれています。”
end
【結果】
偶数は最低でも1つは含まれています。
配列numbersには、偶数が最低でも1つはあります。よってany?メソッドはtrueを返します。
mapメソッド
mapメソッド(別名collectメソッド)は、ブロックの戻り値を集めた新しい配列を作る時に使われるメソッドです。頻繁に使うメソッドなので覚えておきましょう。次の例では、fruitesという配列の要素をupcaseメソッドで大文字に変えた配列を作ります。
【mapメソッドの具体例】
fruites = [“apple”, “melon”, “grape”]
big_fruites = fruites.map{
|item| item.upcase
}
puts big_fruites
【結果】
[“APPLE”, “MELON”,”GRAPE”]
今回紹介するRuby 配列に関するメソッドは以上です。他にも、Ruby 配列にはたくさんのメソッドがあります。調べてみると、より一層、Ruby 配列への理解が深まるでしょう。
Ruby ハッシュ(連想配列)について
最後に、ハッシュ(連想配列)というものを紹介します。
ハッシュ(連想配列)と、上記で紹介してきた配列の違いは、値を入れたり出したりするときに、添字の代わりにキーと呼ばれるものを使うことです。
ハッシュ(連想配列)の要素は、キーと値のペアからなります。ハッシュ(連想配列)を作成するには、{と}の間に「キー=>値」をカンマ区切りで並べます。
【ハッシュ(連想配列)の例】
baseball = {
“pitcher” => “田中”,
“catcher” => “城島”,
“coach” => “金本”,
}
puts baseball[“coach”]
【結果】
金本
添字0に該当するのが、”pitcher”というキー、添字1に該当するのが”catcher”というキー・・・という風に考えれば難しくはないでしょう。
では、ハッシュ(連想配列)でのeachメソッドの使い方を最後に紹介します。
ハッシュ(連想配列)でのeachメソッドの使い方
ハッシュ(連想配列)の要素(キーと値)を取り出すには、先ほどと同じくeachメソッドを使います。キーと値の2つがeachメソッドのブロックパラメータに入ります。
【ハッシュ(連想配列)でeachメソッドを使う】
books = {
“こころ” => 300,
“坊ちゃん” => 380,
“明暗” => 700,
}
books.each do |key, val|
puts “#{key}、#{val}円”
end
【結果】
こころ、300円
坊ちゃん、380円
明暗、700円
※#{}は変数展開といいます。
#{}の中に式や変数を入れると、その式や変数が文字列の中に展開されます。
【変数展開の例】
name = “udemy”
puts “私は#{udemy}で学習します。”
【結果】
私はudemyで学習します。
ハッシュ(連想配列)についての説明はこれで終わりです。
いかがでしたか?Ruby 配列についての説明はこれで終わりです。以上で扱った事柄は配列の基本なので、必ず理解しておきましょう。
プログラミング言語Rubyを学んだ後は、Railsというフレームワークを使ってぜひWEB開発にチャレンジしてみてください。
はじめてのRuby on Rails入門-RubyとRailsを基礎から学びウェブアプリケーションをネットに公開しよう
Rails7対応。汎用性が高くPythonやPHPと同様に人気のある Rubyを使ってWebアプリケーション開発に挑戦しよう。基礎からAWSでの開発環境構築、Renderを使ってインターネットに公開するまでを体系的に学べる
\無料でプレビューをチェック!/
講座を見てみる評価:★★★★★
他の言語と比べて環境構築やバージョン管理などで躓くことが多く苦手意識のあるRubyですが、無事完了出来て良かったです。アプリ開発のレクチャーでもコードの記述ミスに何度か引っかかりました。個人的にはRenderを使って、ウェブサービス公開を体験できたのが良かったです。ありがとうございました。
評価:★★★★★
HTML・CSS・JavaScript・Ruby等Progateで一通りやってから受講しましたが、一度はつまづいてしまったRailsを使った学習をとりあえず最後までやることが出来ました。動画の最後にもありましたが完成したアプリを自分なりに編集したりして学習を続けたいと思います。
最新情報・キャンペーン情報発信中