◆当サイトで人気のプログラミング教室のおすすめランキングはこちら!
プログラミングは独学では非効率で、時間を無駄にするリスクがあります。効率的なカリキュラムで学べるスクールを受講しましょう。

WEBCAMP【マンツーマンサポート】1ヶ月短期集中でプログラミングを学ぶスクール
1ヶ月通い放題・メンター常駐の教室環境でプログラミングを学びたい方!
TechAcademyオンラインで開講しているプログラミングスクール
オンラインでどこでも学べる!/教室に行くのが忙しい人でも安心!
Tech Camp教養としてのITスキルを学べるスクール
Webデザイン/AI(人工知能)/IOS/Androidアプリ制作/VRを学びたい方!
WEBCAMP PRO転職保証付き!エンジニアとして転職したい人におすすめ!
未経験からプロのエンジニアへ3ヶ月で転職する為のスクールです!
1月生募集中!当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
11月生は満員となっております。12月生募集に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!
Rubyの配列は、基本的にArrayオブジェクトで表現されています。

今回はそのArrayオブジェクトについて実例も交えながら丁寧に解説していきます。

Ruby配列について解説

Rubyの配列は、Arrayオブジェクトで表現されています。

おそらく、この記事を読まれている多くの人がすでに目にしており、無意識に使っているものです。

特に、forやeachのような繰り返し処理を学習した人であれば、配列を使わない学習というのは、片手落ちとも言えるでしょう。

例えば、以下のようなプログラムです。

fruits = ["apple", "orange", "banana"]

for fr in fruits
  puts fr
end

このプログラムは、forの解説記事「【Ruby入門説明書】繰り返し、forについて解説から」抜き出してきたものです。この中の、変数fruitsが、Arrayオブジェクトなのです。

ここからは、このArrayオブジェクト(配列)について、詳しく解説していきます。

配列とは

Rubyの配列の詳細に入る前に、配列について解説します。

プログラムというのは、データを処理するのが主な仕事です。

そして、そのデータというのは、ほとんどの場合「決まったフォーマットで集められた」数値や文字の固まりです。

この、データの固まりを、プログラムでは「配列」という形で表して扱います。

イメージとしては、横に並べた変数をひとかたまりとして扱いやすくしたようなものです。

具体的にどうまとめるのか、果物の名前を表示するプログラムを使って紹介します。

まず、3つの果物の名前を表示するプログラムを変数だけ使って実現しましょう。

# 3つの変数を宣言する
fruits1 = "apple"
fruits2 = "orange"
fruits3 = "banana"

# 表示する
puts(fruits1)
puts(fruits2)
puts(fruits3)

(結果)

apple
orange
banana

正しく表示されました。

しかし、この果物が100種類に増えたら、どうすれば良いでしょうか?

名前を定義するところはまだしも、表示するのにputs()を100個も並べるのでしょうか?

仮にそうした(puts()を100個)として、その後printに変更することになったら、どうすれば良いでしょうか?

これらの問題を解決するため、果物の名前が格納された変数(fruits1,fruits2,fruits3)を連結して配列にするわけです。

fruits = ["apple", "orange", "banana"]

for fr in fruits
  puts fr
end

そうすれば、forなどの繰り返しでまとめて処理することができ、前述した数の問題やメソッド変更の問題にたやすく対処することができるでしょう。

本格的なプログラムでは数千、数万のデータを扱うことも珍しくありません。

しかし、どれだけ巨大になっても、この方法であれば、なんの問題もありません。putsがprintになったとしても、1行変更するだけです。

また、Rubyの「配列」であるArrayオブジェクトは、数あるプログラムの中でも、機能が充実しており、とても扱いやすいのが特徴です。変更や追加に強いだけではありませんので、お楽しみにしておいてください。

[]演算子(メソッド)

配列にしたため、個別の要素にアクセスする方法が別途必要になります。

そのために使用するのが、[]演算子(メソッド)です。

実際に果物の名前の配列(fruits )の各要素にアクセスしてみましょう。

fruits = ["apple", "orange", "banana"]

# 表示する
puts(fruits[0])
puts(fruits[1])
puts(fruits[2])

(結果)

apple
orange
banana

このように、配列の各要素には0からインデックスが付けられていますので、[]演算子(メソッド)を使って、アクセスすることが可能になっています。
※Rubyの場合、[]は演算子ではなくメソッドです

“未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー

Rubyの配列(Array)

配列の説明が終わりましたので、ここから本格的にRubyの配列(Array)についての説明です。

Arrayオブジェクトは、他のプログラム言語でいうところの配列を実現するオブジェクトですが。そのため、いろいろなプログラム言語の配列が持つ便利な機能を併せ持ったものになっています。

そんなArrayの特徴的な特徴を3つ紹介します。

1. 1つの配列の中に、いろいろな型のデータを格納できる

多くのプログラム言語では、整数であれば整数だけ、文字列であれば文字列だけ、など特定の種類のデータだけを格納できるのが一般的です。

しかし、Arrayオブジェクトには、整数でも小数でも文字列でも、どんな種類のデータなのかは関係なく格納することが可能になっているのです。

2. 空(要素数0)の配列を宣言したあとに、要素を追加・削除できる

いくつかのプログラム言語では、配列を宣言するときに1つ以上の要素が必要で、その後の変更ができない、もしくは手間のかかるものが少なくありません。

しかし、Arrayであれば、要素のない配列を事前に作っておいて、その後の処理の中で要素を追加したり、削除したりできます。

3. 配列内を検索、並べ替えできる

多くのプログラムでは、配列はただの変数の塊ですので、データというだけで代入するくらいしか機能はありません。そのため、検索するのであれば、改めてプログラムを作る必要があります。

しかし、Arrayオブジェクトには様々なメソッドがすでに存在していますので、検索や並べ替え、重複削除など配列操作については、改めてプログラムを作る必要がありません。

このあとは、上記の2つめと3つめの特徴について、リファレンス形式で説明していきましょう。

配列での初期化

Arrayの初期化というのは、宣言してプログラムの中でArrayを使えるようにすることです。このとき、前述のように空の配列を作っても良いですし、最初からデータを格納しておいたり、決められた数の空箱の配列を作ったりすることができます。

[]での初期化

本記事で最初に紹介したプログラムでも使っている、もっとも一般的な初期化の方法です。

以下のように使用します。

配列名 = [要素,要素,要素,要素,要素]

前述のとおり、要素がない場合は、要素数0の空の配列になります。また、数値や文字列が混在していてもかまいません。

newメソッドで初期化

専門的に描くと、「Arrayクラスからインスタンスを作る」方法です。

newメソッドを使うことで、任意の数の空要素の配列を作ることができます。

じつは、他の多くのプログラム言語で、配列の宣言がこの形になっています。(配列の名前と数だけ宣言してデータはあとから格納する)

使い方は以下のようにします。

配列名 = Array.new(要素数)

これで、要素数の空の要素を持った配列ができます。

配列の要素数が決まっており、その後にデータを格納する場合は、この方法を使ったほうが余計なメソッド(あとで紹介する要素を追加するメソッド)を使う必要がないので、プログラムコードがすっきりするかもしれません。

3つの空の要素を持つ配列arrの宣言は、以下のようになります。

arr = Array.new(3)

print(arr)

(結果)

[nil, nil, nil]

※nilは空であることを表すオブジェクトです

コツコツ独学×スクールで実践。未経験からエンジニアに転職!【WebCamp卒業生インタビュー】

Arrayオブジェクトのメソッド

配列の初期化の次は、いよいよ配列の操作です。

配列を操作するArrayのメソッドは多数ありますので、その中でもよく使うものや特徴的なものを抜粋して紹介しましょう。

要素の参照

すでに説明していますが、配列の要素を参照するには、[]メソッドを使用します。

複数の要素を参照することもできますので、プログラムを使って確認しておきましょう。

alphabets = ["a", "b", "c", "d", "e", "f"]

print("alphabets[1] : 前から2つめの要素 ---> ", alphabets[1], "\n")
print("alphabets[-2]: 後ろから2つめの要素 -> ", alphabets[-2], "\n")
print("alphabets[1, 2] : 前から2つめからの要素2つ ---> ", alphabets[1, 2], "\n")
print("alphabets[-2, 2]: 後ろから2つめからの要素2つ -> ", alphabets[-2, 2], "\n")

(結果)

alphabets[1] : 前から2つめの要素 ---> b
alphabets[-2]: 後ろから2つめの要素 -> e
alphabets[1, 2] : 前から2つめからの要素2つ ---> ["b", "c"]
alphabets[-2, 2]: 後ろから2つめからの要素2つ -> ["e", "f"]

なお、範囲指定する場合は、[位置,数]と指定します。

要素の置換(代入)

任意の要素を書き換えるには、[]=メソッドを利用します。

要素の指定方法によって、複数の要素をまとめて書き換えるなど、自在に変更できます。

具体的な例を見て確認しましょう。

alphabets = ["a", "b", "c", "d", "e", "f"]

alphabets[1] = 2
print("alphabets[1] : 前から2つめの要素を変更 -------> ", alphabets, "\n")

alphabets[-2] = -2
print("alphabets[-2]: 後ろから2つめの要素 -----------> ", alphabets, "\n")

alphabets[1, 2] = [5, 6]
print("alphabets[1, 2] : 前から2つめからの要素2つ ---> ", alphabets, "\n")

alphabets[-2, 2] = [7, 8]
print("alphabets[-2, 2]: 後ろから2つめからの要素2つ -> ", alphabets, "\n")

(結果)

alphabets[1] : 前から2つめの要素を変更 -------> ["a", 2, "c", "d", "e", "f"]
alphabets[-2]: 後ろから2つめの要素 -----------> ["a", 2, "c", "d", -2, "f"]
alphabets[1, 2] : 前から2つめからの要素2つ ---> ["a", 5, 6, "d", -2, "f"]
alphabets[-2, 2]: 後ろから2つめからの要素2つ -> ["a", 5, 6, "d", 7, 8]

参照と同じく、代入(置換)についても、範囲指定する場合は、[位置,数]と指定します。

配列の比較

配列同士を比較するというのは、実際の処理でそれほど多くありませんが、Rubyの配列の特徴的な機能の1つです。

他のプログラム言語では面倒な配列の比較も、Rubyでは==メソッドを使って直感的に実装できます。

arr1 = ["a", "b", "c", "d", "e", "f"]

arr2 = ["a", "b", "c", "d", "e", "f"]

if arr1 == arr2 then
  print("arr1とarr2は同じです")
else
  print("arr1とarr2は違います")
end

(結果)

arr1とarr2は同じです

要素の追加

要素の追加を行うメソッドは、以下の3種類です。

なお、これらのメソッドは、元のArrayオブジェクトの内容を書き換えますので、戻り値と元の配列は同じものになります。

メソッド 動作
push 配列の末尾に要素を追加する
<< 配列の末尾に要素を追加する
unshift 配列の先頭に要素を追加する

pushメソッドと<<メソッドは同じものですので、プログラムの可読性を考慮して使い分ければ良いでしょう。

実際にプログラムコードを動かしてみましょう。

fruits = ["apple", "orange", "banana"]

print(fruits, "\n")
print('push("peach") ---------> ', fruits.push("peach"), "\n")
print('<< "melon" ------------> ', fruits << "melon", "\n")
print('unshift("strawberry") -> ', fruits.unshift("strawberry"), "\n")

(結果)

["apple", "orange", "banana"]
push("peach") ---------> ["apple", "orange", "banana", "peach"]
<< "melon" ------------> ["apple", "orange", "banana", "peach", "melon"]
unshift("strawberry") -> ["strawberry", "apple", "orange", "banana", "peach", "melon"]

要素の削除

要素の削除については、以下の2種類のメソッドがあります。

これらのメソッドは元の配列を操作してしまいますので、注意が必要です。

メソッド 動作
pop 配列の末尾から任意の数の要素を削除して、削除した要素を返す
shift 配列の先頭の要素を削除して返す

削除についても実際にプログラムコードを作って動かしてみましょう。

fruits = ["strawberry", "apple", "orange", "banana", "peach", "melon"]

print(fruits, "\n")
print('pop(2) ----> ', fruits.pop(2), "\n")
print(fruits, "\n")
print('shift() ---> ', fruits.shift(), "\n")
print(fruits, "\n")

(結果)

["strawberry", "apple", "orange", "banana", "peach", "melon"]
pop(2) ----> ["peach", "melon"]
["strawberry", "apple", "orange", "banana"]
shift() ---> strawberry
["apple", "orange", "banana"]

要素の結合

最後に、配列同士をつなげるメソッドを紹介しましょう。

他のプログラム言語では、結合する配列の長さ分の配列を新たに宣言し、そこにコピーするようなプログラムを作らなければならないようなものもあります。

しかしRubyの場合は、+メソッドを使って直感的に実装できるようになっているのです。

alphabets = ["a", "b", "c", "d", "e", "f"]
numbers = [1, 2, 3, 4, 5]

arr = alphabets + numbers
print(arr)

(結果)

["a", "b", "c", "d", "e", "f", 1, 2, 3, 4, 5]

時間や場所にとらわれず自由に働くために必要なスキルとは?【WebCamp卒業生インタビュー】

まとめ

Rubyの配列について説明しました。

配列を使いこなすことができれば、複雑な処理を効率よくこなすことができます。

習うより慣れろという言葉もありますので、ぜひ紹介したメソッドを使っていろいろなプログラムを作っていってください。


・配列は変数をひとまとまりとして扱えるようにしたもの。[]演算子で要素のインデックスを指定して要素にアクセスできる
・初期化することで、要素を持たせることも、空の要素を持たせることも、要素なしもできる
・インデックスを指定することで、要素を参照したり、代入したりできる。
・マイナスのインデックスを指定することで、後ろから数えた要素にアクセスできる
・複数の要素をまとめて参照したり書き換えたりできる。
・配列の先頭や後ろに要素を追加できる
・配列の先頭や後ろの要素の削除できる
・直感的に比較や結合ができる

WebCampOnline プログラミングコースについて

WebCampでは、「どこでも学べる」オンラインコースを開講しています。

初心者・未経験の方でもわずか1ヶ月でプログラミングの基礎を学び、アプリケーション開発をすることができます。

WebCampOnlineが選ばれる3つの理由

1.学習の仕方がわからなくても安心!初心者に寄り添った学習カリキュラム

これから学習を始める初心者の方や、独学で挫折してしまった方に向けて、アプリケーション作成をゴールとする一気通貫したカリキュラムを提供しています。2500名を輩出しているWebCampだからこその教室でのリアルな受講生の声を反映し、オンラインコースでも初心者に寄り添った学習体験をご提供いたします。

2.つまずいたらすぐ解決!プロのエンジニアに質問し放題

プログラミング学習で挫折する理由の多くは「つまずいた時に聞ける人がいない」ことです。オンラインコースでは、現役エンジニアやプロ講師に、すぐにチャットでの質問が可能です。つまずきをすぐに解消できるので、挫折せずに学習を継続することができます

3.1ヶ月間で終わらなくても大丈夫!カリキュラムは"卒業後"も"無料"で利用可能

受講したいけど、仕事が急に忙しくなるかもしれないから受講するか迷っている・・・そんな方も多いのではないでしょうか?ご安心ください。カリキュラムは期間終了後も「無料」で使うことができます。また、しっかり学習時間を確保した方も、振り返って学習することでプログラミングスキルがご自身に馴染んできます。

▼まずは無料でWebデザインのカリキュラムを体験しよう!

【インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!

ブラジルから帰国し技術をつけようとRubyエンジニアを目指してWebCampでRubyを学び、見事Webエンジニアとして転職を果たした田中さんにお話を伺いました。

Rubyの学習がしたい。基礎をしっかりと理解したい

転職のサポートがほしい

と考えている方はぜひお読み下さい。

【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!

おすすめの記事